[MINOR] slightly rebalance stats_dump_{raw,http}

Both should process the response buffer equally. They now both
clear the hijack bit once done, and both receive a pointer to
the response buffer in their arguments.
This commit is contained in:
Willy Tarreau 2008-12-07 18:30:00 +01:00
parent 01bf8675ed
commit 0a46489228
3 changed files with 11 additions and 12 deletions

View File

@ -44,9 +44,9 @@
#define STATS_ST_REP 2 #define STATS_ST_REP 2
#define STATS_ST_CLOSE 3 #define STATS_ST_CLOSE 3
int stats_dump_raw(struct session *s, struct uri_auth *uri); int stats_dump_raw(struct session *s, struct buffer *rep, struct uri_auth *uri);
void stats_dump_raw_to_buffer(struct session *s, struct buffer *req); void stats_dump_raw_to_buffer(struct session *s, struct buffer *req);
int stats_dump_http(struct session *s, struct uri_auth *uri); int stats_dump_http(struct session *s, struct buffer *rep, struct uri_auth *uri);
int stats_dump_proxy(struct session *s, struct proxy *px, struct uri_auth *uri); int stats_dump_proxy(struct session *s, struct proxy *px, struct uri_auth *uri);

View File

@ -182,10 +182,10 @@ int print_csv_header(struct chunk *msg, int size)
* <uri>. s->data_ctx must have been zeroed first, and the flags properly set. * <uri>. s->data_ctx must have been zeroed first, and the flags properly set.
* It returns 0 if it had to stop writing data and an I/O is needed, 1 if the * It returns 0 if it had to stop writing data and an I/O is needed, 1 if the
* dump is finished and the session must be closed, or -1 in case of any error. * dump is finished and the session must be closed, or -1 in case of any error.
* It automatically clears the HIJACK bit from the response buffer.
*/ */
int stats_dump_raw(struct session *s, struct uri_auth *uri) int stats_dump_raw(struct session *s, struct buffer *rep, struct uri_auth *uri)
{ {
struct buffer *rep = s->rep;
struct proxy *px; struct proxy *px;
struct chunk msg; struct chunk msg;
unsigned int up; unsigned int up;
@ -276,13 +276,15 @@ int stats_dump_raw(struct session *s, struct uri_auth *uri)
case DATA_ST_END: case DATA_ST_END:
s->data_state = DATA_ST_FIN; s->data_state = DATA_ST_FIN;
return 1; /* fall through */
case DATA_ST_FIN: case DATA_ST_FIN:
buffer_stop_hijack(rep);
return 1; return 1;
default: default:
/* unknown state ! */ /* unknown state ! */
buffer_stop_hijack(rep);
return -1; return -1;
} }
} }
@ -292,15 +294,13 @@ int stats_dump_raw(struct session *s, struct uri_auth *uri)
* calls stats_dump_raw(), and releases the buffer's hijack bit when the dump * calls stats_dump_raw(), and releases the buffer's hijack bit when the dump
* is finished. * is finished.
*/ */
void stats_dump_raw_to_buffer(struct session *s, struct buffer *req) void stats_dump_raw_to_buffer(struct session *s, struct buffer *rep)
{ {
if (s->ana_state != STATS_ST_REP) if (s->ana_state != STATS_ST_REP)
return; return;
if (stats_dump_raw(s, NULL) != 0) { if (stats_dump_raw(s, rep, NULL) != 0)
buffer_stop_hijack(s->rep);
s->ana_state = STATS_ST_CLOSE; s->ana_state = STATS_ST_CLOSE;
}
return; return;
} }
@ -315,9 +315,8 @@ void stats_dump_raw_to_buffer(struct session *s, struct buffer *req)
* 1 if the dump is finished and the session must be closed, or -1 in case of * 1 if the dump is finished and the session must be closed, or -1 in case of
* any error. * any error.
*/ */
int stats_dump_http(struct session *s, struct uri_auth *uri) int stats_dump_http(struct session *s, struct buffer *rep, struct uri_auth *uri)
{ {
struct buffer *rep = s->rep;
struct proxy *px; struct proxy *px;
struct chunk msg; struct chunk msg;
unsigned int up; unsigned int up;

View File

@ -2999,7 +2999,7 @@ void produce_content(struct session *s, struct buffer *rep)
} }
else if (s->data_source == DATA_SRC_STATS) { else if (s->data_source == DATA_SRC_STATS) {
/* dump server statistics */ /* dump server statistics */
int ret = stats_dump_http(s, s->be->uri_auth); int ret = stats_dump_http(s, rep, s->be->uri_auth);
if (ret >= 0) if (ret >= 0)
return; return;
/* -1 indicates an error */ /* -1 indicates an error */