diff -uNr channels/h323/ast_h323.cxx channels/h323/ast_h323.cxx --- channels/h323/ast_h323.cxx 2008-07-08 09:41:31.000000000 -0700 +++ channels/h323/ast_h323.cxx 2009-02-25 14:20:33.000000000 -0800 @@ -39,14 +39,18 @@ #include #include #include -#include #ifdef H323_H450 -#include "h4501.h" -#include "h4504.h" -#include "h45011.h" -#include "h450pdu.h" +#include "h450/h4501.h" +#include "h450/h4504.h" +#include "h450/h45011.h" +#include "h450/h450pdu.h" #endif +#ifdef H323_H460 +#include +#endif + + #ifdef __cplusplus extern "C" { #endif @@ -62,18 +66,35 @@ #include "ast_h323.h" #include "cisco-h225.h" #include "caps_h323.h" +#include "compat_h323.h" #include #if PWLIB_MAJOR * 10000 + PWLIB_MINOR * 100 + PWLIB_BUILD >= 1 * 10000 + 12 * 100 + 0 #define SKIP_PWLIB_PIPE_BUG_WORKAROUND 1 #endif +/////////////////////////////////////////////// +/* We have to have a PProcess running for the life of the instance to give + * h323plus a static instance of PProcess to get system information. + * This class is defined with PDECLARE_PROCESS(). See pprocess.h from pwlib. + */ /* PWlib Required Components */ #define MAJOR_VERSION 1 -#define MINOR_VERSION 0 +#define MINOR_VERSION 19 #define BUILD_TYPE ReleaseCode -#define BUILD_NUMBER 0 +#define BUILD_NUMBER 6 + +const char * h323manufact = "The NuFone Networks"; +const char * h323product = "H.323 Channel Driver for Asterisk"; + +PDECLARE_PROCESS(MyProcess,PProcess,h323manufact,h323product,MAJOR_VERSION,MINOR_VERSION,BUILD_TYPE,BUILD_NUMBER) +static MyProcess localProcess; // active for the life of the DLL +/* void MyProcess::Main() +{ +} +*/ +//////////////////////////////////////////////// /** Counter for the number of connections */ static int channelsOpen; @@ -85,13 +106,6 @@ */ static MyH323EndPoint *endPoint = NULL; -/** PWLib entry point */ -static MyProcess *localProcess = NULL; - -#ifndef SKIP_PWLIB_PIPE_BUG_WORKAROUND -static int _timerChangePipe[2]; -#endif - static unsigned traceOptions = PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine; class PAsteriskLog : public PObject, public iostream { @@ -176,36 +190,6 @@ (logstream ? (PTrace::ClearOptions((unsigned)-1), PTrace::Begin(0, __FILE__, __LINE__)) : std::cout) #define endl my_endl -/* Special class designed to call cleanup code on module destruction */ -class MyH323_Shutdown { - public: - MyH323_Shutdown() { }; - ~MyH323_Shutdown() - { - h323_end_process(); - }; -}; - -MyProcess::MyProcess(): PProcess("The NuFone Networks", - "H.323 Channel Driver for Asterisk", - MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) -{ - /* Call shutdown when module being unload or asterisk has been stopped */ - static MyH323_Shutdown x; - - /* Fix missed one in PWLib */ - PX_firstTimeStart = FALSE; - Resume(); -} - -MyProcess::~MyProcess() -{ -#ifndef SKIP_PWLIB_PIPE_BUG_WORKAROUND - _timerChangePipe[0] = timerChangePipe[0]; - _timerChangePipe[1] = timerChangePipe[1]; -#endif -} - void MyProcess::Main() { PTrace::Initialise(PTrace::GetLevel(), NULL, traceOptions); @@ -2249,8 +2233,7 @@ { channelsOpen = 0; logstream = new PAsteriskLog(); - localProcess = new MyProcess(); - localProcess->Main(); + endPoint = new MyH323EndPoint(); } void h323_gk_urq(void) @@ -2358,6 +2341,32 @@ return 0; }; +/* Addition of functions just to make the channel driver compile with H323Plus */ + +/* Alternate RTP port information for Same NAT */ +BOOL MyH323_ExternalRTPChannel::OnReceivedAltPDU(const H245_ArrayOf_GenericInformation & alternate ) +{ + return TRUE; +} + +/* Alternate RTP port information for Same NAT */ +BOOL MyH323_ExternalRTPChannel::OnSendingAltPDU(H245_ArrayOf_GenericInformation & alternate) const +{ + return TRUE; +} + +/* Alternate RTP port information for Same NAT */ +void MyH323_ExternalRTPChannel::OnSendOpenAckAlt(H245_ArrayOf_GenericInformation & alternate) const +{ +} + +/* Alternate RTP port information for Same NAT */ +BOOL MyH323_ExternalRTPChannel::OnReceivedAckAltPDU(const H245_ArrayOf_GenericInformation & alternate) +{ + return TRUE; +} + + int h323_set_alias(struct oh323_alias *alias) { char *p; @@ -2373,7 +2382,7 @@ cout << "== Adding alias \"" << h323id << "\" to endpoint" << endl; endPoint->AddAliasName(h323id); - endPoint->RemoveAliasName(localProcess->GetUserName()); + endPoint->RemoveAliasName(PProcess::Current().GetName()); if (!e164.IsEmpty()) { cout << "== Adding E.164 \"" << e164 << "\" to endpoint" << endl; @@ -2625,22 +2634,10 @@ void h323_end_process(void) { if (endPoint) { - endPoint->ClearAllCalls(); - endPoint->RemoveListener(NULL); delete endPoint; endPoint = NULL; } - if (localProcess) { - delete localProcess; - localProcess = NULL; -#ifndef SKIP_PWLIB_PIPE_BUG_WORKAROUND - close(_timerChangePipe[0]); - close(_timerChangePipe[1]); -#endif - } if (logstream) { - PTrace::SetLevel(0); - PTrace::SetStream(&cout); delete logstream; logstream = NULL; } diff -uNr channels/h323/ast_h323.h channels/h323/ast_h323.h --- channels/h323/ast_h323.h 2006-10-07 07:48:32.000000000 -0700 +++ channels/h323/ast_h323.h 2009-02-25 14:20:33.000000000 -0800 @@ -149,26 +149,17 @@ PIPSocket::Address localIpAddr; PIPSocket::Address remoteIpAddr; + /* Additional functions in order to have chan_h323 compile with H323Plus */ + BOOL OnReceivedAltPDU(const H245_ArrayOf_GenericInformation & alternate ); + BOOL OnSendingAltPDU(H245_ArrayOf_GenericInformation & alternate) const; + void OnSendOpenAckAlt(H245_ArrayOf_GenericInformation & alternate) const; + BOOL OnReceivedAckAltPDU(const H245_ArrayOf_GenericInformation & alternate); WORD localPort; WORD remotePort; }; -/** - * The MyProcess is a necessary descendant PProcess class so that the H323EndPoint - * objected to be created from within that class. (Solves the who owns main() problem). - */ -class MyProcess : public PProcess -{ - PCLASSINFO(MyProcess, PProcess); - -public: - MyProcess(); - ~MyProcess(); - void Main(); -}; - #ifdef H323_H450 -#include +#include class MyH4504Handler : public H4504Handler { @@ -184,6 +175,4 @@ }; #endif -#include "compat_h323.h" - #endif /* !defined AST_H323_H */ diff -uNr channels/h323/compat_h323.cxx channels/h323/compat_h323.cxx --- channels/h323/compat_h323.cxx 2006-09-20 10:45:25.000000000 -0700 +++ channels/h323/compat_h323.cxx 2009-02-25 14:20:33.000000000 -0800 @@ -33,6 +33,7 @@ #include #include "ast_h323.h" +#include "compat_h323.h" #if VERSION(OPENH323_MAJOR,OPENH323_MINOR,OPENH323_BUILD) < VERSION(1,17,3) MyH323TransportTCP::MyH323TransportTCP(