ast_log(LOG_WARNING, "Cannot kill myself\n");
return -1;
}
- if (monitor_thread) {
+ if (monitor_thread && (monitor_thread != -2)) {
/* Wake up the thread */
pthread_kill(monitor_thread, SIGURG);
} else {
/* Register our callback functions */
h323_callback_register(setup_incoming_call,
- setup_outgoing_call,
- create_connection,
- setup_rtp_connection,
- cleanup_connection,
- connection_made, send_digit);
+ setup_outgoing_call,
+ create_connection,
+ setup_rtp_connection,
+ cleanup_connection,
+ connection_made,
+ send_digit);
/* start the h.323 listener */
ast_log(LOG_WARNING, "Unable to lock the interface list\n");
return -1;
}
+
+ if (!ast_mutex_lock(&monlock)) {
+ if (monitor_thread && (monitor_thread != -2)) {
+ pthread_cancel(monitor_thread);
+ pthread_kill(monitor_thread, SIGURG);
+ pthread_join(monitor_thread, NULL);
+ }
+ monitor_thread = (pthread_t) -2;
+ ast_mutex_unlock(&monlock);
+ } else {
+ ast_log(LOG_WARNING, "Unable to lock the monitor\n");
+ return -1;
+ }
if (!ast_mutex_lock(&iflock)) {
/* destroy all the interfaces and free their memory */
ast_rtp_proto_unregister(&oh323_rtp);
/* unregister commands */
- ast_cli_unregister(&cli_debug);
- ast_cli_unregister(&cli_no_debug);
- ast_cli_unregister(&cli_trace);
- ast_cli_unregister(&cli_no_trace);
- ast_cli_unregister(&cli_show_codecs);
- ast_cli_unregister(&cli_gk_cycle);
-
+ ast_cli_unregister(&cli_debug);
+ ast_cli_unregister(&cli_no_debug);
+ ast_cli_unregister(&cli_trace);
+ ast_cli_unregister(&cli_no_trace);
+ ast_cli_unregister(&cli_show_codecs);
+// ast_cli_unregister(&cli_gk_cycle);
+ ast_cli_unregister(&cli_hangup_call);
+ ast_cli_unregister(&cli_show_tokens);
+
/* unregister channel type */
ast_channel_unregister(type);
*
* Version Info: $Id$
*/
+#include <asterisk/logger.h>
#include "ast_h323.h"
+
/* PWlib Required Components */
#define MAJOR_VERSION 1
#define MINOR_VERSION 0
void MyProcess::Main()
{
- cout << " == Creating H.323 Endpoint" << endl;
+ ast_verbose(" == Creating H.323 Endpoint\n");
endPoint = new MyH323EndPoint();
PTrace::Initialise(0, NULL, PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine);
}
{
if (h323debug) {
- cout << " -- Received SETUP message..." << endl;
+ ast_verbose(" -- Received SETUP message\n");
}
call_details_t cd;
{
PString gkName = PString(gatekeeper);
PString pass = PString(secret);
+ H323TransportUDP *rasChannel;
if (!h323_end_point_exist()) {
cout << "ERROR: [h323_set_gk] No Endpoint, this is bad!" << endl;
return 1;
}
} else {
- /* Gatekeeper operations */
- if (endPoint->rasChannel) {
- delete endPoint->rasChannel;
- }
- endPoint->rasChannel = new H323TransportUDP(*endPoint);
+ rasChannel = new H323TransportUDP(*endPoint);
- if (!endPoint->rasChannel) {
+ if (!rasChannel) {
cout << " *** No RAS Channel, this is bad" << endl;
return 1;
}
- if (endPoint->SetGatekeeper(gkName, endPoint->rasChannel)) {
+ if (endPoint->SetGatekeeper(gkName, rasChannel)) {
cout << " == Using " << (endPoint->GetGatekeeper())->GetName() << " as our Gatekeeper." << endl;
} else {
cout << " *** Error registering with gatekeeper \"" << gkName << "\". " << endl;