nbd-server: fix modernsock descriptor initialization and use
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 21 Jun 2012 21:38:40 +0000 (01:38 +0400)
committerWouter Verhelst <w@uter.be>
Sat, 23 Jun 2012 23:38:34 +0000 (01:38 +0200)
Change the value for undefined "modern handler" descriptor from 0 to -1
because any value greater or equal to 0 can be a valid file descriptor.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
nbd-server.c

index 2e008d8..53e7b18 100644 (file)
@@ -185,7 +185,7 @@ char default_authname[] = SYSCONFDIR "/nbd-server/allow"; /**< default name of a
 #define NEG_OLD                (1 << 1)
 #define NEG_MODERN     (1 << 2)
 
-int modernsock=0;        /**< Socket for the modern handler. Not used
+int modernsock=-1;       /**< Socket for the modern handler. Not used
                               if a client was only specified on the
                               command line; only port used if
                               oldstyle is set to false (and then the
@@ -2189,7 +2189,7 @@ int serveloop(GArray* servers) {
                        max=sock>max?sock:max;
                }
        }
-       if(modernsock) {
+       if(modernsock >= 0) {
                FD_SET(modernsock, &mset);
                max=modernsock>max?modernsock:max;
        }
@@ -2203,7 +2203,7 @@ int serveloop(GArray* servers) {
                        SERVER* serve=NULL;
 
                        DEBUG("accept, ");
-                       if(FD_ISSET(modernsock, &rset)) {
+                       if(modernsock >= 0 && FD_ISSET(modernsock, &rset)) {
                                if((net=accept(modernsock, (struct sockaddr *) &addrin, &addrinlen)) < 0)
                                        err("accept: %m");
                                client = negotiate(net, NULL, servers, NEG_INIT | NEG_MODERN);