Dialogic Dialogic Global Call IP IP Phone User Manual


 
Dialogic
®
Global Call IP Technology Guide — November 2007 139
Dialogic Corporation
IP-Specific Operations
break;
}
break;
}
}
}
/* continue drop call on this channel */
.
.
.
}
.
.
.
}
bool checkCallRedirected()
{
int gcError; /* GlobalCall Error */
int ccLibId; /* CC Library ID */
long ccError = 0; /* Call Control Library error code */
char *GCerrMsg; /* GC pointer to error message string *
char *errMsg; /* CCLIB pointer to error message string */
if(gc_ResultValue( &g_ClaimedMetaEvent, &gcError, &ccLibId, &ccError) == GC_SUCCESS)
{
gc_ResultMsg(LIBID_GC, (long) gcError, &GCerrMsg);
gc_ResultMsg(ccLibId, ccError, &errMsg);
printf("GC (%d) %s,CC (%ld) %s\n",,gcError,GCerrMsg,ccError,errMsg);
/check for redirection
if(IPEC_SIPReasonStatus300MultipleChoices <= ccError &&
ccError < IPEC_SIPReasonStatus400BadRequest)
{
printf("Call is redirected\n");
return true;
}
else
{
return false;
}
}
return false;
}
/* Get only the first address in <> */
char* checkRedirectedAddress(GC_PARM_DATA *parmp)
{
char* ptr;
char* SipHeaderData=(char*)parmp->value_buf;
char* HeaderName = NULL;
char* HeaderData = NULL;
char* redirectURI = NULL;
ULONG HeaderDataSize = 0;
ptr = strchr(SipHeaderData,':');
if (ptr)
{
ptr[0] = '\0';
HeaderName = SipHeaderData;
HeaderData = ptr + sizeof(char);
HeaderDataSize = parmp->value_size - (strlen(HeaderName) + 1);
}