AP_BRIGADE_INSERT_TAIL(bb, e);
ap_pass_brigade(origin->output_filters, bb);
- ap_add_input_filter("HTTP", NULL, NULL, origin);
+ ap_add_input_filter("HTTP_IN", NULL, NULL, origin);
ap_add_input_filter("CORE_IN", NULL, NULL, origin);
ap_brigade_destroy(bb);
origin->remain = 0;
ap_get_brigade(origin->input_filters, bb, AP_MODE_BLOCKING);
- ap_bucket_read(AP_BRIGADE_FIRST(bb), (const char **)&buffer2, &len, AP_BLOCK_READ);
+ e = AP_BRIGADE_FIRST(bb);
+ ap_bucket_read(e, (const char **)&buffer2, &len, AP_BLOCK_READ);
if (len == -1) {
apr_close_socket(sock);
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
"Document contains no data");
}
+ AP_BUCKET_REMOVE(e);
+ ap_bucket_destroy(e);
/* Is it an HTTP/1 response? This is buggy if we ever see an HTTP/1.10 */
if (ap_checkmask(buffer2, "HTTP/#.# ###*")) {
buffer2[12] = '\0';
r->status = atoi(&buffer2[9]);
+
buffer2[12] = ' ';
r->status_line = apr_pstrdup(p, &buffer2[9]);
{
clear_connection(p, resp_hdrs); /* Strip Connection hdrs */
ap_cache_el_header_merge(c, resp_hdrs);
+ if (apr_table_get(resp_hdrs, "Content-type")) {
+ r->content_type = apr_pstrdup(r->pool, apr_table_get(resp_hdrs, "Content-type"));
+ }
}
if (conf->viaopt != via_off && conf->viaopt != via_block) {
#if 0
if (!r->assbackwards)
ap_rvputs(r, "HTTP/1.0 ", r->status_line, CRLF, NULL);
-#endif
+
if (cachefp && apr_puts(apr_pstrcat(r->pool, "HTTP/1.0 ",
r->status_line, CRLF, NULL), cachefp) != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
ap_proxy_cache_error(&c);
cachefp = NULL;
}
+#endif
+#if 0
/* send headers */
ap_cache_el_header_walk(c, ap_proxy_send_hdr_line, r, NULL);
-
+#endif
+/*
if (!r->assbackwards)
ap_rputs(CRLF, r);
-
+*/
r->sent_bodyct = 1;
/* Is it an HTTP/0.9 response? If so, send the extra data */
if (backasswards) {
- cntr = len;
- apr_send(r->connection->client_socket, buffer, &cntr);
cntr = len;
e = ap_bucket_create_heap(buffer, cntr, 0, NULL);
AP_BRIGADE_INSERT_TAIL(bb, e);
break;
}
ap_pass_brigade(r->output_filters, bb);
+ ap_brigade_destroy(bb);
+ bb = ap_brigade_create(r->pool);
}
}
* the connection closes (EOF), or we timeout.
*/
while ((len = ap_getline(buffer, size, rr, 1)) > 0) {
-
+
if (!(value = strchr(buffer, ':'))) { /* Find the colon separator */
/* Buggy MS IIS servers sometimes return invalid headers
apr_status_t ap_proxy_doconnect(apr_socket_t *sock, char *host, apr_uint32_t port, request_rec *r)
{
apr_status_t rv;
- int i;
apr_sockaddr_t *destsa;
rv = apr_getaddrinfo(&destsa, host, AF_INET, port, 0, r->pool);