summaryrefslogtreecommitdiffstats
path: root/src/server/net.c
diff options
context:
space:
mode:
authorsr2012-08-25 16:14:20 +0200
committersr2012-08-25 16:14:20 +0200
commit965c7ff9a9d64bb53dd7a808f3193b36ab7b014d (patch)
tree242cc32bf8f8dace2195a91ab286af970fc0d7a5 /src/server/net.c
parent... (diff)
downloaddnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.tar.gz
dnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.tar.xz
dnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.zip
[*] Fix bug in serializer_get_*
[CLIENT/KERNEL] Change ioctl to handle volume names instead if vids [*] Make protocol endian safe [CLIENT] Display ioctl errorcode on failure
Diffstat (limited to 'src/server/net.c')
-rw-r--r--src/server/net.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/net.c b/src/server/net.c
index 9ae168a..bf680a3 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -42,7 +42,7 @@
static char recv_request_header(int sock, dnbd3_request_t *request)
{
// Read request heade from socket
- if (recv(sock, request, sizeof(dnbd3_request_t), MSG_WAITALL) != sizeof(dnbd3_request_t))
+ if (recv(sock, request, sizeof(*request), MSG_WAITALL) != sizeof(*request))
{
printf("[DEBUG] Error receiving request: Could not read message header\n");
return 0;
@@ -152,6 +152,7 @@ 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);
@@ -174,7 +175,7 @@ void *dnbd3_handle_query(void *dnbd3_client)
image = dnbd3_get_image(image_name, rid, 0);
if (!image)
{
- printf("[DEBUG] Client requested non-existent image '%s'\n", image_name);
+ printf("[DEBUG] Client requested non-existent image '%s' (rid:%d, protocol:%d)\n", image_name, (int)rid, (int)client_version);
}
else
{
@@ -384,6 +385,8 @@ int dnbd3_setup_socket()
memlogf("ERROR: Socket setup failure\n");
return -1;
}
+ const int opt = 1;
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET; // IPv4