diff --git a/include/lighttpd/log.h b/include/lighttpd/log.h index 21abdc0..92a73c3 100644 --- a/include/lighttpd/log.h +++ b/include/lighttpd/log.h @@ -39,13 +39,13 @@ LI_API const char *remove_path(const char *path); log_split_lines_(srv, vr, LOG_LEVEL_BACKEND, LOG_FLAG_TIMESTAMP, txt, "(backend) %s.%d: "fmt, REMOVE_PATH(__FILE__), __LINE__, __VA_ARGS__) -#define VR_SEGFAULT(vr, fmt, ...) _SEGFAULT(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_ERROR(vr, fmt, ...) _ERROR(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_WARNING(vr, fmt, ...) _WARNING(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_INFO(vr, fmt, ...) _INFO(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_DEBUG(vr, fmt, ...) _DEBUG(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_BACKEND(vr, fmt, ...) _BACKEND(vr->con->srv, vr, fmt, __VA_ARGS__) -#define VR_BACKEND_LINES(vr, txt, fmt, ...) _BACKEND_LINES(vr->con->srv, vr, txt, fmt, __VA_ARGS__) +#define VR_SEGFAULT(vr, fmt, ...) _SEGFAULT(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_ERROR(vr, fmt, ...) _ERROR(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_WARNING(vr, fmt, ...) _WARNING(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_INFO(vr, fmt, ...) _INFO(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_DEBUG(vr, fmt, ...) _DEBUG(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_BACKEND(vr, fmt, ...) _BACKEND(vr->wrk->srv, vr, fmt, __VA_ARGS__) +#define VR_BACKEND_LINES(vr, txt, fmt, ...) _BACKEND_LINES(vr->wrk->srv, vr, txt, fmt, __VA_ARGS__) #define SEGFAULT(srv, fmt, ...) _SEGFAULT(srv, NULL, fmt, __VA_ARGS__) #define ERROR(srv, fmt, ...) _ERROR(srv, NULL, fmt, __VA_ARGS__) diff --git a/include/lighttpd/virtualrequest.h b/include/lighttpd/virtualrequest.h index 940bc3a..73067a7 100644 --- a/include/lighttpd/virtualrequest.h +++ b/include/lighttpd/virtualrequest.h @@ -57,6 +57,7 @@ struct vrequest_ref { struct vrequest { connection *con; + worker *wrk; vrequest_ref *ref; option_value *options; diff --git a/src/actions.c b/src/actions.c index 1a4766a..5ebd119 100644 --- a/src/actions.c +++ b/src/actions.c @@ -145,7 +145,7 @@ void action_stack_init(action_stack *as) { } void action_stack_reset(vrequest *vr, action_stack *as) { - server *srv = vr->con->srv; + server *srv = vr->wrk->srv; guint i; for (i = as->stack->len; i-- > 0; ) { action_stack_element_release(srv, vr, &g_array_index(as->stack, action_stack_element, i)); @@ -155,7 +155,7 @@ void action_stack_reset(vrequest *vr, action_stack *as) { } void action_stack_clear(vrequest *vr, action_stack *as) { - server *srv = vr->con->srv; + server *srv = vr->wrk->srv; guint i; for (i = as->stack->len; i-- > 0; ) { action_stack_element_release(srv, vr, &g_array_index(as->stack, action_stack_element, i)); @@ -189,7 +189,7 @@ handler_t action_execute(vrequest *vr) { action_stack_element *ase; handler_t res; gboolean condres; - server *srv = vr->con->srv; + server *srv = vr->wrk->srv; while (NULL != (ase = action_stack_top(as))) { if (as->backend_failed) { @@ -236,7 +236,7 @@ handler_t action_execute(vrequest *vr) { continue; } - vr->con->wrk->stats.actions_executed++; + vr->wrk->stats.actions_executed++; a = ase->act; switch (a->type) { diff --git a/src/chunk.c b/src/chunk.c index 209b646..ef5d615 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -52,7 +52,7 @@ handler_t chunkfile_open(vrequest *vr, chunkfile *cf) { } if (-1 == (cf->fd = open(cf->name->str, O_RDONLY))) { if (EMFILE == errno) { - server_out_of_fds(vr->con->srv); + server_out_of_fds(vr->wrk->srv); } VR_ERROR(vr, "Couldn't open file '%s': %s", GSTR_SAFE_STR(cf->name), g_strerror(errno)); return HANDLER_ERROR; @@ -361,7 +361,7 @@ void cqlimit_release(cqlimit *cql) { static void cqlimit_lock(cqlimit *cql) { cql->locked = TRUE; if (cql->io_watcher && cql->io_watcher->fd != -1) { - ev_io_rem_events(cql->vr->con->wrk->loop, cql->io_watcher, EV_READ); + ev_io_rem_events(cql->vr->wrk->loop, cql->io_watcher, EV_READ); } if (cql->notify) { cql->notify(cql->vr, cql->context, cql->locked); @@ -371,7 +371,7 @@ static void cqlimit_lock(cqlimit *cql) { static void cqlimit_unlock(cqlimit *cql) { cql->locked = FALSE; if (cql->io_watcher && cql->io_watcher->fd != -1) { - ev_io_add_events(cql->vr->con->wrk->loop, cql->io_watcher, EV_READ); + ev_io_add_events(cql->vr->wrk->loop, cql->io_watcher, EV_READ); } if (cql->notify) { cql->notify(cql->vr, cql->context, cql->locked); diff --git a/src/etag.c b/src/etag.c index 3e51bfe..3d4dbee 100644 --- a/src/etag.c +++ b/src/etag.c @@ -108,7 +108,7 @@ void etag_mutate(GString *mut, GString *etag) { void etag_set_header(vrequest *vr, struct stat *st, gboolean *cachable) { guint flags = CORE_OPTION(CORE_OPTION_ETAG_FLAGS).number; - GString *tmp_str = vr->con->wrk->tmp_str; + GString *tmp_str = vr->wrk->tmp_str; struct tm tm; tristate_t c_able = cachable ? TRI_MAYBE : TRI_FALSE; diff --git a/src/log.c b/src/log.c index 466cac4..e7acff8 100644 --- a/src/log.c +++ b/src/log.c @@ -49,7 +49,7 @@ gboolean log_write_(server *srv, vrequest *vr, log_level_t log_level, guint flag if (vr != NULL) { - if (!srv) srv = vr->con->srv; + if (!srv) srv = vr->wrk->srv; /* get log from connection */ log = g_array_index(CORE_OPTION(CORE_OPTION_LOG).list, log_t*, log_level); if (log == NULL) @@ -102,7 +102,7 @@ gboolean log_write_(server *srv, vrequest *vr, log_level_t log_level, guint flag /* if we have a worker context, we can use its timestamp to save us a call to time() */ if (vr != NULL) - cur_ts = (time_t)CUR_TS(vr->con->wrk); + cur_ts = (time_t)CUR_TS(vr->wrk); else cur_ts = time(NULL); diff --git a/src/modules/mod_cache_disk_etag.c b/src/modules/mod_cache_disk_etag.c index 9c53cfb..6103ca6 100644 --- a/src/modules/mod_cache_disk_etag.c +++ b/src/modules/mod_cache_disk_etag.c @@ -233,7 +233,7 @@ static handler_t cache_etag_handle(vrequest *vr, gpointer param, gpointer *conte GList *etag_entry; http_header *etag; struct stat st; - GString *tmp_str = vr->con->wrk->tmp_str; + GString *tmp_str = vr->wrk->tmp_str; if (!cfile) { if (vr->request.http_method != HTTP_METHOD_GET) return HANDLER_GO_ON; @@ -265,7 +265,7 @@ static handler_t cache_etag_handle(vrequest *vr, gpointer param, gpointer *conte } if (-1 == (cfile->hit_fd = open(cfile->filename->str, O_RDONLY))) { if (EMFILE == errno) { - server_out_of_fds(vr->con->srv); + server_out_of_fds(vr->wrk->srv); } VR_ERROR(vr, "Couldn't open cache file '%s': %s", cfile->filename->str, g_strerror(errno)); return HANDLER_GO_ON; /* no caching */ diff --git a/src/modules/mod_debug.c b/src/modules/mod_debug.c index 71d4110..750f77d 100644 --- a/src/modules/mod_debug.c +++ b/src/modules/mod_debug.c @@ -204,8 +204,8 @@ static void debug_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result, GString *duration = g_string_sized_new(15); g_string_append_printf(html, "

