--- modules/proxy/ajp_header.c (Revision 652878) +++ modules/proxy/ajp_header.c (Arbeitskopie) @@ -432,6 +432,12 @@ return APR_SUCCESS; } +static int copy_header(void *v, const char *key, const char *val) +{ + apr_table_addn(v, key, val); + return 1; +} + /* AJPV13_RESPONSE/AJPV14_RESPONSE:= response_prefix (2) @@ -493,7 +499,20 @@ rc = ajp_msg_get_uint16(msg, &num_headers); if (rc == APR_SUCCESS) { - r->headers_out = apr_table_make(r->pool, num_headers); + apr_table_t *save; + + /* + * Prior to reseting r->headers_out save possible Set-Cookie + * headers set by other modules like mod_usertrack. + */ + if (apr_table_get(r->headers_out, "Set-Cookie")) { + save = apr_table_make(r->pool, num_headers + 2); + apr_table_do(copy_header, save, r->headers_out, "Set-Cookie", NULL); + } + else { + save = apr_table_make(r->pool, num_headers); + } + r->headers_out = save; } else { r->headers_out = NULL; num_headers = 0;