From 91c882bae2a824562f9fdbb1c117e6448edf4c90 Mon Sep 17 00:00:00 2001 From: Johann Latocha Date: Wed, 11 Apr 2012 23:13:59 +0200 Subject: [SERVER] tcp-cork --- src/server/net.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/server/net.c') diff --git a/src/server/net.c b/src/server/net.c index 97a0619..7fe5a16 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "server.h" #include "utils.h" @@ -40,6 +41,9 @@ void *dnbd3_handle_query(void *dnbd3_client) dnbd3_request_t request; dnbd3_reply_t reply; + int cork = 1; + int uncork = 0; + dnbd3_image_t *image = NULL; int image_file, image_cache = -1; @@ -105,6 +109,7 @@ void *dnbd3_handle_query(void *dnbd3_client) if (image_file < 0) goto error; + setsockopt(client->sock, SOL_TCP, TCP_CORK, &cork, sizeof(cork)); reply.size = request.size; send(client->sock, (char *) &reply, sizeof(dnbd3_reply_t), 0); @@ -114,6 +119,7 @@ void *dnbd3_handle_query(void *dnbd3_client) if (sendfile(client->sock, image_file, (off_t *) &request.offset, request.size) < 0) printf("ERROR: Sendfile failed (sock)\n"); + setsockopt(client->sock, SOL_TCP, TCP_CORK, &uncork, sizeof(uncork)); break; } @@ -178,6 +184,7 @@ void *dnbd3_handle_query(void *dnbd3_client) if (sendfile(client->sock, image_cache, (off_t *) &request.offset, request.size) < 0) printf("ERROR: Sendfile failed (net)\n"); + setsockopt(client->sock, SOL_TCP, TCP_CORK, &uncork, sizeof(uncork)); break; default: -- cgit v1.2.3-55-g7522