The Samba-Bugzilla – Attachment 795 Details for
Bug 2050
sys_select() used with a fixed first argument
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Use also maxfd for nmbd instead of FD_SETSIZE
nmbd-nmbd_packets.diff (text/plain), 2.67 KB, created by
Lars Müller
on 2004-11-18 08:52:08 UTC
(
hide
)
Description:
Use also maxfd for nmbd instead of FD_SETSIZE
Filename:
MIME Type:
Creator:
Lars Müller
Created:
2004-11-18 08:52:08 UTC
Size:
2.67 KB
patch
obsolete
>--- samba-3.0.9/source/nmbd/nmbd_packets.c >+++ samba-3.0.9/source/nmbd/nmbd_packets.c 2004-11-18 16:42:29 >@@ -1635,11 +1635,21 @@ > } > > /**************************************************************************** >+ Check and if required set the highest fd. >+***************************************************************************/ >+ >+void check_set_maxfd( int *maxfd, int fd) >+{ >+ if ( *maxfd < fd ) >+ *maxfd = fd; >+} >+ >+/**************************************************************************** > Create an fd_set containing all the sockets in the subnet structures, > plus the broadcast sockets. > ***************************************************************************/ > >-static BOOL create_listen_fdset(fd_set **ppset, int **psock_array, int *listen_number) >+static BOOL create_listen_fdset(fd_set **ppset, int **psock_array, int *listen_number, int *maxfd) > { > int *sock_array = NULL; > struct subnet_record *subrec = NULL; >@@ -1672,21 +1682,25 @@ > /* Add in the broadcast socket on 137. */ > FD_SET(ClientNMB,pset); > sock_array[num++] = ClientNMB; >+ check_set_maxfd( maxfd, ClientNMB); > > /* Add in the 137 sockets on all the interfaces. */ > for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) { > FD_SET(subrec->nmb_sock,pset); > sock_array[num++] = subrec->nmb_sock; >+ check_set_maxfd( maxfd, subrec->nmb_sock); > } > > /* Add in the broadcast socket on 138. */ > FD_SET(ClientDGRAM,pset); > sock_array[num++] = ClientDGRAM; >+ check_set_maxfd( maxfd, ClientDGRAM); > > /* Add in the 138 sockets on all the interfaces. */ > for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) { > FD_SET(subrec->dgram_sock,pset); > sock_array[num++] = subrec->dgram_sock; >+ check_set_maxfd( maxfd, subrec->dgram_sock); > } > > *listen_number = (count*2) + 2; >@@ -1711,6 +1725,7 @@ > static int listen_number = 0; > static int *sock_array = NULL; > int i; >+ int maxfd = 0; > > fd_set fds; > int selrtn; >@@ -1720,7 +1735,7 @@ > #endif > > if(listen_set == NULL || rescan_listen_set) { >- if(create_listen_fdset(&listen_set, &sock_array, &listen_number)) { >+ if(create_listen_fdset(&listen_set, &sock_array, &listen_number, &maxfd)) { > DEBUG(0,("listen_for_packets: Fatal error. unable to create listen set. Exiting.\n")); > return True; > } >@@ -1733,6 +1748,7 @@ > dns_fd = asyncdns_fd(); > if (dns_fd != -1) { > FD_SET(dns_fd, &fds); >+ check_set_maxfd( &maxfd, dns_fd); > } > #endif > >@@ -1750,7 +1766,7 @@ > > BlockSignals(False, SIGTERM); > >- selrtn = sys_select(FD_SETSIZE,&fds,NULL,NULL,&timeout); >+ selrtn = sys_select(maxfd+1,&fds,NULL,NULL,&timeout); > > /* We can only take signals when we are in the select - block them again here. */ >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 2050
:
781
|
795
|
796