diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-01 22:06:23 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-01 22:06:23 +0000 |
commit | 6a3c151f43464739d9530b994d64f0f74530cf4f (patch) | |
tree | 41b3c6354846c9e3c485524b06eb06f172254e20 | |
parent | b56818b4802500ed8fa8e41c9e4b408e52d42e1a (diff) |
don't send OSP tokens do devices that are not OSP aware (issue #5093)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6493 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | res/res_osp.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/res/res_osp.c b/res/res_osp.c index 57e80f9ab..e820264f5 100755 --- a/res/res_osp.c +++ b/res/res_osp.c @@ -506,6 +506,7 @@ int ast_osp_lookup(struct ast_channel *chan, char *provider, char *extension, ch char tmp[256]="", *l, *n; OSPTCALLID *callid; OSPE_DEST_PROT prot; + OSPE_DEST_OSP_ENABLED ospenabled; result->handle = -1; result->numresults = 0; @@ -569,7 +570,12 @@ int ast_osp_lookup(struct ast_channel *chan, char *provider, char *extension, ch ast_log(LOG_DEBUG, "Got destination '%s' and called: '%s' calling: '%s' for '%s' (provider '%s')\n", destination, callednum, callingnum, extension, provider); do { - ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1); + if (!OSPPTransactionIsDestOSPEnabled (result->handle, &ospenabled) && (ospenabled == OSPE_OSP_FALSE)) { + result->token[0] = 0; + } + else { + ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1); + } if ((strlen(destination) > 2) && !OSPPTransactionGetDestProtocol(result->handle, &prot)) { res = 1; /* Strip leading and trailing brackets */ @@ -638,6 +644,7 @@ int ast_osp_next(struct ast_osp_result *result, int cause) char destination[2048]=""; char token[2000]; OSPE_DEST_PROT prot; + OSPE_DEST_OSP_ENABLED ospenabled; result->tech[0] = '\0'; result->dest[0] = '\0'; @@ -652,7 +659,12 @@ int ast_osp_next(struct ast_osp_result *result, int cause) result->numresults--; if (!OSPPTransactionGetNextDestination(result->handle, OSPC_FAIL_INCOMPATIBLE_DEST, 0, NULL, NULL, &timelimit, &callidlen, callidstr, sizeof(callednum), callednum, sizeof(callingnum), callingnum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) { - ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1); + if (!OSPPTransactionIsDestOSPEnabled (result->handle, &ospenabled) && (ospenabled == OSPE_OSP_FALSE)) { + result->token[0] = 0; + } + else { + ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1); + } if ((strlen(destination) > 2) && !OSPPTransactionGetDestProtocol(result->handle, &prot)) { res = 1; /* Strip leading and trailing brackets */ |