summaryrefslogtreecommitdiffstats
path: root/src/kernel/net.c
diff options
context:
space:
mode:
authorJohann Latocha2012-02-22 01:25:57 +0100
committerJohann Latocha2012-02-22 01:25:57 +0100
commitb7098dd3b66269b82a2253cbd19555693cbfd3b9 (patch)
tree624b20111d7ac632acead73a1e968ab954d8ae85 /src/kernel/net.c
parent[ALL] Send proper rid (diff)
downloaddnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.tar.gz
dnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.tar.xz
dnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.zip
[SERVER] Segfault on conf reload (hopefully!) fixed
Diffstat (limited to 'src/kernel/net.c')
-rw-r--r--src/kernel/net.c28
1 files changed, 14 insertions, 14 deletions
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;