now: %f
io timeout watcher active/repeat: %s/%f

\n", - CUR_TS(vr->con->wrk), ev_is_active(&(vr->con->wrk->io_timeout_queue.timer)) ? "yes":"no", - vr->con->wrk->io_timeout_queue.timer.repeat + CUR_TS(vr->wrk), ev_is_active(&(vr->wrk->io_timeout_queue.timer)) ? "yes":"no", + vr->wrk->io_timeout_queue.timer.repeat ); g_string_append_len(html, CONST_STR_LEN("\n")); @@ -216,7 +216,7 @@ static void debug_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result, for (j = 0; j < cons->len; j++) { mod_debug_data_t *d = &g_array_index(cons, mod_debug_data_t, j); - counter_format((guint64)(CUR_TS(vr->con->wrk) - d->ts), COUNTER_TIME, duration); + counter_format((guint64)(CUR_TS(vr->wrk) - d->ts), COUNTER_TIME, duration); g_string_append_printf(html, "\n", d->remote_addr_str->str, duration->str, @@ -244,7 +244,7 @@ static void debug_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result, g_string_append_len(html, CONST_STR_LEN("\n\n")); - chunkqueue_append_string(vr->con->out, html); + chunkqueue_append_string(vr->out, html); http_header_overwrite(vr->response.headers, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("text/html")); vr->response.http_status = 200; vrequest_joblist_append(vr); @@ -283,7 +283,7 @@ static handler_t debug_show_connections(vrequest *vr, gpointer param, gpointer * VR_DEBUG(vr, "%s", "collecting debug info..."); - ci = collect_start(vr->con->wrk, debug_collect_func, j, debug_collect_cb, j); + ci = collect_start(vr->wrk, debug_collect_func, j, debug_collect_cb, j); *context = ci; /* may be NULL */ } @@ -341,4 +341,4 @@ gboolean mod_debug_free(modules *mods, module *mod) { plugin_free(mods->main, mod->config); return TRUE; -} \ No newline at end of file +} diff --git a/src/modules/mod_dirlist.c b/src/modules/mod_dirlist.c index 0a71b81..cb438f5 100644 --- a/src/modules/mod_dirlist.c +++ b/src/modules/mod_dirlist.c @@ -597,4 +597,4 @@ gboolean mod_dirlist_free(modules *mods, module *mod) { plugin_free(mods->main, mod->config); return TRUE; -} \ No newline at end of file +} diff --git a/src/modules/mod_fastcgi.c b/src/modules/mod_fastcgi.c index f221cfd..845a3f0 100644 --- a/src/modules/mod_fastcgi.c +++ b/src/modules/mod_fastcgi.c @@ -189,7 +189,7 @@ static void fastcgi_connection_free(fastcgi_connection *fcon) { if (!fcon) return; vr = fcon->vr; - ev_io_stop(vr->con->wrk->loop, &fcon->fd_watcher); + ev_io_stop(vr->wrk->loop, &fcon->fd_watcher); fastcgi_context_release(fcon->ctx); if (fcon->fd != -1) close(fcon->fd); @@ -427,7 +427,7 @@ static void fastcgi_send_env(vrequest *vr, fastcgi_connection *fcon) { { GList *i; - GString *tmp = vr->con->wrk->tmp_str; + GString *tmp = vr->wrk->tmp_str; for (i = vr->request.headers->entries.head; NULL != i; i = i->next) { http_header *h = (http_header*) i->data; @@ -462,7 +462,7 @@ static void fastcgi_send_env(vrequest *vr, fastcgi_connection *fcon) { static void fastcgi_forward_request(vrequest *vr, fastcgi_connection *fcon) { stream_send_chunks(fcon->fcgi_out, FCGI_STDIN, fcon->requestid, vr->in); if (fcon->fcgi_out->length > 0) - ev_io_add_events(vr->con->wrk->loop, &fcon->fd_watcher, EV_WRITE); + ev_io_add_events(vr->wrk->loop, &fcon->fd_watcher, EV_WRITE); } static gboolean fastcgi_get_packet(fastcgi_connection *fcon) { @@ -535,11 +535,11 @@ static gboolean fastcgi_parse_response(fastcgi_connection *fcon) { break; case FCGI_STDERR: len = fastcgi_available(fcon); - chunkqueue_extract_to(vr, fcon->fcgi_in, len, vr->con->wrk->tmp_str); + chunkqueue_extract_to(vr, fcon->fcgi_in, len, vr->wrk->tmp_str); if (FASTCGI_OPTION(FASTCGI_OPTION_LOG_PLAIN_ERRORS).boolean) { - log_split_lines(vr->con->srv, vr, LOG_LEVEL_BACKEND, 0, vr->con->wrk->tmp_str->str, ""); + log_split_lines(vr->wrk->srv, vr, LOG_LEVEL_BACKEND, 0, vr->wrk->tmp_str->str, ""); } else { - VR_BACKEND_LINES(vr, vr->con->wrk->tmp_str->str, "%s", "(fcgi-stderr) "); + VR_BACKEND_LINES(vr, vr->wrk->tmp_str->str, "%s", "(fcgi-stderr) "); } chunkqueue_skip(fcon->fcgi_in, len); break; @@ -665,14 +665,14 @@ static handler_t fastcgi_statemachine(vrequest *vr, fastcgi_connection *fcon) { } while (-1 == fcon->fd && errno == EINTR); if (-1 == fcon->fd) { if (errno == EMFILE) { - server_out_of_fds(vr->con->srv); + server_out_of_fds(vr->wrk->srv); } VR_ERROR(vr, "Couldn't open socket: %s", g_strerror(errno)); return HANDLER_ERROR; } fd_init(fcon->fd); ev_io_set(&fcon->fd_watcher, fcon->fd, EV_READ | EV_WRITE); - ev_io_start(vr->con->wrk->loop, &fcon->fd_watcher); + ev_io_start(vr->wrk->loop, &fcon->fd_watcher); /* fall through */ case FS_CONNECTING: @@ -689,7 +689,7 @@ static handler_t fastcgi_statemachine(vrequest *vr, fastcgi_connection *fcon) { return HANDLER_GO_ON; default: VR_ERROR(vr, "Couldn't connect to '%s': %s", - sockaddr_to_string(fcon->ctx->socket, vr->con->wrk->tmp_str, TRUE)->str, + sockaddr_to_string(fcon->ctx->socket, vr->wrk->tmp_str, TRUE)->str, g_strerror(errno)); fastcgi_close(vr, p); vrequest_backend_dead(vr); diff --git a/src/modules/mod_status.c b/src/modules/mod_status.c index 893cd8c..0e2cce5 100644 --- a/src/modules/mod_status.c +++ b/src/modules/mod_status.c @@ -276,7 +276,7 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result 0, 0, G_GUINT64_CONSTANT(0), 0, 0 }; - uptime = CUR_TS(vr->con->wrk) - vr->con->srv->started; + uptime = CUR_TS(vr->wrk) - vr->wrk->srv->started; if (!uptime) uptime = 1; @@ -321,11 +321,11 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result " \n" )); - counter_format((guint64)(CUR_TS(vr->con->wrk) - vr->con->srv->started), COUNTER_TIME, tmpstr); + counter_format((guint64)(CUR_TS(vr->wrk) - vr->wrk->srv->started), COUNTER_TIME, tmpstr); g_string_append_printf(html, html_top, vr->request.uri.host->str, tmpstr->str, - vr->con->srv->started_str->str + vr->wrk->srv->started_str->str ); @@ -480,7 +480,7 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result for (j = 0; j < sd->connections->len; j++) { mod_status_con_data *cd = &g_array_index(sd->connections, mod_status_con_data, j); - counter_format((guint64)(CUR_TS(vr->con->wrk) - cd->ts), COUNTER_TIME, ts); + counter_format((guint64)(CUR_TS(vr->wrk) - cd->ts), COUNTER_TIME, ts); counter_format(cd->bytes_in, COUNTER_BYTES, bytes_in); counter_format(cd->bytes_in_5s_diff / G_GUINT64_CONSTANT(5), COUNTER_BYTES, bytes_in_5s); counter_format(cd->bytes_out, COUNTER_BYTES, bytes_out); @@ -536,7 +536,7 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result " \n" "\n" )); - chunkqueue_append_string(vr->con->out, html); + chunkqueue_append_string(vr->out, html); http_header_overwrite(vr->response.headers, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("text/html")); g_string_free(count_req, TRUE); @@ -564,7 +564,7 @@ static handler_t status_page_handle(vrequest *vr, gpointer param, gpointer *cont VR_DEBUG(vr, "%s", "collecting stats..."); - ci = collect_start(vr->con->wrk, status_collect_func, NULL, status_collect_cb, j); + ci = collect_start(vr->wrk, status_collect_func, NULL, status_collect_cb, j); *context = ci; /* may be NULL */ } diff --git a/src/network.c b/src/network.c index 913fe53..adb34ad 100644 --- a/src/network.c +++ b/src/network.c @@ -38,7 +38,7 @@ ssize_t net_read(int fd, void *buf, ssize_t nbyte) { network_status_t network_write(vrequest *vr, int fd, chunkqueue *cq) { network_status_t res; - ev_tstamp ts, now = CUR_TS(vr->con->wrk); + ev_tstamp ts, now = CUR_TS(vr->wrk); worker *wrk; #ifdef TCP_CORK int corked = 0; @@ -47,7 +47,7 @@ network_status_t network_write(vrequest *vr, int fd, chunkqueue *cq) { if (CORE_OPTION(CORE_OPTION_THROTTLE).number) { /* throttling is enabled */ - if (G_UNLIKELY((now - vr->con->throttle.ts) > vr->con->wrk->throttle_queue.delay)) { + if (G_UNLIKELY((now - vr->con->throttle.ts) > vr->wrk->throttle_queue.delay)) { vr->con->throttle.magazine += CORE_OPTION(CORE_OPTION_THROTTLE).number * (now - vr->con->throttle.ts); if (vr->con->throttle.magazine > CORE_OPTION(CORE_OPTION_THROTTLE).number) vr->con->throttle.magazine = CORE_OPTION(CORE_OPTION_THROTTLE).number; @@ -85,7 +85,7 @@ network_status_t network_write(vrequest *vr, int fd, chunkqueue *cq) { #endif /* stats */ - wrk = vr->con->wrk; + wrk = vr->wrk; wrk->stats.bytes_out += wrote; vr->con->stats.bytes_out += wrote; @@ -93,21 +93,21 @@ network_status_t network_write(vrequest *vr, int fd, chunkqueue *cq) { ts = CUR_TS(wrk); if ((ts - vr->con->stats.last_avg) >= 5.0) { - vr->con->stats.bytes_out_5s_diff = vr->con->wrk->stats.bytes_out - vr->con->wrk->stats.bytes_out_5s; + vr->con->stats.bytes_out_5s_diff = vr->wrk->stats.bytes_out - vr->wrk->stats.bytes_out_5s; vr->con->stats.bytes_out_5s = vr->con->stats.bytes_out; vr->con->stats.last_avg = ts; } /* only update once a second, the cast is to round the timestamp */ if ((vr->con->io_timeout_elem.ts + 1.) < now) - waitqueue_push(&vr->con->wrk->io_timeout_queue, &vr->con->io_timeout_elem); + waitqueue_push(&vr->wrk->io_timeout_queue, &vr->con->io_timeout_elem); vr->con->throttle.magazine = write_bytes; /* check if throttle magazine is empty */ if (CORE_OPTION(CORE_OPTION_THROTTLE).number && write_bytes == 0) { /* remove EV_WRITE from sockwatcher for now */ - ev_io_rem_events(vr->con->wrk->loop, &vr->con->sock_watcher, EV_WRITE); - waitqueue_push(&vr->con->wrk->throttle_queue, &vr->con->throttle.queue_elem); + ev_io_rem_events(vr->wrk->loop, &vr->con->sock_watcher, EV_WRITE); + waitqueue_push(&vr->wrk->throttle_queue, &vr->con->throttle.queue_elem); return NETWORK_STATUS_WAIT_FOR_AIO_EVENT; } @@ -119,7 +119,7 @@ network_status_t network_read(vrequest *vr, int fd, chunkqueue *cq) { off_t max_read = 16 * blocksize; /* 256k */ ssize_t r; off_t len = 0; - worker *wrk = vr->con->wrk; + worker *wrk = vr->wrk; ev_tstamp now = CUR_TS(wrk); if (cq->limit && cq->limit->limit > 0) { @@ -134,7 +134,7 @@ network_status_t network_read(vrequest *vr, int fd, chunkqueue *cq) { /* only update once a second */ if ((vr->con->io_timeout_elem.ts + 1.) < now) - waitqueue_push(&vr->con->wrk->io_timeout_queue, &vr->con->io_timeout_elem); + waitqueue_push(&vr->wrk->io_timeout_queue, &vr->con->io_timeout_elem); do { GByteArray *buf = g_byte_array_sized_new(blocksize); @@ -162,7 +162,7 @@ network_status_t network_read(vrequest *vr, int fd, chunkqueue *cq) { len += r; /* stats */ - wrk = vr->con->wrk; + wrk = vr->wrk; wrk->stats.bytes_in += r; vr->con->stats.bytes_in += r; diff --git a/src/plugin.c b/src/plugin.c index f20f8b6..3f8b168 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -338,7 +338,7 @@ void plugins_handle_close(connection *con) { } void plugins_handle_vrclose(vrequest *vr) { - GArray *a = vr->con->srv->plugins_handle_vrclose; + GArray *a = vr->wrk->srv->plugins_handle_vrclose; guint i, len = a->len; for (i = 0; i < len; i++) { plugin *p = g_array_index(a, plugin*, i); diff --git a/src/stat_cache.c b/src/stat_cache.c index 1dc6133..dfbf7fa 100644 --- a/src/stat_cache.c +++ b/src/stat_cache.c @@ -253,7 +253,7 @@ handler_t stat_cache_get_dirlist(vrequest *vr, GString *path, stat_cache_entry * stat_cache_entry *sce; guint i; - sc = vr->con->wrk->stat_cache; + sc = vr->wrk->stat_cache; sce = g_hash_table_lookup(sc->dirlists, path); if (sce) { @@ -292,7 +292,7 @@ handler_t stat_cache_get(vrequest *vr, GString *path, struct stat *st, int *err, stat_cache_entry *sce; guint i; - sc = vr->con->wrk->stat_cache; + sc = vr->wrk->stat_cache; sce = g_hash_table_lookup(sc->entries, path); if (sce) { diff --git a/src/virtualrequest.c b/src/virtualrequest.c index 9374aa5..1abdf4e 100644 --- a/src/virtualrequest.c +++ b/src/virtualrequest.c @@ -103,6 +103,7 @@ vrequest* vrequest_new(connection *con, vrequest_handler handle_response_headers vrequest *vr = g_slice_new0(vrequest); vr->con = con; + vr->wrk = con->wrk; vr->ref = g_slice_new0(vrequest_ref); vr->ref->refcount = 1; vr->ref->vr = vr; @@ -154,11 +155,11 @@ void vrequest_free(vrequest* vr) { filters_clean(vr, &vr->filters_out); 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->con->wrk->job_queue, &vr->job_queue_link); + g_queue_unlink(&vr->wrk->job_queue, &vr->job_queue_link); g_atomic_int_set(&vr->queued, 0); } - g_slice_free1(vr->con->srv->option_def_values->len * sizeof(option_value), vr->options); + g_slice_free1(vr->wrk->srv->option_def_values->len * sizeof(option_value), vr->options); for (i = 0; i < vr->stat_cache_entries->len; i++) { @@ -199,7 +200,7 @@ void vrequest_reset(vrequest *vr) { filters_reset(vr, &vr->filters_out); 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->con->wrk->job_queue, &vr->job_queue_link); + g_queue_unlink(&vr->wrk->job_queue, &vr->job_queue_link); g_atomic_int_set(&vr->queued, 0); } @@ -208,7 +209,7 @@ void vrequest_reset(vrequest *vr) { stat_cache_entry_release(vr, sce); } - memcpy(vr->options, vr->con->srv->option_def_values->data, vr->con->srv->option_def_values->len * sizeof(option_value)); + memcpy(vr->options, vr->wrk->srv->option_def_values->data, vr->wrk->srv->option_def_values->len * sizeof(option_value)); if (1 != g_atomic_int_get(&vr->ref->refcount)) { /* If we are not the only user of vr->ref we have to get a new one and detach the old */ @@ -468,16 +469,16 @@ void vrequest_state_machine(vrequest *vr) { } void vrequest_joblist_append(vrequest *vr) { - GQueue *const q = &vr->con->wrk->job_queue; - worker *wrk = vr->con->wrk; + worker *wrk = vr->wrk; + GQueue *const q = &wrk->job_queue; if (!g_atomic_int_compare_and_exchange(&vr->queued, 0, 1)) return; /* already in queue */ g_queue_push_tail_link(q, &vr->job_queue_link); ev_timer_start(wrk->loop, &wrk->job_queue_watcher); } void vrequest_joblist_append_async(vrequest *vr) { - GAsyncQueue *const q = vr->con->wrk->job_async_queue; - worker *wrk = vr->con->wrk; + worker *wrk = vr->wrk; + GAsyncQueue *const q = wrk->job_async_queue; if (!g_atomic_int_compare_and_exchange(&vr->queued, 0, 1)) return; /* already in queue */ g_async_queue_push(q, vrequest_acquire_ref(vr)); ev_async_send(wrk->loop, &wrk->job_async_queue_watcher);
ClientDuration
%s%sdebug