1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-06 09:01:14 +03:00

Count the bytes trasfered and readed so we can display the actual

data traffic, and add additional balancer mechanism that will use the
data traffic into account.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105294 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Mladen Turk
2004-09-26 06:56:24 +00:00
parent 8a2d25e4fa
commit 0fc9189541
2 changed files with 23 additions and 7 deletions

View File

@@ -118,6 +118,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
const char *tenc;
int havebody=1;
int isok=1;
apr_off_t bb_len;
/*
* Send the AJP request to the remote server
@@ -192,6 +193,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
conn->worker->hostname);
return HTTP_SERVICE_UNAVAILABLE;
}
conn->worker->s->transfered += bufsiz;
}
}
@@ -206,7 +208,6 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
conn->worker->hostname);
return HTTP_SERVICE_UNAVAILABLE;
}
/* parse the reponse */
result = ajp_parse_type(r, conn->data);
output_brigade = apr_brigade_create(p, r->connection->bucket_alloc);
@@ -248,6 +249,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
"ajp_send_data_msg failed");
break;
}
conn->worker->s->transfered += bufsiz;
} else {
/* something is wrong TC asks for more body but we are
* already at the end of the body data
@@ -304,6 +306,11 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
result = ajp_parse_type(r, conn->data);
}
apr_brigade_destroy(input_brigade);
apr_brigade_length(output_brigade, 0, &bb_len);
if (bb_len != -1)
conn->worker->s->readed += bb_len;
if (!isok)
apr_brigade_destroy(output_brigade);

View File

@@ -250,6 +250,7 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r,
int counter, seen_eos, send_chunks;
apr_status_t status;
apr_bucket_brigade *header_brigade, *body_brigade, *input_brigade;
apr_off_t transfered = 0;
header_brigade = apr_brigade_create(p, origin->bucket_alloc);
body_brigade = apr_brigade_create(p, origin->bucket_alloc);
@@ -482,7 +483,11 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r,
APR_BRIGADE_INSERT_TAIL(header_brigade, e);
e = apr_bucket_flush_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(header_brigade, e);
apr_brigade_length(header_brigade, 0, &transfered);
if (transfered != -1)
conn->worker->s->transfered += transfered;
conn->worker->s->transfered += transfered;
if (send_chunks) {
status = ap_pass_brigade(origin->output_filters, header_brigade);
@@ -630,9 +635,11 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r,
conn->worker->cp->addr, conn->hostname);
return status;
}
apr_brigade_cleanup(body_brigade);
apr_brigade_length(body_brigade, 0, &transfered);
if (transfered != -1)
conn->worker->s->transfered += transfered;
apr_brigade_cleanup(body_brigade);
return APR_SUCCESS;
}
static void process_proxy_header(request_rec* r, proxy_server_conf* c,
@@ -803,7 +810,6 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
* response.
*/
rp->proxyreq = PROXYREQ_RESPONSE;
do {
apr_brigade_cleanup(bb);
@@ -820,6 +826,8 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
"Error reading from remote server");
}
/* XXX: Is this a real headers length send from remote? */
backend->worker->s->readed += len;
/* Is it an HTTP/1 response?
* This is buggy if we ever see an HTTP/1.10
@@ -1023,10 +1031,11 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
AP_MODE_READBYTES,
APR_BLOCK_READ,
conf->io_buffer_size) == APR_SUCCESS) {
#if DEBUGGING
{
apr_off_t readbytes;
apr_brigade_length(bb, 0, &readbytes);
backend->worker->s->readed += readbytes;
#if DEBUGGING
{
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
r->server, "proxy (PID %d): readbytes: %#x",
getpid(), readbytes);