if ((rv = ap_get_os_sock(&csd, sock)) != APR_SUCCESS) {
ap_log_error(APLOG_MARK, APLOG_ERR, rv, NULL, "ap_get_os_sock");
}
- sock_disable_nagle(csd);
- iol = unix_attach_socket(sock);
- if (iol == NULL) {
- if (errno == EBADF) {
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, errno, NULL,
- "filedescriptor (%u) larger than FD_SETSIZE (%u) "
- "found, you probably need to rebuild Apache with a "
- "larger FD_SETSIZE", csd, FD_SETSIZE);
- }
- else {
- ap_log_error(APLOG_MARK, APLOG_WARNING, errno, NULL,
- "error attaching to socket");
- }
+ if (csd >= FD_SETSIZE) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, 0, NULL,
+ "new file descriptor %d is too large; you probably need "
+ "to rebuild Apache with a larger FD_SETSIZE "
+ "(currently %d)",
+ csd, FD_SETSIZE);
ap_close_socket(sock);
- return;
+ return;
}
+ sock_disable_nagle(csd);
+ iol = unix_attach_socket(sock);
conn_io = ap_bcreate(p, B_RDWR);
ap_bpush_iol(conn_io, iol);
(void) ap_get_os_sock(&csd, sock);
+ if (csd >= FD_SETSIZE) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, 0, NULL,
+ "new file descriptor %d is too large; you probably need "
+ "to rebuild Apache with a larger FD_SETSIZE "
+ "(currently %d)",
+ csd, FD_SETSIZE);
+ ap_close_socket(sock);
+ return;
+ }
+
sock_disable_nagle(csd);
iol = unix_attach_socket(sock);
- if (iol == NULL) {
- if (errno == EBADF) {
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, 0, NULL,
- "filedescriptor (%u) larger than FD_SETSIZE (%u) "
- "found, you probably need to rebuild Apache with a "
- "larger FD_SETSIZE", csd, FD_SETSIZE);
- }
- else {
- ap_log_error(APLOG_MARK, APLOG_WARNING, errno, NULL,
- "error attaching to socket");
- }
- ap_close_socket(sock);
- return;
- }
(void) ap_update_child_status(my_child_num, my_thread_num,
SERVER_BUSY_READ, (request_rec *) NULL);
SAFE_ACCEPT(accept_mutex_off()); /* unlock after "accept" */
-#ifdef TPF
- if (csd == 0) /* 0 is invalid socket for TPF */
- continue;
-#endif
-
/* We've got a socket, let's at least process one request off the
* socket before we accept a graceful restart request. We set
* the signal to ignore because we don't want to disturb any
ap_get_os_sock(&sockdes, csd);
- sock_disable_nagle(sockdes);
-
- iol = unix_attach_socket(csd);
- if (iol == NULL) {
- if (errno == EBADF) {
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, 0, NULL,
- "filedescriptor (%u) larger than FD_SETSIZE (%u) "
- "found, you probably need to rebuild Apache with a "
- "larger FD_SETSIZE", sockdes, FD_SETSIZE);
- }
- else {
- ap_log_error(APLOG_MARK, APLOG_WARNING, errno, NULL,
- "error attaching to socket");
- }
+ if (sockdes >= FD_SETSIZE) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, 0, NULL,
+ "new file descriptor %d is too large; you probably need "
+ "to rebuild Apache with a larger FD_SETSIZE "
+ "(currently %d)",
+ sockdes, FD_SETSIZE);
ap_close_socket(csd);
continue;
- }
+ }
+#ifdef TPF
+ if (sockdes == 0) /* 0 is invalid socket for TPF */
+ continue;
+#endif
+
+ sock_disable_nagle(sockdes);
+
+ iol = unix_attach_socket(csd);
(void) ap_update_child_status(my_child_num, SERVER_BUSY_READ,
(request_rec *) NULL);