diff options
Diffstat (limited to 'channels')
-rw-r--r-- | channels/h323/ast_h323.cxx | 39 | ||||
-rw-r--r-- | channels/h323/ast_h323.h | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/channels/h323/ast_h323.cxx b/channels/h323/ast_h323.cxx index 73b81865f..ebd551606 100644 --- a/channels/h323/ast_h323.cxx +++ b/channels/h323/ast_h323.cxx @@ -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; } diff --git a/channels/h323/ast_h323.h b/channels/h323/ast_h323.h index 4c85c2442..6020bc662 100644 --- a/channels/h323/ast_h323.h +++ b/channels/h323/ast_h323.h @@ -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); |