From 965c7ff9a9d64bb53dd7a808f3193b36ab7b014d Mon Sep 17 00:00:00 2001 From: sr Date: Sat, 25 Aug 2012 16:14:20 +0200 Subject: [*] 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 --- src/server/net.c | 7 +++++-- src/server/server.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/server') 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 diff --git a/src/server/server.c b/src/server/server.c index 0a206d1..b2a36a5 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -173,6 +173,7 @@ int main(int argc, char* argv[]) pthread_spin_init(&_spinlock, PTHREAD_PROCESS_PRIVATE); initmemlog(); + memlogf("DNBD3 server starting.... Machine type: " ENDIAN_MODE); // load config file dnbd3_load_config(_config_file_name); -- cgit v1.2.3-55-g7522