Hi, I'm not sure if this is a known behavior (and should just be better documented), a bug or just bad practices on my part -- Flow goes like this:
1) In a global hook, create a continuation X and attach it to several hookpoints in a transaction Y. 2) When called through one of the hookpoints, send an asynch request to an external service that does URL categorization. 3) Return without reenabling (since we don't want to proceed before getting the response). 4) A dedicated thread receives the response, and schedules continuation X. (There's a mechanism that makes sure that cont X is still valid when the URL categorization response arrives) 5) continuation X is called with an immediate event and calls TSHttpSsnArgGet on transaction Y session. 6) If a client disconnects after we retrieve the session (and validate it), but before we access the variables themselves... Problem is when cont X is called due to the scheduled event, it does not lock the HttpSM mutex, and a 'just-in-time' client disconnect can destroy the ua_session. My solution to this was to create continuation X with the HttpSM mutex -- Does this seem reasonable? BTW -- I saw the TSHttpSchedule function that aims to solve a similar issue, but it appears to cause transactions to hang occasionally since it overrides the HttpSM default handler. Cheers, Uri