r2882: fix mistake that caused a failure on a bind to a dynamic tcp port
authorStefan Metzmacher <metze@samba.org>
Sat, 9 Oct 2004 22:34:18 +0000 (22:34 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:59:42 +0000 (12:59 -0500)
metze
(This used to be commit 9fb1b0e2d21e1724723360d062a4a64f185fc6e3)

source4/smbd/service.c

index 1f6033c238dc23ca7229aa6a8fd4488d2a75a088..5aae84b2c94ff3b33dc352eed9d78972634334b2 100644 (file)
@@ -97,18 +97,7 @@ struct server_socket *service_setup_socket(struct server_service *service,
        struct fd_event fde;
        int i;
 
-       if (*port == 0) {
-               for (i=SERVER_TCP_LOW_PORT;i<= SERVER_TCP_HIGH_PORT;i++) {
-                       status = socket_create("ipv4", SOCKET_TYPE_STREAM, &socket_ctx, 0);
-                       if (NT_STATUS_IS_OK(status)) {
-                               *port = i;
-                               break;
-                       }
-               }
-       } else {
-               status = socket_create("ipv4", SOCKET_TYPE_STREAM, &socket_ctx, 0);
-       }
-
+       status = socket_create("ipv4", SOCKET_TYPE_STREAM, &socket_ctx, 0);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("Failed to open socket on %s:%u - %s\n",
                        sock_addr, *port, nt_errstr(status)));
@@ -135,7 +124,18 @@ struct server_socket *service_setup_socket(struct server_service *service,
 
        /* TODO: set socket ACL's here when they're implemented */
 
-       status = socket_listen(socket_ctx, sock_addr, *port, SERVER_LISTEN_BACKLOG, 0);
+       if (*port == 0) {
+               for (i=SERVER_TCP_LOW_PORT;i<= SERVER_TCP_HIGH_PORT;i++) {
+                       status = socket_listen(socket_ctx, sock_addr, i, SERVER_LISTEN_BACKLOG, 0);
+                       if (NT_STATUS_IS_OK(status)) {
+                               *port = i;
+                               break;
+                       }
+               }
+       } else {
+               status = socket_listen(socket_ctx, sock_addr, *port, SERVER_LISTEN_BACKLOG, 0);
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("Failed to listen on %s:%u - %s\n",
                        sock_addr, *port, nt_errstr(status)));