On 10 Feb 2012, at 12:14, Maurice Kelly wrote: > On 10 Feb 2012, at 11:41, Nick Kew wrote: > >> It would be great if you could ignore my comments and just try it for >> yourself. >> A second independent opinion might tell us something worthwhile about >> just how useful the API really is as of now. > > > No problem - will download the 3.1.2 release and give it a go with that.
Only managed to do a quick test but I seem to be able to get the IP address from the SSN_START hook. Below you'll see the plugin function I'm using. I've added it as with the following hook: TSHttpHookAdd(TS_HTTP_SSN_START_HOOK, TSContCreate(start_hook, NULL)); and the start_hook function: static int start_hook(TSCont contp, TSEvent event, void *edata) { TSDebug(DEBUG_ID, "Entering start_hook()"); TSHttpSsn ssnp; TSHttpTxn txnp; const struct sockaddr* sa; const struct sockaddr_in* si; switch (event) { case TS_EVENT_HTTP_SSN_START: ssnp = (TSHttpSsn)edata; sa = TSHttpSsnClientAddrGet(ssnp); si = (const struct sockaddr_in*)sa; TSDebug(DEBUG_ID, "Address from SSN START: %s", inet_ntoa(si->sin_addr)); TSHttpSsnHookAdd(ssnp, TS_HTTP_TXN_START_HOOK, contp); TSHttpSsnReenable(ssnp, TS_EVENT_HTTP_CONTINUE); break; case TS_EVENT_HTTP_TXN_START: txnp = (TSHttpTxn)edata; sa = TSHttpTxnClientAddrGet(txnp); si = (const struct sockaddr_in*)sa; TSDebug(DEBUG_ID, "Address from TXN_START: %s", inet_ntoa(si->sin_addr)); TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE); default: break; } return 0; } The output reads: [Feb 10 16:24:27.266] Server {0x7fc34756e700} DIAG: (testssn) Entering start_hook() [Feb 10 16:24:27.266] Server {0x7fc34756e700} DIAG: (testssn) Address from SSN START: 192.168.91.1 [Feb 10 16:24:27.266] Server {0x7fc34756e700} DIAG: (testssn) Entering start_hook() [Feb 10 16:24:27.266] Server {0x7fc34756e700} DIAG: (testssn) Address from TXN_START: 192.168.91.1 Is this what you would have expected? Cheers, Maurice