httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sas...@locus.apache.org
Subject cvs commit: apache-2.0/src/main http_core.c
Date Thu, 02 Nov 2000 20:48:53 GMT
sascha      00/11/02 12:48:51

  Modified:    src/main http_core.c
  Log:
  Make the default handler read the dechunked request body on a POST request.
  
  Revision  Changes    Path
  1.194     +25 -15    apache-2.0/src/main/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/main/http_core.c,v
  retrieving revision 1.193
  retrieving revision 1.194
  diff -u -u -r1.193 -r1.194
  --- http_core.c	2000/11/02 20:33:48	1.193
  +++ http_core.c	2000/11/02 20:48:48	1.194
  @@ -2912,14 +2912,25 @@
   
   static int do_nothing(request_rec *r) { return OK; }
   
  -/*
  - * Default handler for MIME types without other handlers.  Only GET
  - * and OPTIONS at this point... anyone who wants to write a generic
  - * handler for PUT or POST is free to do so, but it seems unwise to provide
  - * any defaults yet... So, for now, we assume that this will always be
  - * the last handler called and return 405 or 501.
  - */
  +#define POST_CHUNK_SIZE 4096
   
  +static int handle_request_body(request_rec *r)
  +{
  +    int rv;
  +    char buf[POST_CHUNK_SIZE];
  +    long n;
  +
  +    if ((rv = ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK)))
  +        return rv;
  +
  +    if ((rv = ap_should_client_block(r)) == 0)
  +        return APR_SUCCESS;
  +
  +    while ((n = ap_get_client_block(r, buf, POST_CHUNK_SIZE)) > 0);
  +
  +    return APR_SUCCESS;
  +}
  +
   static int default_handler(request_rec *r)
   {
       core_dir_config *d =
  @@ -2940,13 +2951,6 @@
       int bld_content_md5 = 
           (d->content_md5 & 1) && r->output_filters->frec->ftype
!= AP_FTYPE_CONTENT;
   
  -    /* This handler has no use for a request body (yet), but we still
  -     * need to read and discard it if the client sent one.
  -     */
  -    if ((errstatus = ap_discard_request_body(r)) != OK) {
  -        return errstatus;
  -    }
  -
       ap_allow_methods(r, MERGE_ALLOW, "GET", "OPTIONS", NULL);
   
       if (r->method_number == M_INVALID) {
  @@ -2967,7 +2971,13 @@
   		      : r->filename);
   	return HTTP_NOT_FOUND;
       }
  -    if (r->method_number != M_GET) {
  +    if (r->method_number == M_POST) {
  +        if ((errstatus = handle_request_body(r)) != APR_SUCCESS) {
  +            return errstatus;
  +        }
  +    } else if ((errstatus = ap_discard_request_body(r)) != OK) {
  +        return errstatus;
  +    } else if (r->method_number != M_GET) {
           return HTTP_METHOD_NOT_ALLOWED;
       }
   	
  
  
  

Mime
View raw message