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

Reply via email to