You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2010/11/05 01:22:44 UTC
svn commit: r1031370 - /trafficserver/plugins/stats/stats.c
Author: zwoop
Date: Fri Nov 5 00:22:44 2010
New Revision: 1031370
URL: http://svn.apache.org/viewvc?rev=1031370&view=rev
Log:
Fix the multiple reenables, and some more checks and cleanup.
Modified:
trafficserver/plugins/stats/stats.c
Modified: trafficserver/plugins/stats/stats.c
URL: http://svn.apache.org/viewvc/trafficserver/plugins/stats/stats.c?rev=1031370&r1=1031369&r2=1031370&view=diff
==============================================================================
--- trafficserver/plugins/stats/stats.c (original)
+++ trafficserver/plugins/stats/stats.c Fri Nov 5 00:22:44 2010
@@ -246,18 +246,22 @@ stats_origin(INKCont contp, INKEvent eve
INKMBuffer reqp;
INKMLoc hdr_loc = NULL, field = NULL;
int host_header_len;
- const char *host_header_ptr;
+ const char *host_header_ptr = NULL;
+ INKEvent reenable = INK_EVENT_HTTP_CONTINUE;
INKDebug("istats", "in the read stuff");
- INKHttpTxnClientReqGet(txnp, &reqp, &hdr_loc);
+ if (!INKHttpTxnClientReqGet(txnp, &reqp, &hdr_loc))
+ goto cleanup;
+
field = INKMimeHdrFieldFind(reqp, hdr_loc,
INK_MIME_FIELD_HOST, INK_MIME_LEN_HOST);
if(field) {
- INKMimeHdrFieldValueStringGet(reqp, hdr_loc, field, 0,
- &host_header_ptr, &host_header_len);
- if(host_header_len != 7 || memcmp(host_header_ptr, "[stats]", 7))
- goto notforme;
+ if (INK_SUCCESS == INKMimeHdrFieldValueStringGet(reqp, hdr_loc, field, 0,
+ &host_header_ptr, &host_header_len)) {
+ if(host_header_len != 7 || memcmp(host_header_ptr, "[stats]", 7))
+ goto notforme;
+ }
}
/* This is us -- register our intercept */
@@ -274,15 +278,17 @@ stats_origin(INKCont contp, INKEvent eve
error:
INKError("[PluginInit] Error while intercepting stuff");
INKContDestroy(icontp);
- INKHttpTxnReenable(txnp, INK_EVENT_HTTP_ERROR);
+ reenable = INK_EVENT_HTTP_ERROR;
goto cleanup;
notforme:
cleanup:
- INKHttpTxnReenable(txnp, INK_EVENT_HTTP_CONTINUE);
+ if(host_header_ptr) INKHandleStringRelease(reqp, hdr_loc, host_header_ptr);
if(hdr_loc) INKHandleMLocRelease(reqp, INK_NULL_MLOC, hdr_loc);
if(field) INKHandleMLocRelease(reqp, INK_NULL_MLOC, field);
+
+ INKHttpTxnReenable(txnp, reenable);
return 0;
}