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 2014/01/03 18:19:09 UTC
[38/50] git commit: TS-2271: Let TSHttpTxnReenable work gracefully
when it's called from an unexpected thread (this_ethread() returns NULL).
TS-2271: Let TSHttpTxnReenable work gracefully when it's called from an unexpected thread (this_ethread() returns NULL).
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d706b7d6
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d706b7d6
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d706b7d6
Branch: refs/heads/5.0.x
Commit: d706b7d6478ff8b5a37b1422b3ad45739c10a5e9
Parents: 698db8b
Author: Heikki Hannikainen <he...@hes.iki.fi>
Authored: Mon Dec 30 17:42:23 2013 +0200
Committer: James Peach <jp...@apache.org>
Committed: Thu Jan 2 08:39:01 2014 -0800
----------------------------------------------------------------------
proxy/InkAPI.cc | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d706b7d6/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 1e8ecdf..cb31e6d 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -5516,10 +5516,14 @@ TSHttpTxnReenable(TSHttpTxn txnp, TSEvent event)
HttpSM *sm = (HttpSM *) txnp;
EThread *eth = this_ethread();
+ // TS-2271: If this function is being executed on a thread which was not
+ // created using the ATS EThread API, eth will be NULL, and the
+ // continuation needs to be called back on a REGULAR thread.
+ //
// If this function is being executed on a thread created by the API
// which is DEDICATED, the continuation needs to be called back on a
// REGULAR thread.
- if (eth->tt != REGULAR) {
+ if (eth == NULL || eth->tt != REGULAR) {
eventProcessor.schedule_imm(NEW(new TSHttpSMCallback(sm, event)), ET_NET);
} else {
MUTEX_TRY_LOCK(trylock, sm->mutex, eth);