Index: channels/h323/compat_h323.cxx
===================================================================
--- channels/h323/compat_h323.cxx	(revision 108926)
+++ channels/h323/compat_h323.cxx	(working copy)
@@ -33,6 +33,7 @@
 #include <transports.h>
 
 #include "ast_h323.h"
+#include "compat_h323.h"
 
 #if VERSION(OPENH323_MAJOR,OPENH323_MINOR,OPENH323_BUILD) < VERSION(1,17,3)
 MyH323TransportTCP::MyH323TransportTCP(
Index: channels/h323/ast_h323.cxx
===================================================================
--- channels/h323/ast_h323.cxx	(revision 108926)
+++ channels/h323/ast_h323.cxx	(working copy)
@@ -39,14 +39,17 @@
 #include <h323pdu.h>
 #include <h323neg.h>
 #include <mediafmt.h>
-#include <lid.h>
 #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 <h460/h4601.h>
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -61,13 +64,28 @@
 #include "ast_h323.h"
 #include "cisco-h225.h"
 #include "caps_h323.h"
+#include "compat_h323.h"
 
-/* PWlib Required Components  */
+///////////////////////////////////////////////
+/* 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.
+ */
 #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;
 
@@ -78,11 +96,6 @@
  */
 static MyH323EndPoint *endPoint = NULL;
 
-/** PWLib entry point */
-static MyProcess *localProcess = NULL;
-
-static int _timerChangePipe[2];
-
 static unsigned traceOptions = PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine;
 
 class PAsteriskLog : public PObject, public iostream {
@@ -167,34 +180,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()
-{
-	_timerChangePipe[0] = timerChangePipe[0];
-	_timerChangePipe[1] = timerChangePipe[1];
-}
-
 void MyProcess::Main()
 {
 	PTrace::Initialise(PTrace::GetLevel(), NULL, traceOptions);
@@ -2090,8 +2075,7 @@
 {
 	channelsOpen = 0;
 	logstream = new PAsteriskLog();
-	localProcess = new MyProcess();
-	localProcess->Main();
+	endPoint = new MyH323EndPoint();
 }
 
 void h323_gk_urq(void)
@@ -2197,6 +2181,31 @@
 	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;
@@ -2212,7 +2221,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;
@@ -2452,23 +2461,13 @@
 void h323_end_process(void)
 {
 	if (endPoint) {
-		endPoint->ClearAllCalls();
-		endPoint->RemoveListener(NULL);
 		delete endPoint;
 		endPoint = NULL;
 	}
-	if (localProcess) {
-		delete localProcess;
-		localProcess = NULL;
-		close(_timerChangePipe[0]);
-		close(_timerChangePipe[1]);
-	}
-	if (logstream) {
-		PTrace::SetLevel(0);
-		PTrace::SetStream(&cout);
-		delete logstream;
-		logstream = NULL;
-	}
+        if (logstream) {
+                delete logstream;
+                logstream = NULL;
+        }
 }
 
 } /* extern "C" */
Index: channels/h323/ast_h323.h
===================================================================
--- channels/h323/ast_h323.h	(revision 108926)
+++ channels/h323/ast_h323.h	(working copy)
@@ -143,24 +143,13 @@
 
 	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();
-};
-
-#include "compat_h323.h"
-
 #endif /* !defined AST_H323_H */
