Updated Branches: refs/heads/master 218cccb18 -> d9d4c8c4d
cleaned up formating of the code and some comments, added documentation to the README Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d9d4c8c4 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d9d4c8c4 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d9d4c8c4 Branch: refs/heads/master Commit: d9d4c8c4d1c1052a5d9b4b0b8977e6cc59fa331e Parents: 218cccb Author: Bryan Call <[email protected]> Authored: Tue Jun 4 13:17:54 2013 -0700 Committer: Bryan Call <[email protected]> Committed: Tue Jun 4 13:17:54 2013 -0700 ---------------------------------------------------------------------- tools/lighttpd_mod_generator/README | 15 ++ tools/lighttpd_mod_generator/mod_generator.c | 164 ++++++++++---------- 2 files changed, 97 insertions(+), 82 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d9d4c8c4/tools/lighttpd_mod_generator/README ---------------------------------------------------------------------- diff --git a/tools/lighttpd_mod_generator/README b/tools/lighttpd_mod_generator/README index 434c6ea..bbaf47f 100644 --- a/tools/lighttpd_mod_generator/README +++ b/tools/lighttpd_mod_generator/README @@ -1,6 +1,21 @@ ATS (Apache Traffic Server) version of lighttpd lighttpd is use as an origin server for testing. +Format of the URL: +http://server:port/bytes-id-sleeptime-{cache|no_cache} + +bytes - number of bytes for the response body +id - arbitrary id that can be used for uniqueness +sleeptime - milliseconds lighttpd should sleep before sending a response +{cache|no_cache} - add headers to make the response cacheable or not + +Example URLs: +URL to test the caching of ATS, 1KB body and don't delay the response +http://myserver.com:8080/1024-123-0-cache + +URL to test the proxying of ATS, 2KB body and delay the resonse for 1ms +http://myserver.com:8080/2048-123-1-no_cache + Version 1.4.30_1 (3/28/12, bcall) - Updated version of lighttpd http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d9d4c8c4/tools/lighttpd_mod_generator/mod_generator.c ---------------------------------------------------------------------- diff --git a/tools/lighttpd_mod_generator/mod_generator.c b/tools/lighttpd_mod_generator/mod_generator.c index e8e3410..e08d9b2 100644 --- a/tools/lighttpd_mod_generator/mod_generator.c +++ b/tools/lighttpd_mod_generator/mod_generator.c @@ -55,7 +55,7 @@ static char static_data[8192]; /* plugin config for all request/connections */ typedef struct { - array *match; + array *match; } plugin_config; typedef struct { @@ -70,7 +70,7 @@ typedef struct { } plugin_data; typedef struct { - size_t foo; + size_t foo; } handler_ctx; // static handler_ctx * handler_ctx_init() { @@ -88,139 +88,139 @@ typedef struct { /* init the plugin data */ INIT_FUNC(mod_generator_init) { - plugin_data *p; + plugin_data *p; - p = calloc(1, sizeof(*p)); + p = calloc(1, sizeof(*p)); - p->match_buf = buffer_init(); + p->match_buf = buffer_init(); - return p; + return p; } /* detroy the plugin data */ FREE_FUNC(mod_generator_free) { - plugin_data *p = p_d; + plugin_data *p = p_d; - UNUSED(srv); + UNUSED(srv); - if (!p) return HANDLER_GO_ON; + if (!p) return HANDLER_GO_ON; - if (p->config_storage) { - size_t i; + if (p->config_storage) { + size_t i; - for (i = 0; i < srv->config_context->used; i++) { - plugin_config *s = p->config_storage[i]; + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; - if (!s) continue; + if (!s) continue; - array_free(s->match); + array_free(s->match); - free(s); - } - free(p->config_storage); - } + free(s); + } + free(p->config_storage); + } - buffer_free(p->match_buf); + buffer_free(p->match_buf); - free(p); + free(p); - return HANDLER_GO_ON; + return HANDLER_GO_ON; } /* handle plugin config and check values */ SETDEFAULTS_FUNC(mod_generator_set_defaults) { - plugin_data *p = p_d; - size_t i = 0; + plugin_data *p = p_d; + size_t i = 0; - config_values_t cv[] = { - { "generator.array", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION }, /* 0 */ - { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET } - }; + config_values_t cv[] = { + { "generator.array", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION }, /* 0 */ + { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET } + }; - if (!p) return HANDLER_ERROR; + if (!p) return HANDLER_ERROR; - p->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *)); + p->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *)); - for (i = 0; i < srv->config_context->used; i++) { - plugin_config *s; + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s; - s = calloc(1, sizeof(plugin_config)); - s->match = array_init(); + s = calloc(1, sizeof(plugin_config)); + s->match = array_init(); - cv[0].destination = s->match; + cv[0].destination = s->match; - p->config_storage[i] = s; + p->config_storage[i] = s; - if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) { - return HANDLER_ERROR; - } - } + if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) { + return HANDLER_ERROR; + } + } - return HANDLER_GO_ON; + return HANDLER_GO_ON; } -#define PATCH(x) \ - p->conf.x = s->x; +#define PATCH(x) \ + p->conf.x = s->x; static int mod_generator_patch_connection(server *srv, connection *con, plugin_data *p) { - size_t i, j; - plugin_config *s = p->config_storage[0]; + size_t i, j; + plugin_config *s = p->config_storage[0]; - PATCH(match); + PATCH(match); - /* skip the first, the global context */ - for (i = 1; i < srv->config_context->used; i++) { - data_config *dc = (data_config *)srv->config_context->data[i]; - s = p->config_storage[i]; + /* skip the first, the global context */ + for (i = 1; i < srv->config_context->used; i++) { + data_config *dc = (data_config *)srv->config_context->data[i]; + s = p->config_storage[i]; - /* condition didn't match */ - if (!config_check_cond(srv, con, dc)) continue; + /* condition didn't match */ + if (!config_check_cond(srv, con, dc)) continue; - /* merge config */ - for (j = 0; j < dc->value->used; j++) { - data_unset *du = dc->value->data[j]; + /* merge config */ + for (j = 0; j < dc->value->used; j++) { + data_unset *du = dc->value->data[j]; - if (buffer_is_equal_string(du->key, CONST_STR_LEN("generator.array"))) { - PATCH(match); - } - } - } + if (buffer_is_equal_string(du->key, CONST_STR_LEN("generator.array"))) { + PATCH(match); + } + } + } - return 0; + return 0; } #undef PATCH URIHANDLER_FUNC(mod_generator_uri_handler) { - plugin_data *p = p_d; - int s_len; - size_t k; + plugin_data *p = p_d; + int s_len; + size_t k; - UNUSED(srv); + UNUSED(srv); - if (con->mode != DIRECT) return HANDLER_GO_ON; + if (con->mode != DIRECT) return HANDLER_GO_ON; - if (con->uri.path->used == 0) return HANDLER_GO_ON; + if (con->uri.path->used == 0) return HANDLER_GO_ON; - mod_generator_patch_connection(srv, con, p); + mod_generator_patch_connection(srv, con, p); - s_len = con->uri.path->used - 1; + s_len = con->uri.path->used - 1; - for (k = 0; k < p->conf.match->used; k++) { - data_string *ds = (data_string *)p->conf.match->data[k]; - int ct_len = ds->value->used - 1; + for (k = 0; k < p->conf.match->used; k++) { + data_string *ds = (data_string *)p->conf.match->data[k]; + int ct_len = ds->value->used - 1; - if (ct_len > s_len) continue; - if (ds->value->used == 0) continue; + if (ct_len > s_len) continue; + if (ds->value->used == 0) continue; - if (0 == strncmp(con->uri.path->ptr + s_len - ct_len, ds->value->ptr, ct_len)) { - con->http_status = 403; + if (0 == strncmp(con->uri.path->ptr + s_len - ct_len, ds->value->ptr, ct_len)) { + con->http_status = 403; - return HANDLER_FINISHED; - } - } + return HANDLER_FINISHED; + } + } - /* not found */ - return HANDLER_GO_ON; + /* not found */ + return HANDLER_GO_ON; } @@ -260,7 +260,7 @@ URIHANDLER_FUNC(mod_generator_subrequest_handler) { } start = end + 1; - // get the id from the url + // get the time to sleep from the url int64_t sleepval = strtoll(start, &end, 10); if (start == end && id < 0 && *start != '-') {
