[
https://issues.apache.org/jira/browse/TS-4135?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15116435#comment-15116435
]
Sandeep Davu edited comment on TS-4135 at 1/26/16 1:11 AM:
-----------------------------------------------------------
[~briang] Here is a simple redirect implementation that will lead to coredump.
{code:title=ClientRedirect.cc|borderStyle=solid}
class ClientRedirectTransactionPlugin : public atscppapi::TransactionPlugin {
public:
ClientRedirectTransactionPlugin(Transaction &transaction, const string
&location)
: TransactionPlugin(transaction), location_(location) {
TransactionPlugin::registerHook(HOOK_SEND_RESPONSE_HEADERS);
transaction.resume();
}
void handleSendResponseHeaders(Transaction &transaction) {
transaction.redirectTo("http://test.com/");
transaction.resume();
}
virtual ~ClientRedirectTransactionPlugin() { }
};
class ClientRedirectGlobalPlugin : public GlobalPlugin {
public:
ClientRedirectGlobalPlugin() {
registerHook(HOOK_SEND_REQUEST_HEADERS);
}
void handleSendRequestHeaders(Transaction &transaction) {
if(transaction.getClientRequest().getUrl().getQuery().find("redirect=1") !=
string::npos) {
transaction.addPlugin(new ClientRedirectTransactionPlugin(transaction,
"http://www.test.com/"));
}
transaction.resume();
}
};
void TSPluginInit(int argc ATSCPPAPI_UNUSED, const char *argv[]
ATSCPPAPI_UNUSED) {
RegisterGlobalPlugin("CPP_Example_ClientRedirect", "apache",
"[email protected]");
new ClientRedirectGlobalPlugin();
}
{code}
was (Author: sdavu):
[~briang] Here is a simple redirect implementation that will lead to coredump.
{code:title=ClientRedirect.cc|borderStyle=solid}
class ClientRedirectTransactionPlugin : public atscppapi::TransactionPlugin {
public:
ClientRedirectTransactionPlugin(Transaction &transaction, const string
&location)
: TransactionPlugin(transaction), location_(location) {
TransactionPlugin::registerHook(HOOK_SEND_RESPONSE_HEADERS);
transaction.resume();
}
void handleSendResponseHeaders(Transaction &transaction) {
transaction.redirectTo("http://test.com/");
transaction.resume();
}
virtual ~ClientRedirectTransactionPlugin() { }
};
{code}
> C++ api coredumps when used with other plugins using TSHttpTxnRedirectUrlSet.
> -----------------------------------------------------------------------------
>
> Key: TS-4135
> URL: https://issues.apache.org/jira/browse/TS-4135
> Project: Traffic Server
> Issue Type: Bug
> Components: CPP API
> Reporter: Sandeep Davu
> Assignee: Brian Geffon
> Labels: crash
> Fix For: 6.2.0
>
>
> There are multiple TS_EVENT_HTTP_SEND_REQUEST_HDR and
> TS_EVENT_HTTP_READ_RESPONSE_HDR for plugins that use TSHttpTxnRedirectUrlSet.
> Transaction object ignores these events.
> Ideally these events should be handled by reinitializing the server_request
> and server_response.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)