Force remote side to start media on outgoing PROGRESS message

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43862 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Paul Cadach 19 years ago
parent bfaac1699c
commit 89e23aa040

@ -580,6 +580,41 @@ BOOL MyH323Connection::OnReceivedProgress(const H323SignalPDU &pdu)
return connectionState != ShuttingDownConnection;
}
BOOL MyH323Connection::MySendProgress()
{
/* The code taken from H323Connection::AnsweringCall() but ALWAYS send
PROGRESS message, including slow start operations */
H323SignalPDU progressPDU;
H225_Progress_UUIE &prog = progressPDU.BuildProgress(*this);
if (!mediaWaitForConnect) {
if (SendFastStartAcknowledge(prog.m_fastStart))
prog.IncludeOptionalField(H225_Progress_UUIE::e_fastStart);
else {
if (connectionState == ShuttingDownConnection)
return FALSE;
/* Do early H.245 start */
earlyStart = TRUE;
if (!h245Tunneling) {
if (!H323Connection::StartControlChannel())
return FALSE;
prog.IncludeOptionalField(H225_Progress_UUIE::e_h245Address);
controlChannel->SetUpTransportPDU(prog.m_h245Address, TRUE);
}
}
}
progressPDU.GetQ931().SetProgressIndicator(Q931::ProgressInbandInformationAvailable);
#ifdef TUNNELLING
EmbedTunneledInfo(progressPDU);
#endif
HandleTunnelPDU(&progressPDU);
WriteSignalPDU(progressPDU);
return TRUE;
}
H323Connection::AnswerCallResponse MyH323Connection::OnAnswerCall(const PString & caller,
const H323SignalPDU & setupPDU,
H323SignalPDU & connectPDU)
@ -1968,7 +2003,11 @@ int h323_send_progress(const char *token)
cout << "No connection found for " << token << endl;
return -1;
}
#if 1
((MyH323Connection *)connection)->MySendProgress();
#else
connection->AnsweringCall(H323Connection::AnswerCallDeferredWithMedia);
#endif
connection->Unlock();
return 0;
}

@ -80,6 +80,7 @@ public:
virtual void OnUserInputTone(char, unsigned, unsigned, unsigned);
virtual void OnUserInputString(const PString &value);
BOOL OnReceivedProgress(const H323SignalPDU &);
BOOL MySendProgress();
void OnSendCapabilitySet(H245_TerminalCapabilitySet &);
void OnSetLocalCapabilities();
void SetCapabilities(int, int, void *, int);

Loading…
Cancel
Save