From b7098dd3b66269b82a2253cbd19555693cbfd3b9 Mon Sep 17 00:00:00 2001 From: Johann Latocha Date: Wed, 22 Feb 2012 01:25:57 +0100 Subject: [SERVER] Segfault on conf reload (hopefully!) fixed --- src/kernel/net.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/kernel/net.c') diff --git a/src/kernel/net.c b/src/kernel/net.c index baa2966..bdab8c2 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -219,19 +219,6 @@ int dnbd3_net_discover(void *data) continue; } - // panic mode, take first responding server - if (dev->panic) - { - printk("WARN: Panic mode, taking server %s\n", current_server); - sock_release(sock); - kfree(buf); - dev->thread_discover = NULL; - dnbd3_net_disconnect(dev); - strcpy(dev->cur_server.host, current_server); - dnbd3_net_connect(dev); - return 0; - } - // Request filesize dnbd3_request.cmd = CMD_GET_SIZE; dnbd3_request.vid = dev->vid; @@ -253,6 +240,19 @@ int dnbd3_net_discover(void *data) if (kernel_recvmsg(sock, &msg, &iov, 1, dnbd3_reply.size, msg.msg_flags) <= 0) goto error; + // panic mode, take first responding server + if (dev->panic) + { + printk("WARN: Panic mode, taking server %s\n", current_server); + sock_release(sock); + kfree(buf); + dev->thread_discover = NULL; + dnbd3_net_disconnect(dev); + strcpy(dev->cur_server.host, current_server); + dnbd3_net_connect(dev); + return 0; + } + do_gettimeofday(&start); // start rtt measurement // Request block @@ -295,7 +295,7 @@ int dnbd3_net_discover(void *data) continue; error: - printk("ERROR: kernel_sendmsg or kernel_recvmsg (discover)\n"); + printk("ERROR: Send/Receive failed, host %s:%s (discover)\n", current_server, dev->cur_server.port); sock_release(sock); sock = NULL; continue; -- cgit v1.2.3-55-g7522