You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by vm...@apache.org on 2017/05/11 15:24:56 UTC
[trafficserver] branch master updated: Coverity 1216302, 1022033,
1022032, 1022031: State While Revalidate
This is an automated email from the ASF dual-hosted git repository.
vmamidi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 5aaae18 Coverity 1216302,1022033,1022032,1022031: State While Revalidate
5aaae18 is described below
commit 5aaae187ec26465610d19a9b31d3ce2b1244a712
Author: Vijay Mamidi <vi...@yahoo.com>
AuthorDate: Wed May 10 22:48:06 2017 -0400
Coverity 1216302,1022033,1022032,1022031: State While Revalidate
---
.../stale_while_revalidate.c | 97 ++++++++++++----------
1 file changed, 55 insertions(+), 42 deletions(-)
diff --git a/plugins/experimental/stale_while_revalidate/stale_while_revalidate.c b/plugins/experimental/stale_while_revalidate/stale_while_revalidate.c
index 5ce1181..05301dd 100644
--- a/plugins/experimental/stale_while_revalidate/stale_while_revalidate.c
+++ b/plugins/experimental/stale_while_revalidate/stale_while_revalidate.c
@@ -125,7 +125,7 @@ free_response_info(ResponseInfo *resp_info)
static RequestInfo *
create_request_info(TSHttpTxn txn)
{
- RequestInfo *req_info;
+ RequestInfo *req_info = NULL;
char *url;
int url_len;
TSMBuffer buf;
@@ -133,28 +133,29 @@ create_request_info(TSHttpTxn txn)
const struct sockaddr *sa;
- req_info = (RequestInfo *)TSmalloc(sizeof(RequestInfo));
- memset(req_info, 0, sizeof(RequestInfo));
+ if (TSHttpTxnClientReqGet(txn, &buf, &loc) == TS_SUCCESS) {
+ req_info = (RequestInfo *)TSmalloc(sizeof(RequestInfo));
+ memset(req_info, 0, sizeof(RequestInfo));
- url = TSHttpTxnEffectiveUrlStringGet(txn, &url_len);
- req_info->effective_url = TSstrndup(url, url_len);
- TSfree(url);
+ url = TSHttpTxnEffectiveUrlStringGet(txn, &url_len);
+ req_info->effective_url = TSstrndup(url, url_len);
+ TSfree(url);
- TSHttpTxnClientReqGet(txn, &buf, &loc);
- req_info->buf = TSMBufferCreate();
- TSHttpHdrClone(req_info->buf, buf, loc, &(req_info->http_hdr_loc));
- TSHandleMLocRelease(buf, TS_NULL_MLOC, loc);
+ req_info->buf = TSMBufferCreate();
+ TSHttpHdrClone(req_info->buf, buf, loc, &(req_info->http_hdr_loc));
+ TSHandleMLocRelease(buf, TS_NULL_MLOC, loc);
- sa = TSHttpTxnClientAddrGet(txn);
- switch (sa->sa_family) {
- case AF_INET:
- memcpy(&req_info->client_addr.sin, sa, sizeof(struct sockaddr_in));
- break;
- case AF_INET6:
- memcpy(&req_info->client_addr.sin6, sa, sizeof(struct sockaddr_in6));
- break;
- default:
- break;
+ sa = TSHttpTxnClientAddrGet(txn);
+ switch (sa->sa_family) {
+ case AF_INET:
+ memcpy(&req_info->client_addr.sin, sa, sizeof(struct sockaddr_in));
+ break;
+ case AF_INET6:
+ memcpy(&req_info->client_addr.sin6, sa, sizeof(struct sockaddr_in6));
+ break;
+ default:
+ break;
+ }
}
return req_info;
@@ -376,9 +377,12 @@ consume_resource(TSCont cont, TSEvent event ATS_UNUSED, void *edata ATS_UNUSED)
TSHttpTxnCacheLookupStatusSet(state->txn, TS_CACHE_LOOKUP_HIT_FRESH);
} else {
TSDebug(PLUGIN_NAME, "Attempting new cache lookup");
- TSHttpHdrUrlGet(state->req_info->buf, state->req_info->http_hdr_loc, &url_loc);
- TSHttpTxnNewCacheLookupDo(state->txn, state->req_info->buf, url_loc);
- TSHandleMLocRelease(state->req_info->buf, state->req_info->http_hdr_loc, url_loc);
+ if (TSHttpHdrUrlGet(state->req_info->buf, state->req_info->http_hdr_loc, &url_loc) == TS_SUCCESS) {
+ TSHttpTxnNewCacheLookupDo(state->txn, state->req_info->buf, url_loc);
+ TSHandleMLocRelease(state->req_info->buf, state->req_info->http_hdr_loc, url_loc);
+ } else {
+ TSError("[%s] Error getting the URL from the transaction",PLUGIN_NAME);
+ }
// TODO add txn translation hook and pass result along, maybe inside continuation?
// TSHttpTxnHookAdd(state->txn, TS_HTTP_RESPONSE_TRANSFORM_HOOK, TSTransformCreate(replace_transform, state->txn));
}
@@ -395,7 +399,7 @@ consume_resource(TSCont cont, TSEvent event ATS_UNUSED, void *edata ATS_UNUSED)
TSContDestroy(cont);
break;
default:
- TSError("[stale_while_revalidate] Unknown event %d.", event);
+ TSError("[%s] Unknown event %d.", PLUGIN_NAME,event);
break;
}
@@ -527,12 +531,14 @@ main_plugin(TSCont cont, TSEvent event, void *edata)
state->plugin_config = (config_t *)TSContDataGet(cont);
state->req_info = create_request_info(txn);
- time(&state->txn_start);
+ if (state->req_info != NULL) {
+ time(&state->txn_start);
- TSHttpTxnArgSet(txn, state->plugin_config->txn_slot, (void *)state);
- TSHttpTxnHookAdd(txn, TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK, cont);
+ TSHttpTxnArgSet(txn, state->plugin_config->txn_slot, (void *)state);
+ TSHttpTxnHookAdd(txn, TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK, cont);
- TSDebug(PLUGIN_NAME, "tracking state %p from txn %p for %s", state, txn, state->req_info->effective_url);
+ TSDebug(PLUGIN_NAME, "tracking state %p from txn %p for %s", state, txn, state->req_info->effective_url);
+ }
}
TSHttpTxnReenable(txn, TS_EVENT_HTTP_CONTINUE);
@@ -660,12 +666,15 @@ main_plugin(TSCont cont, TSEvent event, void *edata)
case TS_EVENT_HTTP_SEND_RESPONSE_HDR:
TSDebug(PLUGIN_NAME, "set warning header");
- TSHttpTxnClientRespGet(txn, &buf, &loc);
- TSMimeHdrFieldCreateNamed(buf, loc, TS_MIME_FIELD_WARNING, TS_MIME_LEN_WARNING, &warn_loc);
- TSMimeHdrFieldValueStringInsert(buf, loc, warn_loc, -1, HTTP_VALUE_STALE_WARNING, strlen(HTTP_VALUE_STALE_WARNING));
- TSMimeHdrFieldAppend(buf, loc, warn_loc);
- TSHandleMLocRelease(buf, loc, warn_loc);
- TSHandleMLocRelease(buf, TS_NULL_MLOC, loc);
+ if (TSHttpTxnClientRespGet(txn, &buf, &loc) == TS_SUCCESS) {
+ TSMimeHdrFieldCreateNamed(buf, loc, TS_MIME_FIELD_WARNING, TS_MIME_LEN_WARNING, &warn_loc);
+ TSMimeHdrFieldValueStringInsert(buf, loc, warn_loc, -1, HTTP_VALUE_STALE_WARNING, strlen(HTTP_VALUE_STALE_WARNING));
+ TSMimeHdrFieldAppend(buf, loc, warn_loc);
+ TSHandleMLocRelease(buf, loc, warn_loc);
+ TSHandleMLocRelease(buf, TS_NULL_MLOC, loc);
+ } else {
+ TSError("[%s] Error while getting response from txn", PLUGIN_NAME);
+ }
TSHttpTxnReenable(txn, TS_EVENT_HTTP_CONTINUE);
break;
default:
@@ -738,15 +747,19 @@ TSPluginInit(int argc, const char *argv[])
}
if (plugin_config->log_info.all || plugin_config->log_info.stale_while_revalidate || plugin_config->log_info.stale_if_error) {
- TSTextLogObjectCreate(plugin_config->log_info.filename, TS_LOG_MODE_ADD_TIMESTAMP, &(plugin_config->log_info.object));
+ if (TSTextLogObjectCreate(plugin_config->log_info.filename, TS_LOG_MODE_ADD_TIMESTAMP, &(plugin_config->log_info.object)) !=
+ TS_SUCCESS) {
+ TSError("[%s] Error getting the URL from the transaction",PLUGIN_NAME);
+ return;
+ }
}
- }
- // proxy.config.http.insert_age_in_response
- TSHttpArgIndexReserve(PLUGIN_NAME, "txn state info", &(plugin_config->txn_slot));
- main_cont = TSContCreate(main_plugin, NULL);
- TSContDataSet(main_cont, (void *)plugin_config);
- TSHttpHookAdd(TS_HTTP_READ_REQUEST_HDR_HOOK, main_cont);
+ // proxy.config.http.insert_age_in_response
+ TSHttpArgIndexReserve(PLUGIN_NAME, "txn state info", &(plugin_config->txn_slot));
+ main_cont = TSContCreate(main_plugin, NULL);
+ TSContDataSet(main_cont, (void *)plugin_config);
+ TSHttpHookAdd(TS_HTTP_READ_REQUEST_HDR_HOOK, main_cont);
- TSDebug(PLUGIN_NAME, "Plugin Init Complete.");
+ TSDebug(PLUGIN_NAME, "Plugin Init Complete.");
+ }
}
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].