[svn-commits] dcb: trunk r447 - /trunk/chan_mobile.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Sep 8 19:28:42 CDT 2007


Author: dcb
Date: Sat Sep  8 19:28:41 2007
New Revision: 447

URL: http://svn.digium.com/view/asterisk-addons?view=rev&rev=447
Log:
* Fix module unloading - close bound socket left open.
* Modify call hangup procedures to cater for embedded and low grunt processors (via's etc).

Modified:
    trunk/chan_mobile.c

Modified: trunk/chan_mobile.c
URL: http://svn.digium.com/view/asterisk-addons/trunk/chan_mobile.c?view=diff&rev=447&r1=446&r2=447
==============================================================================
--- trunk/chan_mobile.c (original)
+++ trunk/chan_mobile.c Sat Sep  8 19:28:41 2007
@@ -207,8 +207,6 @@
 "  Dest - destination\n"
 "  Message - text of the message\n";
 
-/* Manager stuff */
-
 static struct ast_channel *mbl_new(int state, struct mbl_pvt *pvt, char *cid_num);
 static struct ast_channel *mbl_request(const char *type, int format, void *data, int *cause);
 static int mbl_call(struct ast_channel *ast, char *dest, int timeout);
@@ -755,6 +753,9 @@
 		return 0;
 	}
 	if (ast->_state != AST_STATE_UP) {
+		return 0;
+	}
+	if (pvt->state == MBL_STATE_HANGUP) {
 		return 0;
 	}
 
@@ -1386,6 +1387,8 @@
 				break;
 			case MBL_STATE_HANGUP:
 				if (strstr(buf, "OK") || strstr(buf, pvt->ciev_call_0)) {
+					close(pvt->sco_socket);
+					pvt->sco_socket = -1;
 					pvt->state = MBL_STATE_IDLE;
 				}
 				break;
@@ -1902,8 +1905,15 @@
 			pthread_cancel(pvt->monitor_thread);
 			pthread_join(pvt->monitor_thread, NULL);
 		}
+		if (pvt->sco_listener_thread != AST_PTHREADT_NULL) {
+			pthread_cancel(pvt->sco_listener_thread);
+			pthread_join(pvt->sco_listener_thread, NULL);
+		}
 		if (pvt->sco_socket > -1) {
 			close(pvt->sco_socket);
+		}
+		if (pvt->adapter->sco_socket > -1) {
+			close(pvt->adapter->sco_socket);
 		}
 		if (pvt->rfcomm_socket > -1) {
 			close(pvt->rfcomm_socket);




More information about the svn-commits mailing list