BOOL MyH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU) { call_details_t cd; PString sourceE164; PString destE164; PString sourceName; PString sourceAliases; PString destAliases; PIPSocket::Address Ip; WORD sourcePort; char *s, *s1; if (h323debug) { cout << ("\t--Received SETUP message\n"); } if (connectionState == ShuttingDownConnection) return FALSE; sourceAliases = setupPDU.GetSourceAliases(); destAliases = setupPDU.GetDestinationAlias(); sourceE164 = ""; setupPDU.GetSourceE164(sourceE164); sourceName = ""; sourceName=setupPDU.GetQ931().GetDisplayName(); destE164 = ""; setupPDU.GetDestinationE164(destE164); /* Convert complex strings */ // FIXME: deal more than one source alias if ((s = strchr(sourceAliases, ' ')) != NULL) { *s = '\0'; } if ((s = strchr(sourceAliases, '\t')) != NULL) { *s = '\0'; } if ((s1 = strchr(destAliases, ' ')) != NULL) { *s1 = '\0'; } if ((s1 = strchr(destAliases, '\t')) != NULL) { *s1 = '\0'; } memset(&cd, 0, sizeof(cd)); cd.call_reference = GetCallReference(); cd.call_token = strdup((const char *)GetCallToken()); cd.call_source_aliases = strdup((const char *)sourceAliases); cd.call_dest_alias = strdup((const char *)destAliases); cd.call_source_e164 = strdup((const char *)sourceE164); cd.call_dest_e164 = strdup((const char *)destE164); cd.call_source_name = strdup((const char *)sourceName); GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort); cd.sourceIp = strdup((const char *)Ip.AsString()); /* Notify Asterisk of the request */ call_options_t *res = on_incoming_call(&cd); if (!res) { if (h323debug) { cout << " -- Call Failed" << endl; } return FALSE; } progressSetup = res->progress_setup; progressAlert = res->progress_alert; dtmfCodec = (RTP_DataFrame::PayloadTypes)res->dtmfcodec; return H323Connection::OnReceivedSignalSetup(setupPDU); }
BOOL MyH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU) { if (h323debug) { ast_verbose(" -- Received SETUP message\n"); } call_details_t cd; PString sourceE164; PString destE164; PString sourceName; PString sourceAliases; PString destAliases; PIPSocket::Address Ip; WORD sourcePort; char *s, *s1; sourceAliases = setupPDU.GetSourceAliases(); destAliases = setupPDU.GetDestinationAlias(); sourceE164 = ""; setupPDU.GetSourceE164(sourceE164); sourceName = ""; sourceName=setupPDU.GetQ931().GetDisplayName(); destE164 = ""; setupPDU.GetDestinationE164(destE164); /* Convert complex strings */ // FIXME: deal more than one source alias if ((s = strchr(sourceAliases, ' ')) != NULL) *s = '\0'; if ((s = strchr(sourceAliases, '\t')) != NULL) *s = '\0'; if ((s1 = strchr(destAliases, ' ')) != NULL) *s1 = '\0'; if ((s1 = strchr(destAliases, '\t')) != NULL) *s1 = '\0'; cd.call_reference = GetCallReference(); Lock(); cd.call_token = strdup((const char *)GetCallToken()); Unlock(); cd.call_source_aliases = strdup((const char *)sourceAliases); cd.call_dest_alias = strdup((const char *)destAliases); cd.call_source_e164 = strdup((const char *)sourceE164); cd.call_dest_e164 = strdup((const char *)destE164); cd.call_source_name = strdup((const char *)sourceName); GetSignallingChannel()->GetRemoteAddress().GetIpAndPort(Ip, sourcePort); cd.sourceIp = strdup((const char *)Ip.AsString()); /* Notify Asterisk of the request */ int res = on_incoming_call(cd); if (!res) { if (h323debug) { cout << " -- Call Failed" << endl; } return FALSE; } return H323Connection::OnReceivedSignalSetup(setupPDU); }