Author: Lars Mueller Subject: Precise usage of the max fd argument to select() Bugzilla: bugzilla.Samba.org #2050 --- samba-3.0.8/source/smbd/server.c +++ samba-3.0.8/source/smbd/server.c 2004-11-15 15:48:41 @@ -186,6 +186,7 @@ int fd_listenset[FD_SETSIZE]; fd_set listen_set; int s; + int max_fd = 0; int i; char *ports; @@ -245,6 +246,8 @@ s = fd_listenset[num_sockets] = open_socket_in(SOCK_STREAM, port, 0, ifip->s_addr, True); if(s == -1) return False; + if (max_fd < s) + max_fd = s; /* ready to listen */ set_socket_options(s,"SO_KEEPALIVE"); @@ -335,7 +338,7 @@ memcpy((char *)&lfds, (char *)&listen_set, sizeof(listen_set)); - num = sys_select(FD_SETSIZE,&lfds,NULL,NULL,NULL); + num = sys_select(max_fd+1,&lfds,NULL,NULL,NULL); if (num == -1 && errno == EINTR) { if (got_sig_term) {