rbb         00/01/12 10:20:45

  Modified:    src/main http_protocol.c http_request.c
  Log:
  Fix some remaining problems with SSI's and Windows.  Basically, the
  sendfile stuff doesn't work properly with chuncked data.
  Submitted by: Allan Edwards
  Reviewed by:  Ryan Bloom
  
  Revision  Changes    Path
  1.47      +14 -9     apache-2.0/src/main/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/main/http_protocol.c,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- http_protocol.c   2000/01/09 05:18:23     1.46
  +++ http_protocol.c   2000/01/12 18:20:43     1.47
  @@ -2016,16 +2016,21 @@
   {
       long len;
   #ifdef HAVE_SENDFILE
  -    ap_bflush(r->connection->client);
  -    if (ap_get_filesize(&len, fd) != APR_SUCCESS) {
  -        ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
  -                      "ap_send_fd: ap_get_filesize failed.");
  -        return 0;
  +    if (!r->chunked) {
  +        ap_bflush(r->connection->client);
  +        if (ap_get_filesize(&len, fd) != APR_SUCCESS) {
  +            ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
  +                          "ap_send_fd: ap_get_filesize failed.");
  +            return 0;
  +        }
  +        if (iol_sendfile(r->connection->client->iol, fd, len,
  +                         NULL, 0, 0) != APR_SUCCESS) {
  +            ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
  +                          "ap_send_fd: iol_sendfile failed.");
  +        }
       }
  -    if (iol_sendfile(r->connection->client->iol, fd, len,
  -                     NULL, 0, 0) != APR_SUCCESS) {
  -        ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
  -                      "ap_send_fd: iol_sendfile failed.");
  +    else {
  +        len = ap_send_fd_length(fd, r, -1);
       }
   #else
       len = ap_send_fd_length(fd, r, -1);
  
  
  
  1.16      +1 -0      apache-2.0/src/main/http_request.c
  
  Index: http_request.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/main/http_request.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- http_request.c    2000/01/10 15:35:49     1.15
  +++ http_request.c    2000/01/12 18:20:43     1.16
  @@ -845,6 +845,7 @@
       rnew->server         = r->server;
       rnew->request_config = ap_create_request_config(rnew->pool);
       rnew->htaccess       = r->htaccess;
  +    rnew->chunked        = r->chunked;
   
       ap_set_sub_req_protocol(rnew, r);
       fdir = ap_make_dirstr_parent(rnew->pool, r->filename);
  
  
  

Reply via email to