Move the cqlimit reset/set back to connection.c (vrequest_reset may be called with data in con->raw_in, so cqlimit_reset isn't a good idea)

personal/stbuehler/wip
Stefan Bühler 14 years ago
parent 402c45dc45
commit 3d50819d14

@ -471,8 +471,10 @@ liConnection* li_connection_new(liWorker *wrk) {
con->in = con->mainvr->vr_in;
con->out = con->mainvr->vr_out;
li_chunkqueue_set_limit(con->raw_in, con->mainvr->vr_in->limit);
li_chunkqueue_set_limit(con->raw_out, con->mainvr->vr_out->limit);
li_chunkqueue_set_limit(con->raw_in, con->in->limit);
li_chunkqueue_set_limit(con->raw_out, con->out->limit);
li_cqlimit_set_limit(con->raw_in->limit, 512*1024);
li_cqlimit_set_limit(con->raw_out->limit, 512*1024);
con->keep_alive_data.link = NULL;
con->keep_alive_data.timeout = 0;
@ -517,6 +519,15 @@ void li_connection_reset(liConnection *con) {
li_chunkqueue_reset(con->raw_out);
li_vrequest_reset(con->mainvr, FALSE);
/* restore chunkqueue limits */
li_chunkqueue_set_limit(con->raw_in, con->in->limit);
li_chunkqueue_set_limit(con->raw_out, con->out->limit);
li_cqlimit_reset(con->raw_in->limit);
li_cqlimit_reset(con->raw_out->limit);
li_cqlimit_set_limit(con->raw_in->limit, 512*1024);
li_cqlimit_set_limit(con->raw_out->limit, 512*1024);
li_http_request_parser_reset(&con->req_parser_ctx);
g_string_truncate(con->remote_addr_str, 0);
@ -623,6 +634,12 @@ static void li_connection_reset_keep_alive(liConnection *con) {
li_vrequest_reset(con->mainvr, TRUE);
li_http_request_parser_reset(&con->req_parser_ctx);
/* restore chunkqueue limits (don't reset, we might still have some data in raw_in) */
li_chunkqueue_set_limit(con->raw_in, con->in->limit);
li_chunkqueue_set_limit(con->raw_out, con->out->limit);
li_cqlimit_set_limit(con->raw_in->limit, 512*1024);
li_cqlimit_set_limit(con->raw_out->limit, 512*1024);
con->ts = CUR_TS(con->wrk);
/* reset stats */

@ -168,8 +168,6 @@ liVRequest* li_vrequest_new(liConnection *con, liVRequestHandlerCB handle_respon
li_chunkqueue_set_limit(vr->in_memory, vr->in->limit);
li_chunkqueue_use_limit(vr->out, vr);
li_chunkqueue_set_limit(vr->vr_out, vr->out->limit);
li_cqlimit_set_limit(vr->in->limit, 512*1024);
li_cqlimit_set_limit(vr->out->limit, 512*1024);
vr->in_buffer_state.flush_limit = -1; /* wait until upload is complete */
vr->in_buffer_state.split_on_file_chunks = FALSE;
@ -246,17 +244,11 @@ void li_vrequest_reset(liVRequest *vr, gboolean keepalive) {
vr->in_buffer_state.flush_limit = -1; /* wait until upload is complete */
vr->in_buffer_state.split_on_file_chunks = FALSE;
/* restore chunkqueue limits */
li_cqlimit_reset(vr->in->limit);
li_cqlimit_reset(vr->out->limit);
li_chunkqueue_use_limit(vr->in, vr);
li_chunkqueue_set_limit(vr->vr_in, vr->in->limit);
li_chunkqueue_set_limit(vr->in_memory, vr->in->limit);
li_chunkqueue_use_limit(vr->out, vr);
li_chunkqueue_set_limit(vr->vr_out, vr->out->limit);
li_cqlimit_set_limit(vr->in->limit, 512*1024);
li_cqlimit_set_limit(vr->out->limit, 512*1024);
if (g_atomic_int_get(&vr->queued)) { /* atomic access shouldn't be needed here; no one else can access vr here... */
g_queue_unlink(&vr->wrk->job_queue, &vr->job_queue_link);

Loading…
Cancel
Save