ID: 15583
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: Other web server
Operating System: Slackware 8
PHP Version: 4.1.1
New Comment:
I did it again with a php4-latest from snaps.php.net against
thttpd-2.22beta4.
It asked me if I wanted to patch fdimage.c cause it thinks it's already
patched. I said no this time.
This is the output of the patching:
patching Makefile.in
Hunk #3 succeeded at 155 (offset 2 lines).
patching config.h
patching fdwatch.c
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
2 of 2 hunks ignored -- saving rejects to file fdwatch.c.rej
patching file libhttpd.c
Hunk #2 succeeded at 249 with fuzz 1 (offset 5 lines).
Hunk #3 succeeded at 255 (offset 2 lines).
Hunk #4 succeeded at 322 (offset 5 lines).
Hunk #5 succeeded at 396 with fuzz 2 (offset 5 lines).
Hunk #6 succeeded at 2401 (offset 40 lines).
Hunk #7 FAILED at 3077.
Hunk #8 succeeded at 3604 (offset 35 lines).
1 out of 8 hunks FAILED -- saving rejects to file libhttpd.c.rej
patching libhttpd.h
Hunk #1 succeeded at 1373 with fuzz 1 (offset 40 lines).
Hunk #3 succeeded at 1546 (offset 40 lines).
patching file mime_encodings.txt
patching file libhttpd.c
Hunk #1 succeeded at 3702 (offset 91 lines).
make[1]: ***[install-sapi] Error 1
make[1]: Leaving directory `/root/sources/php4-200202161800'
make: *** [install-recursive] Error 1
*******************************
start contents of fdwatch.c.rej
***************
*** 454,460 ****
ridx = 0;
for ( i = 0; i < npollfds; ++i )
- if ( pollfds[i].revents & ( POLLIN | POLLOUT ) )
poll_rfdidx[ridx++] = pollfds[i].fd;
return r;
--- 454,460 ----
ridx = 0;
for ( i = 0; i < npollfds; ++i )
+ if ( pollfds[i].revents & ( POLLIN | POLLOUT | POLLERR | POLLHUP |
POLLNVAL ) )
poll_rfdidx[ridx++] = pollfds[i].fd;
return r;
***************
*** 466,473 ****
{
switch ( fd_rw[fd] )
{
- case FDW_READ: return pollfds[poll_fdidx[fd]].revents & POLLIN;
- case FDW_WRITE: return pollfds[poll_fdidx[fd]].revents & POLLOUT;
default: return 0;
}
}
--- 466,473 ----
{
switch ( fd_rw[fd] )
{
+ case FDW_READ: return pollfds[poll_fdidx[fd]].revents & ( POLLIN |
POLLERR | POLLHUP | POLLNVAL );
+ case FDW_WRITE: return pollfds[poll_fdidx[fd]].revents & (
POLLOUT | POLLERR | POLLHUP | POLLNVAL );
default: return 0;
}
}
**************************
end contents fdwatch.c.rej
**************************
start contents libhttpd.c.rej
***************
*** 3066,3076 ****
post_post_garbage_hack( httpd_conn* hc )
{
char buf[2];
- int r;
- r = recv( hc->conn_fd, buf, sizeof(buf), MSG_PEEK );
- if ( r > 0 )
- (void) read( hc->conn_fd, buf, r );
}
--- 3077,3085 ----
post_post_garbage_hack( httpd_conn* hc )
{
char buf[2];
+ fcntl(hc->conn_fd, F_SETFL, O_NONBLOCK);
+ (void) read( hc->conn_fd, buf, 2 );
}
Previous Comments:
------------------------------------------------------------------------
[2002-02-15 20:13:52] [EMAIL PROTECTED]
Patching of the thttpd source fails when I try to compile php as a sapi
thttpd module. Tried with thttpd versions 2.19, 2.20c, and 2.22beta4.
Report contents apply to thttpd-2.20c (the latest stable version), but
I think the error is the same for all.
Details:
unpackaged php-4.1.1 and thttpd into the same directory and cd to
php-4.1.1.
./configure --with-thttpd=../thttpd-2.20c
configure works fine.
then do make install per the readme by Sascha
gcc gets a workout and then Hunks 1 & 2 fail on fdwatch.c on lines 460
and 472 and Hunks 6 & 7 fail on libhttpd.c at lines 2349 and 3025
****************************************
contents of fdwatch.c.rej
***************
*** 460,466 ****
ridx = 0;
for ( i = 0; i < npollfds; ++i )
- if ( pollfds[i].revents & ( POLLIN | POLLOUT ) )
poll_rfdidx[ridx++] = pollfds[i].fd;
return r;
--- 460,466 ----
ridx = 0;
for ( i = 0; i < npollfds; ++i )
+ if ( pollfds[i].revents & ( POLLIN | POLLOUT | POLLERR | POLLHUP |
POLLNVAL ) )
poll_rfdidx[ridx++] = pollfds[i].fd;
return r;
***************
*** 472,479 ****
{
switch ( fd_rw[fd] )
{
- case FDW_READ: return pollfds[poll_fdidx[fd]].revents & POLLIN;
- case FDW_WRITE: return pollfds[poll_fdidx[fd]].revents & POLLOUT;
default: return 0;
}
}
--- 472,479 ----
{
switch ( fd_rw[fd] )
{
+ case FDW_READ: return pollfds[poll_fdidx[fd]].revents & ( POLLIN |
POLLERR | POLLHUP | POLLNVAL );
+ case FDW_WRITE: return pollfds[poll_fdidx[fd]].revents & ( POLLOUT
| POLLERR | POLLHUP | POLLNVAL );
default: return 0;
}
}
******************************
end contents of fdwatch.c.rej
******************************
contents of libhttpd.c.rej
***************
*** 2341,2347 ****
{
make_log_entry( hc, nowP );
- if ( hc->file_address != (char*) 0 )
{
mmc_unmap( hc->file_address, &(hc->sb), nowP );
hc->file_address = (char*) 0;
--- 2349,2358 ----
{
make_log_entry( hc, nowP );
+ if ( hc->file_address == (char*) 1 )
+ {
+ thttpd_closed_conn(hc->conn_fd);
+ } else if ( hc->file_address != (char*) 0 )
{
mmc_unmap( hc->file_address, &(hc->sb), nowP );
hc->file_address = (char*) 0;
***************
*** 3014,3024 ****
post_post_garbage_hack( httpd_conn* hc )
{
char buf[2];
- int r;
- r = recv( hc->conn_fd, buf, sizeof(buf), MSG_PEEK );
- if ( r > 0 )
- (void) read( hc->conn_fd, buf, r );
}
--- 3025,3033 ----
post_post_garbage_hack( httpd_conn* hc )
{
char buf[2];
+ fcntl(hc->conn_fd, F_SETFL, O_NONBLOCK);
+ (void) read( hc->conn_fd, buf, 2 );
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15583&edit=1