You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@apache.org on 2002/03/20 02:58:47 UTC

cvs commit: httpd-2.0/modules/proxy proxy_ftp.c proxy_http.c

stoddard    02/03/19 17:58:47

  Modified:    modules/dav/main mod_dav.c
               modules/experimental cache_storage.c mod_example.c
               modules/filters mod_include.c
               modules/generators mod_autoindex.c mod_cgi.c mod_cgid.c
                        mod_info.c mod_status.c
               modules/http http_protocol.c http_request.c mod_mime.c
               modules/mappers mod_imap.c mod_negotiation.c mod_rewrite.c
               modules/metadata mod_cern_meta.c mod_mime_magic.c
               modules/proxy proxy_ftp.c proxy_http.c
  Log:
  First commit to introduce accessor function to set r->content_type..
  
  Revision  Changes    Path
  1.76      +7 -7      httpd-2.0/modules/dav/main/mod_dav.c
  
  Index: mod_dav.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/dav/main/mod_dav.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- mod_dav.c	19 Mar 2002 10:11:32 -0000	1.75
  +++ mod_dav.c	20 Mar 2002 01:58:45 -0000	1.76
  @@ -345,7 +345,7 @@
       /* ### I really don't think this is needed; gotta test */
       r->status_line = ap_get_status_line(status);
   
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
   
       /* since we're returning DONE, ensure the request body is consumed. */
       (void) ap_discard_request_body(r);
  @@ -382,7 +382,7 @@
       /* ### I really don't think this is needed; gotta test */
       r->status_line = ap_get_status_line(err->status);
   
  -    r->content_type = DAV_XML_CONTENT_TYPE;
  +    ap_rset_content_type(DAV_XML_CONTENT_TYPE, r);
   
       /* since we're returning DONE, ensure the request body is consumed. */
       (void) ap_discard_request_body(r);
  @@ -455,7 +455,7 @@
   {
       /* Set the correct status and Content-Type */
       r->status = status;
  -    r->content_type = DAV_XML_CONTENT_TYPE;
  +    ap_rset_content_type(DAV_XML_CONTENT_TYPE, r);
   
       /* Send the headers and actual multistatus response now... */
       ap_rputs(DAV_XML_HEADER DEBUG_CR
  @@ -1693,7 +1693,7 @@
   
       /* send the options response */
       r->status = HTTP_OK;
  -    r->content_type = DAV_XML_CONTENT_TYPE;
  +    ap_rset_content_type(DAV_XML_CONTENT_TYPE, r);
   
       /* send the headers and response body */
       ap_rputs(DAV_XML_HEADER DEBUG_CR
  @@ -2920,7 +2920,7 @@
       (*locks_hooks->close_lockdb)(lockdb);
   
       r->status = HTTP_OK;
  -    r->content_type = DAV_XML_CONTENT_TYPE;
  +    ap_rset_content_type(DAV_XML_CONTENT_TYPE, r);
   
       ap_rputs(DAV_XML_HEADER DEBUG_CR "<D:prop xmlns:D=\"DAV:\">" DEBUG_CR, r);
       if (lock == NULL)
  @@ -3878,7 +3878,7 @@
   
       /* set up defaults for the report response */
       r->status = HTTP_OK;
  -    r->content_type = DAV_XML_CONTENT_TYPE;
  +    ap_rset_content_type(DAV_XML_CONTENT_TYPE, r);
   
       /* run report hook */
       if ((err = (*vsn_hooks->deliver_report)(r, resource, doc,
  @@ -4125,7 +4125,7 @@
          is going to do something different (i.e. an error), then it must
          return a dav_error, and we'll reset these values properly. */
       r->status = HTTP_OK;
  -    r->content_type = "text/xml";
  +    ap_rset_content_type("text/xml", r);
   
       /* ### should we do any preliminary response generation? probably not,
          ### because we may have an error, thus demanding something else in
  
  
  
  1.19      +1 -1      httpd-2.0/modules/experimental/cache_storage.c
  
  Index: cache_storage.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/experimental/cache_storage.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- cache_storage.c	13 Mar 2002 20:47:46 -0000	1.18
  +++ cache_storage.c	20 Mar 2002 01:58:45 -0000	1.19
  @@ -237,7 +237,7 @@
           return rv;
       }
   
  -    r->content_type = apr_pstrdup(r->pool, info->content_type);
  +    ap_rset_content_type(apr_pstrdup(r->pool, info->content_type), r);
       r->filename = apr_pstrdup(r->pool, info->filename );
   
       return APR_SUCCESS;
  
  
  
  1.35      +1 -1      httpd-2.0/modules/experimental/mod_example.c
  
  Index: mod_example.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/experimental/mod_example.c,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- mod_example.c	13 Mar 2002 20:47:46 -0000	1.34
  +++ mod_example.c	20 Mar 2002 01:58:45 -0000	1.35
  @@ -552,7 +552,7 @@
        * We also need to start a timer so the server can know if the connexion
        * is broken.
        */
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
       /*
        * If we're only supposed to send header information (HEAD request), we're
        * already there.
  
  
  
  1.203     +1 -1      httpd-2.0/modules/filters/mod_include.c
  
  Index: mod_include.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v
  retrieving revision 1.202
  retrieving revision 1.203
  diff -u -r1.202 -r1.203
  --- mod_include.c	17 Mar 2002 17:35:39 -0000	1.202
  +++ mod_include.c	20 Mar 2002 01:58:45 -0000	1.203
  @@ -3453,7 +3453,7 @@
       if (r->handler && (strcmp(r->handler, "server-parsed") == 0)) 
       {
           if (!r->content_type || !*r->content_type) {
  -            r->content_type = "text/html";
  +            ap_rset_content_type("text/html", r);
           }
           r->handler = "default-handler";
       }
  
  
  
  1.101     +2 -2      httpd-2.0/modules/generators/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_autoindex.c,v
  retrieving revision 1.100
  retrieving revision 1.101
  diff -u -r1.100 -r1.101
  --- mod_autoindex.c	13 Mar 2002 20:47:48 -0000	1.100
  +++ mod_autoindex.c	20 Mar 2002 01:58:46 -0000	1.101
  @@ -1895,9 +1895,9 @@
       }
   
   #if APR_HAS_UNICODE_FS 
  -    r->content_type = "text/html;charset=utf-8";
  +    ap_rset_content_type("text/html;charset=utf-8", r);
   #else
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
   #endif
       if (autoindex_opts & TRACK_MODIFIED) {
           ap_update_mtime(r, r->finfo.mtime);
  
  
  
  1.122     +1 -1      httpd-2.0/modules/generators/mod_cgi.c
  
  Index: mod_cgi.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgi.c,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- mod_cgi.c	16 Mar 2002 18:26:57 -0000	1.121
  +++ mod_cgi.c	20 Mar 2002 01:58:46 -0000	1.122
  @@ -788,7 +788,7 @@
        * typing rules would have called it something else.
        */
   
  -    rr->content_type = CGI_MAGIC_TYPE;
  +    ap_rset_content_type(CGI_MAGIC_TYPE, rr);
   
       /* Run it. */
   
  
  
  
  1.119     +1 -2      httpd-2.0/modules/generators/mod_cgid.c
  
  Index: mod_cgid.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgid.c,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -r1.118 -r1.119
  --- mod_cgid.c	17 Mar 2002 01:36:30 -0000	1.118
  +++ mod_cgid.c	20 Mar 2002 01:58:46 -0000	1.119
  @@ -1216,8 +1216,7 @@
       /* Force sub_req to be treated as a CGI request, even if ordinary
        * typing rules would have called it something else.
        */
  -
  -    rr->content_type = CGI_MAGIC_TYPE;
  +    ap_rset_content_type(CGI_MAGIC_TYPE, rr);
   
       /* Run it. */
   
  
  
  
  1.42      +1 -1      httpd-2.0/modules/generators/mod_info.c
  
  Index: mod_info.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_info.c,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- mod_info.c	13 Mar 2002 20:47:48 -0000	1.41
  +++ mod_info.c	20 Mar 2002 01:58:46 -0000	1.42
  @@ -377,7 +377,7 @@
       if (r->method_number != M_GET)
   	return DECLINED;
   
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
       if (r->header_only) {
           return 0;
       }
  
  
  
  1.63      +2 -2      httpd-2.0/modules/generators/mod_status.c
  
  Index: mod_status.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_status.c,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- mod_status.c	16 Mar 2002 18:42:46 -0000	1.62
  +++ mod_status.c	20 Mar 2002 01:58:46 -0000	1.63
  @@ -283,7 +283,7 @@
       if (r->method_number != M_GET)
           return DECLINED;
   
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
   
       /*
        * Simple table-driven form data set parser that lets you alter the header
  @@ -312,7 +312,7 @@
                       no_table_report = 1;
                       break;
                   case STAT_OPT_AUTO:
  -                    r->content_type = "text/plain";
  +                    ap_rset_content_type("text/plain", r);
                       short_report = 1;
                       break;
                   }
  
  
  
  1.397     +17 -6     httpd-2.0/modules/http/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/http/http_protocol.c,v
  retrieving revision 1.396
  retrieving revision 1.397
  diff -u -r1.396 -r1.397
  --- http_protocol.c	19 Mar 2002 10:11:32 -0000	1.396
  +++ http_protocol.c	20 Mar 2002 01:58:46 -0000	1.397
  @@ -1145,7 +1145,7 @@
           return rv;
       }
   
  -    r->content_type = "message/http";
  +    ap_rset_content_type("message/http", r);
   
       /* Now we recreate the request, and echo it back */
   
  @@ -1253,6 +1253,17 @@
                          apr_array_pstrcat(r->pool, varies, ','));
       }
   }
  +AP_DECLARE(void) ap_rset_content_type(char *ct, request_rec *r)
  +{
  +    r->content_type = ct;
  +
  +    /* Insert filters requested by the AddOutputFiltersByType 
  +     * configuration directive. Content-type filters must be 
  +     * inserted after the content handlers have run because 
  +     * only then, do we reliably know the content-type.
  +     */
  +    ap_add_output_filters_by_type(r);
  +}
   
   typedef struct header_filter_ctx {
       int headers_sent;
  @@ -2039,7 +2050,7 @@
           r->content_languages = NULL;
           r->content_encoding = NULL;
           r->clength = 0;
  -        r->content_type = "text/html; charset=iso-8859-1";
  +        ap_rset_content_type("text/html; charset=iso-8859-1", r);
   
           if ((status == HTTP_METHOD_NOT_ALLOWED)
               || (status == HTTP_NOT_IMPLEMENTED)) {
  @@ -2593,10 +2604,10 @@
   
           if (num_ranges > 1) {
               ctx->orig_ct = r->content_type;
  -            r->content_type = apr_pstrcat(r->pool, "multipart",
  -                                          use_range_x(r) ? "/x-" : "/",
  -                                          "byteranges; boundary=",
  -                                          r->boundary, NULL);
  +            ap_rset_content_type(apr_pstrcat(r->pool, "multipart",
  +                                             use_range_x(r) ? "/x-" : "/",
  +                                             "byteranges; boundary=",
  +                                             r->boundary, NULL), r);
           }
   
           /* create a brigade in case we never call ap_save_brigade() */
  
  
  
  1.132     +2 -2      httpd-2.0/modules/http/http_request.c
  
  Index: http_request.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/http/http_request.c,v
  retrieving revision 1.131
  retrieving revision 1.132
  diff -u -r1.131 -r1.132
  --- http_request.c	13 Mar 2002 20:47:49 -0000	1.131
  +++ http_request.c	20 Mar 2002 01:58:46 -0000	1.132
  @@ -386,7 +386,7 @@
       r->args = rr->args;
       r->finfo = rr->finfo;
       r->handler = rr->handler;
  -    r->content_type = rr->content_type;
  +    ap_rset_content_type(rr->content_type, r);
       r->content_encoding = rr->content_encoding;
       r->content_languages = rr->content_languages;
       r->per_dir_config = rr->per_dir_config;
  @@ -428,7 +428,7 @@
       int access_status;
       request_rec *new = internal_internal_redirect(new_uri, r);
       if (r->handler)
  -        new->content_type = r->content_type;
  +        ap_rset_content_type(r->content_type, new);
       access_status = ap_process_request_internal(new);
       if (access_status == OK) {
           if ((access_status = ap_invoke_handler(new)) != 0) {
  
  
  
  1.80      +16 -16    httpd-2.0/modules/http/mod_mime.c
  
  Index: mod_mime.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/http/mod_mime.c,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- mod_mime.c	16 Mar 2002 20:29:38 -0000	1.79
  +++ mod_mime.c	20 Mar 2002 01:58:46 -0000	1.80
  @@ -76,7 +76,7 @@
   #include "http_config.h"
   #include "http_log.h"
   #include "http_request.h"
  -
  +#include "http_protocol.h"
   
   /* XXXX - fix me / EBCDIC
    *        there was a cludge here which would use its
  @@ -744,7 +744,7 @@
       int found_metadata = 0;
   
       if (r->finfo.filetype == APR_DIR) {
  -        r->content_type = DIR_MAGIC_TYPE;
  +        ap_rset_content_type(DIR_MAGIC_TYPE, r);
           return OK;
       }
   
  @@ -793,7 +793,7 @@
           if (exinfo == NULL || !exinfo->forced_type) {
               if ((type = apr_hash_get(mime_type_extensions, ext,
                                        APR_HASH_KEY_STRING)) != NULL) {
  -                r->content_type = type;
  +                ap_rset_content_type((char*) type, r);
                   found = 1;
               }
           }
  @@ -801,7 +801,7 @@
           if (exinfo != NULL) {
   
               if (exinfo->forced_type) {
  -                r->content_type = exinfo->forced_type;
  +                ap_rset_content_type(exinfo->forced_type, r);
                   found = 1;
               }
   
  @@ -885,29 +885,29 @@
   
   	if ((ctp = analyze_ct(r, r->content_type))) {
   	    param *pp = ctp->param;
  -	    r->content_type = apr_pstrcat(r->pool, ctp->type, "/",
  -					 ctp->subtype, NULL);
  +	    ap_rset_content_type(apr_pstrcat(r->pool, ctp->type, "/",
  +                                             ctp->subtype, NULL), r);
   	    while (pp != NULL) {
   		if (charset && !strcmp(pp->attr, "charset")) {
   		    if (!override) {
  -			r->content_type = apr_pstrcat(r->pool, r->content_type,
  -						     "; charset=", charset,
  -						     NULL);
  +			ap_rset_content_type(apr_pstrcat(r->pool, r->content_type,
  +                                                         "; charset=", charset,
  +                                                         NULL), r);
   			override = 1;
   		    }
   		}
   		else {
  -		    r->content_type = apr_pstrcat(r->pool, r->content_type,
  -						 "; ", pp->attr,
  -						 "=", pp->val,
  -						 NULL);
  +		    ap_rset_content_type(apr_pstrcat(r->pool, r->content_type,
  +                                                     "; ", pp->attr,
  +                                                     "=", pp->val,
  +                                                     NULL), r);
   		}
   		pp = pp->next;
   	    }
   	    if (charset && !override) {
  -		r->content_type = apr_pstrcat(r->pool, r->content_type,
  -					     "; charset=", charset,
  -					     NULL);
  +		ap_rset_content_type(apr_pstrcat(r->pool, r->content_type,
  +                                                 "; charset=", charset,
  +                                                 NULL), r);
   	    }
   	}
       }
  
  
  
  1.36      +1 -1      httpd-2.0/modules/mappers/mod_imap.c
  
  Index: mod_imap.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_imap.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- mod_imap.c	13 Mar 2002 20:47:50 -0000	1.35
  +++ mod_imap.c	20 Mar 2002 01:58:46 -0000	1.36
  @@ -521,7 +521,7 @@
   
   static void menu_header(request_rec *r, char *menu)
   {
  -    r->content_type = "text/html";
  +    ap_rset_content_type("text/html", r);
   
       ap_rvputs(r, DOCTYPE_HTML_3_2, "<html><head>\n<title>Menu for ", r->uri,
              "</title>\n</head><body>\n", NULL);
  
  
  
  1.99      +1 -1      httpd-2.0/modules/mappers/mod_negotiation.c
  
  Index: mod_negotiation.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_negotiation.c,v
  retrieving revision 1.98
  retrieving revision 1.99
  diff -u -r1.98 -r1.99
  --- mod_negotiation.c	13 Mar 2002 20:47:50 -0000	1.98
  +++ mod_negotiation.c	20 Mar 2002 01:58:46 -0000	1.99
  @@ -1115,7 +1115,7 @@
            * might be doing.
            */
           if (sub_req->handler && !sub_req->content_type) {
  -            sub_req->content_type = CGI_MAGIC_TYPE;
  +            ap_rset_content_type(CGI_MAGIC_TYPE, sub_req);
           }
   
           /* 
  
  
  
  1.103     +2 -2      httpd-2.0/modules/mappers/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_rewrite.c,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- mod_rewrite.c	16 Mar 2002 18:26:57 -0000	1.102
  +++ mod_rewrite.c	20 Mar 2002 01:58:47 -0000	1.103
  @@ -1311,7 +1311,7 @@
       else {
           rewritelog(r, 1, "force filename %s to have MIME-type '%s'",
                      r->filename, t);
  -        r->content_type = t;
  +        ap_rset_content_type(t, r);
           return OK;
       }
   }
  @@ -1959,7 +1959,7 @@
                    */
                   rewritelog(r, 1, "[per-dir %s] force %s to have MIME-type "
                              "'%s'", perdir, r->filename, p->forced_mimetype);
  -                r->content_type = p->forced_mimetype;
  +                ap_rset_content_type(p->forced_mimetype, r);
               }
           }
           return 2;
  
  
  
  1.37      +2 -1      httpd-2.0/modules/metadata/mod_cern_meta.c
  
  Index: mod_cern_meta.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/metadata/mod_cern_meta.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- mod_cern_meta.c	13 Mar 2002 20:47:52 -0000	1.36
  +++ mod_cern_meta.c	20 Mar 2002 01:58:47 -0000	1.37
  @@ -165,6 +165,7 @@
   #include "util_script.h"
   #include "http_log.h"
   #include "http_request.h"
  +#include "http_protocol.h"
   #include "apr_lib.h"
   
   #define DIR_CMD_PERMS OR_INDEXES
  @@ -292,7 +293,7 @@
   
   	    tmp = apr_pstrdup(r->pool, l);
   	    ap_content_type_tolower(tmp);
  -	    r->content_type = tmp;
  +	    ap_rset_content_type(tmp, r);
   	}
   	else if (!strcasecmp(w, "Status")) {
   	    sscanf(l, "%d", &r->status);
  
  
  
  1.55      +2 -2      httpd-2.0/modules/metadata/mod_mime_magic.c
  
  Index: mod_mime_magic.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/metadata/mod_mime_magic.c,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- mod_mime_magic.c	16 Mar 2002 18:26:58 -0000	1.54
  +++ mod_mime_magic.c	20 Mar 2002 01:58:47 -0000	1.55
  @@ -833,7 +833,7 @@
   	/* XXX: this could be done at config time I'm sure... but I'm
   	 * confused by all this magic_rsl stuff. -djg */
   	ap_content_type_tolower(tmp);
  -	r->content_type = tmp;
  +	ap_rset_content_type(tmp, r);
       }
       if (state == rsl_encoding) {
           char *tmp;
  @@ -2369,7 +2369,7 @@
   
       /* extract content type/encoding/language from sub-request */
       if (sub->content_type) {
  -	r->content_type = apr_pstrdup(r->pool, sub->content_type);
  +	ap_rset_content_type(apr_pstrdup(r->pool, sub->content_type), r);
   #if MIME_MAGIC_DEBUG
   	ap_log_rerror(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, 0, r,
   		    MODNAME ": subrequest %s got %s",
  
  
  
  1.115     +2 -2      httpd-2.0/modules/proxy/proxy_ftp.c
  
  Index: proxy_ftp.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/proxy/proxy_ftp.c,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- proxy_ftp.c	16 Mar 2002 18:26:58 -0000	1.114
  +++ proxy_ftp.c	20 Mar 2002 01:58:47 -0000	1.115
  @@ -1710,7 +1710,7 @@
   
       /* set content-type */
       if (dirlisting) {
  -        r->content_type = "text/html";
  +        ap_rset_content_type("text/html", r);
       }
       else {
           if (r->content_type) {
  @@ -1718,7 +1718,7 @@
                        "proxy: FTP: Content-Type set to %s", r->content_type);
           }
           else {
  -            r->content_type = ap_default_type(r);
  +            ap_rset_content_type(ap_default_type(r), r);
           }
           if (xfer_type != 'A' && size != NULL) {
               /* We "trust" the ftp server to really serve (size) bytes... */
  
  
  
  1.136     +1 -1      httpd-2.0/modules/proxy/proxy_http.c
  
  Index: proxy_http.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/proxy/proxy_http.c,v
  retrieving revision 1.135
  retrieving revision 1.136
  diff -u -r1.135 -r1.136
  --- proxy_http.c	13 Mar 2002 20:47:53 -0000	1.135
  +++ proxy_http.c	20 Mar 2002 01:58:47 -0000	1.136
  @@ -701,7 +701,7 @@
                                                     "close");
                   ap_proxy_clear_connection(p, r->headers_out);
                   if ((buf = apr_table_get(r->headers_out, "Content-Type"))) {
  -                    r->content_type = apr_pstrdup(p, buf);
  +                    ap_rset_content_type(apr_pstrdup(p, buf), r);
                   }            
                   ap_proxy_pre_http_request(origin,rp);
               }