From cbf9d922fdbe19e65e8710dd72d6832e35144fc5 Mon Sep 17 00:00:00 2001 From: sr Date: Sat, 25 Aug 2012 18:59:12 +0200 Subject: [KERNEL] Make it possible to receive push messages by the server --- src/server/net.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/server/net.c') diff --git a/src/server/net.c b/src/server/net.c index bf680a3..a60b739 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -41,10 +41,11 @@ static char recv_request_header(int sock, dnbd3_request_t *request) { - // Read request heade from socket - if (recv(sock, request, sizeof(*request), MSG_WAITALL) != sizeof(*request)) + int ret; + // Read request header from socket + if ((ret = recv(sock, request, sizeof(*request), MSG_WAITALL)) != sizeof(*request)) { - printf("[DEBUG] Error receiving request: Could not read message header\n"); + printf("[DEBUG] Error receiving request: Could not read message header (%d)\n", ret); return 0; } // Make sure all bytes are in the right order (endianness) @@ -55,7 +56,7 @@ static char recv_request_header(int sock, dnbd3_request_t *request) return 0; } // Payload sanity check - if (request->size > MAX_PAYLOAD) + if (request->cmd != CMD_GET_BLOCK && request->size > MAX_PAYLOAD) { memlogf("[WARNING] Client tries to send a packet of type %d with %d bytes payload. Dropping client.", (int)request->cmd, (int)request->size); return 0; @@ -152,7 +153,6 @@ void *dnbd3_handle_query(void *dnbd3_client) } else { - printf("Payload len: %d\n", (int)request.size); if (recv_request_payload(client->sock, request.size, &payload)) { client_version = serializer_get_uint16(&payload); @@ -179,6 +179,7 @@ void *dnbd3_handle_query(void *dnbd3_client) } else { + serializer_reset_write(&payload); serializer_put_uint16(&payload, PROTOCOL_VERSION); serializer_put_string(&payload, image->low_name); serializer_put_uint16(&payload, image->rid); -- cgit v1.2.3-55-g7522