ASF Bugzilla – Attachment 7643 Details for
Bug 22104
mod_deflate does not change Content-Length, breaks DAV file upload via PUT
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
clean patch I wrote in the meantime :)
h.diff (text/plain), 4.29 KB, created by
André Malo
on 2003-08-04 14:09:48 UTC
(
hide
)
Description:
clean patch I wrote in the meantime :)
Filename:
MIME Type:
Creator:
André Malo
Created:
2003-08-04 14:09:48 UTC
Size:
4.29 KB
patch
obsolete
>Index: modules/dav/main/mod_dav.c >=================================================================== >RCS file: /home/cvs/httpd-2.0/modules/dav/main/mod_dav.c,v >retrieving revision 1.91.2.3 >diff -u -r1.91.2.3 mod_dav.c >--- modules/dav/main/mod_dav.c 25 Jun 2003 20:18:32 -0000 1.91.2.3 >+++ modules/dav/main/mod_dav.c 4 Aug 2003 14:03:50 -0000 >@@ -896,7 +896,6 @@ > const char *body; > dav_error *err; > dav_error *err2; >- int result; > dav_stream_mode mode; > dav_stream *stream; > dav_response *multi_response; >@@ -904,10 +903,6 @@ > apr_off_t range_start; > apr_off_t range_end; > >- if ((result = ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK)) != OK) { >- return result; >- } >- > /* Ask repository module to resolve the resource */ > err = dav_get_resource(r, 0 /* label_allowed */, 0 /* use_checked_in */, > &resource); >@@ -982,39 +977,61 @@ > } > > if (err == NULL) { >- if (ap_should_client_block(r)) { >- char *buffer = apr_palloc(r->pool, DAV_READ_BLOCKSIZE); >- long len; >- >- /* >- * Once we start reading the request, then we must read the >- * whole darn thing. ap_discard_request_body() won't do anything >- * for a partially-read request. >- */ >- >- while ((len = ap_get_client_block(r, buffer, >- DAV_READ_BLOCKSIZE)) > 0) { >- if (err == NULL) { >- /* write whatever we read, until we see an error */ >- err = (*resource->hooks->write_stream)(stream, >- buffer, len); >- } >- } >- >- /* >- * ### what happens if we read more/less than the amount >- * ### specified in the Content-Range? eek... >- */ >- >- if (len == -1) { >- /* >- * Error reading request body. This has precedence over >- * prior errors. >- */ >- err = dav_new_error(r->pool, HTTP_BAD_REQUEST, 0, >- "An error occurred while reading the " >- "request body."); >- } >+ apr_bucket_brigade *bb; >+ apr_bucket *b; >+ int seen_eos = 0; >+ >+ bb = apr_brigade_create(r->pool, r->connection->bucket_alloc); >+ >+ if (!bb) { >+ err = dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, >+ "Could not create bucket brigade"); >+ } >+ else { >+ do { >+ apr_status_t rc; >+ >+ rc = ap_get_brigade(r->input_filters, bb, AP_MODE_READBYTES, >+ APR_BLOCK_READ, DAV_READ_BLOCKSIZE); >+ >+ if (rc != APR_SUCCESS) { >+ err = dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, >+ "Could not get next bucket brigade"); >+ break; >+ } >+ >+ APR_BRIGADE_FOREACH(b, bb) { >+ const char *data; >+ apr_size_t len; >+ >+ if (APR_BUCKET_IS_EOS(b)) { >+ seen_eos = 1; >+ break; >+ } >+ >+ if (APR_BUCKET_IS_METADATA(b)) { >+ continue; >+ } >+ >+ rc = apr_bucket_read(b, &data, &len, APR_BLOCK_READ); >+ if (rc != APR_SUCCESS) { >+ err = dav_new_error(r->pool, HTTP_BAD_REQUEST, 0, >+ "An error occurred while reading " >+ "the request body."); >+ break; >+ } >+ >+ if (err == NULL) { >+ /* write whatever we read, until we see an error */ >+ err = (*resource->hooks->write_stream)(stream, data, >+ len); >+ } >+ } >+ >+ apr_brigade_cleanup(bb); >+ } while (!seen_eos); >+ >+ apr_brigade_destroy(bb); > } > > err2 = (*resource->hooks->close_stream)(stream,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 22104
:
7641
|
7642
| 7643