Patches from Debian
authorWouter Verhelst <w@uter.be>
Mon, 10 Aug 2009 08:09:21 +0000 (10:09 +0200)
committerWouter Verhelst <w@uter.be>
Fri, 14 Aug 2009 08:44:02 +0000 (10:44 +0200)
nbd-server.c
simple_test

index 58c5cc5..4d01e37 100644 (file)
@@ -303,10 +303,14 @@ inline void readit(int f, void *buf, size_t len) {
        ssize_t res;
        while (len > 0) {
                DEBUG("*");
        ssize_t res;
        while (len > 0) {
                DEBUG("*");
-               if ((res = read(f, buf, len)) <= 0)
-                       err("Read failed: %m");
-               len -= res;
-               buf += res;
+               if ((res = read(f, buf, len)) <= 0) {
+                       if(errno != EAGAIN) {
+                               err("Read failed: %m");
+                       }
+               } else {
+                       len -= res;
+                       buf += res;
+               }
        }
 }
 
        }
 }
 
@@ -577,7 +581,7 @@ GArray* parse_cfile(gchar* f, GError** e) {
        retval = g_array_new(FALSE, TRUE, sizeof(SERVER));
        if(!g_key_file_load_from_file(cfile, f, G_KEY_FILE_KEEP_COMMENTS |
                        G_KEY_FILE_KEEP_TRANSLATIONS, &err)) {
        retval = g_array_new(FALSE, TRUE, sizeof(SERVER));
        if(!g_key_file_load_from_file(cfile, f, G_KEY_FILE_KEEP_COMMENTS |
                        G_KEY_FILE_KEEP_TRANSLATIONS, &err)) {
-               g_set_error(e, errdomain, CFILE_NOTFOUND, "Could not open config file.");
+               g_set_error(e, errdomain, CFILE_NOTFOUND, "Could not open config file.", f);
                g_key_file_free(cfile);
                return retval;
        }
                g_key_file_free(cfile);
                return retval;
        }
@@ -1208,6 +1212,7 @@ void setupexport(CLIENT* client) {
        for(i=0; ; i++) {
                FILE_INFO fi;
                gchar *tmpname;
        for(i=0; ; i++) {
                FILE_INFO fi;
                gchar *tmpname;
+               gchar* error_string;
                mode_t mode = (client->server->flags & F_READONLY) ? O_RDONLY : O_RDWR;
 
                if(multifile) {
                mode_t mode = (client->server->flags & F_READONLY) ? O_RDONLY : O_RDWR;
 
                if(multifile) {
@@ -1232,7 +1237,10 @@ void setupexport(CLIENT* client) {
                if(fi.fhandle == -1) {
                        if(multifile && i>0)
                                break;
                if(fi.fhandle == -1) {
                        if(multifile && i>0)
                                break;
-                       err("Could not open exported file: %m");
+                       error_string=g_strdup_printf(
+                               "Could not open exported file %s: %%m",
+                               tmpname);
+                       err(error_string);
                }
                fi.startoff = laststartoff + lastsize;
                g_array_append_val(client->export, fi);
                }
                fi.startoff = laststartoff + lastsize;
                g_array_append_val(client->export, fi);
index ddaa86e..cb176bf 100755 (executable)
@@ -16,7 +16,7 @@ case $1 in
                # -DNODAEMON, which I sometimes do for testing and debugging.
                PID=$!
                sleep 1
                # -DNODAEMON, which I sometimes do for testing and debugging.
                PID=$!
                sleep 1
-               ./nbd-tester-client localhost 11111
+               ./nbd-tester-client 127.0.0.1 11111
                retval=$?
        ;;
 
                retval=$?
        ;;
 
@@ -31,7 +31,7 @@ EOF
                ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
                PID=$!
                sleep 1
                ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
                PID=$!
                sleep 1
-               ./nbd-tester-client localhost 11111
+               ./nbd-tester-client 127.0.0.1 11111
                retval=$?
        ;;
        */cfgmulti)
                retval=$?
        ;;
        */cfgmulti)