Esempio n. 1
0
H323Connection::AnswerCallResponse MyH323Connection::OnAnswerCall(const PString & caller,
								  const H323SignalPDU & /*setupPDU*/,
								  H323SignalPDU & /*connectPDU*/)
{

       if (h323debug)
               cout << "\t=-= In OnAnswerCall for call " << GetCallReference() << endl;
	
	if (!on_answer_call(GetCallReference(), (const char *)GetCallToken()))
		return H323Connection::AnswerCallDenied;

	/* The call will be answered later with "AnsweringCall()" function.
	 */ 
	return H323Connection::AnswerCallDeferred;
}
H323Connection::AnswerCallResponse MyH323Connection::OnAnswerCall(const PString & caller,
								  const H323SignalPDU & setupPDU,
								  H323SignalPDU & /*connectPDU*/)
{
	unsigned pi;

	if (h323debug) {
               cout << "\t=-= In OnAnswerCall for call " << GetCallReference() << endl;
	}

	if (connectionState == ShuttingDownConnection)
		return H323Connection::AnswerCallDenied;

	if (!setupPDU.GetQ931().GetProgressIndicator(pi)) {
		pi = 0;
	}
	if (h323debug) {
		cout << "\t\t- Progress Indicator: " << pi << endl;
	}
	if (progressAlert) {
		pi = progressAlert;
	} else if (pi == Q931::ProgressOriginNotISDN) {
		pi = Q931::ProgressInbandInformationAvailable;
	}
	if (pi) {
		alertingPDU->GetQ931().SetProgressIndicator(pi);
	}
	if (h323debug) {
		cout << "\t\t- Inserting PI of " << pi << " into ALERTING message" << endl;
	}

	if (!on_answer_call(GetCallReference(), (const char *)GetCallToken())) {
		return H323Connection::AnswerCallDenied;
	}
	/* The call will be answered later with "AnsweringCall()" function.
	 */ 
	return H323Connection::AnswerCallDeferredWithMedia;
}