dmitry Wed Feb 21 15:46:13 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/sapi/cgi fastcgi.c
Log:
Check for FD_SETSIZE limit
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/fastcgi.c?r1=1.4.2.13.2.17&r2=1.4.2.13.2.18&diff_format=u
Index: php-src/sapi/cgi/fastcgi.c
diff -u php-src/sapi/cgi/fastcgi.c:1.4.2.13.2.17
php-src/sapi/cgi/fastcgi.c:1.4.2.13.2.18
--- php-src/sapi/cgi/fastcgi.c:1.4.2.13.2.17 Mon Feb 19 13:21:14 2007
+++ php-src/sapi/cgi/fastcgi.c Wed Feb 21 15:46:13 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fastcgi.c,v 1.4.2.13.2.17 2007/02/19 13:21:14 dmitry Exp $ */
+/* $Id: fastcgi.c,v 1.4.2.13.2.18 2007/02/21 15:46:13 dmitry Exp $ */
#include "php.h"
#include "fastcgi.h"
@@ -757,18 +757,23 @@
break;
#else
if (req->fd >= 0) {
- struct timeval tv = {5,0};
- fd_set set;
+ if (req->fd < FD_SETSIZE) {
+ struct timeval tv = {5,0};
+ fd_set set;
- FD_ZERO(&set);
- FD_SET(req->fd, &set);
+ FD_ZERO(&set);
+ FD_SET(req->fd, &set);
try_again:
- errno = 0;
- if (select(req->fd + 1, &set, NULL,
NULL, &tv) >= 0 && FD_ISSET(req->fd, &set)) {
- break;
+ errno = 0;
+ if (select(req->fd + 1, &set,
NULL, NULL, &tv) >= 0 && FD_ISSET(req->fd, &set)) {
+ break;
+ }
+ if (errno == EINTR) goto
try_again;
+ fcgi_close(req, 1, 0);
+ } else {
+ fprintf(stderr, "Too many open
file descriptors. FD_SETSIZE limit exceeded.");
+ fcgi_close(req, 1, 0);
}
- if (errno == EINTR) goto try_again;
- fcgi_close(req, 1, 0);
}
#endif
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php