From e301e1e3b8eae1c3e4479fcaac3464dcb1923bc7 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Mon, 2 Aug 2021 14:43:54 +0300 Subject: [PATCH] Avoid memory copying during send in TLS stream At least at this point doing memory copying is not required. Probably it was a workaround for some problem in the earlier days of DoH, at this point it appears to be a waste of CPU cycles. --- lib/isc/netmgr/tlsstream.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/isc/netmgr/tlsstream.c b/lib/isc/netmgr/tlsstream.c index f203a94919..f5e65e930d 100644 --- a/lib/isc/netmgr/tlsstream.c +++ b/lib/isc/netmgr/tlsstream.c @@ -676,7 +676,6 @@ isc__nm_async_tlssend(isc__networker_t *worker, isc__netievent_t *ev0) { tls_do_bio(sock, NULL, req, false); done: - isc_mem_free(sock->mgr->mctx, req->uvbuf.base); isc__nm_uvreq_put(&req, sock); return; } @@ -704,9 +703,7 @@ isc__nm_tls_send(isc_nmhandle_t *handle, const isc_region_t *region, isc_nmhandle_attach(handle, &uvreq->handle); uvreq->cb.send = cb; uvreq->cbarg = cbarg; - - uvreq->uvbuf.base = isc_mem_allocate(sock->mgr->mctx, region->length); - memmove(uvreq->uvbuf.base, region->base, region->length); + uvreq->uvbuf.base = (char *)region->base; uvreq->uvbuf.len = region->length; /*