Exemplo n.º 1
0
BOOL MyH323Connection::OnSendSignalSetup(H323SignalPDU & setupPDU)
{
	call_details_t cd;
	char *s, *s1;

	if (h323debug) { 
		cout << "	-- Sending SETUP message" << endl;
	}
	sourceAliases = setupPDU.GetSourceAliases();
	destAliases = setupPDU.GetDestinationAlias();

	sourceE164 = "";
	setupPDU.GetSourceE164(sourceE164);
	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);

	int res = on_outgoing_call(cd);	
		
	if (!res) {
		if (h323debug) {
			cout << "	-- Call Failed" << endl;
		}
		return FALSE;
	}

	return H323Connection::OnSendSignalSetup(setupPDU);
}
BOOL MyH323Connection::OnSendSignalSetup(H323SignalPDU & setupPDU)
{
	call_details_t cd;
	char *s, *s1;

	if (h323debug) { 
		cout << "	-- Sending SETUP message" << endl;
	}

	if (connectionState == ShuttingDownConnection)
		return FALSE;

	if (!ast_cid_num.IsEmpty()) {
		setupPDU.GetQ931().SetCallingPartyNumber(ast_cid_num);
	}

	if (!ast_cid_name.IsEmpty()) {
		setupPDU.GetQ931().SetDisplayName(ast_cid_name);
	}

	sourceAliases = setupPDU.GetSourceAliases();
	destAliases = setupPDU.GetDestinationAlias();

	sourceE164 = "";
	setupPDU.GetSourceE164(sourceE164);
	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);

	int res = on_outgoing_call(&cd);
	if (!res) {
		if (h323debug) {
			cout << "\t-- Call Failed" << endl;
		}
		return FALSE;
	}

	if (progressSetup) {
		setupPDU.GetQ931().SetProgressIndicator(progressSetup);
	}
	return H323Connection::OnSendSignalSetup(setupPDU);
}