From: Stefan Metzmacher Date: Thu, 3 Apr 2025 13:15:33 +0000 (+0200) Subject: s3:smbd: let open_sockets_smbd() use smbd_open_socket_for_ip() X-Git-Tag: tevent-0.17.0~297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b47f2adf2a1a7c131341a6f51adc5702fd730dd;p=thirdparty%2Fsamba.git s3:smbd: let open_sockets_smbd() use smbd_open_socket_for_ip() Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 586d0463c06..473002221dc 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1141,6 +1141,11 @@ static bool smbd_open_one_socket(struct smbd_parent_context *parent, return true; } +static size_t smbd_open_socket_for_ip(struct smbd_parent_context *parent, + struct tevent_context *ev_ctx, + const char *smb_ports, + const struct sockaddr_storage *ifss); + /**************************************************************************** Open the socket communication. ****************************************************************************/ @@ -1198,6 +1203,8 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, for(i = 0; i < num_interfaces; i++) { const struct sockaddr_storage *ifss = iface_n_sockaddr_storage(i); + size_t num_ok; + if (ifss == NULL) { DEBUG(0,("open_sockets_smbd: " "interface %d has NULL IP address !\n", @@ -1205,15 +1212,12 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, continue; } - for (j = 0; ports && ports[j]; j++) { - unsigned port = atoi(ports[j]); - - if (!smbd_open_one_socket(parent, - ev_ctx, - ifss, - port)) { - return false; - } + num_ok = smbd_open_socket_for_ip(parent, + ev_ctx, + smb_ports, + ifss); + if (num_ok == 0) { + return false; } } } else { @@ -1229,6 +1233,7 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, for (i = 0; i < ARRAY_SIZE(sock_addrs); i++) { const char *sock_tok = sock_addrs[i]; struct sockaddr_storage ss; + size_t num_ok; /* open an incoming socket */ if (!interpret_string_addr(&ss, sock_tok, @@ -1236,19 +1241,16 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, continue; } - for (j = 0; ports && ports[j]; j++) { - unsigned port = atoi(ports[j]); - + num_ok = smbd_open_socket_for_ip(parent, + ev_ctx, + smb_ports, + &ss); + if (num_ok == 0) { /* * If we fail to open any sockets * in this loop the parent-sockets == NULL * case below will prevent us from starting. */ - - (void)smbd_open_one_socket(parent, - ev_ctx, - &ss, - port); } } }