From: Joshua Colp Date: Tue, 27 Jan 2015 11:48:31 +0000 (+0000) Subject: res_parking: Fix crash due to race condition when unloading. X-Git-Tag: certified/13.1-cert1-rc3~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a324112ef872d8926e15de6937c1dfab67a8e0a;p=thirdparty%2Fasterisk.git res_parking: Fix crash due to race condition when unloading. There is currently a race condition when unloading the res_parking module. Depending on the will of the universe the subscription invocation may occur AFTER the module is unloaded. This is because the module does NOT use stasis_unsubscribe_and_join when terminating the subscription. It merely uses stasis_unsubscribe. This change makes it use stasis_unsubscribe_and_join which is documented for usage in this exact scenario. AST-1520 #close Review: https://reviewboard.asterisk.org/r/4375/ ........ Merged revisions 431114 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431116 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/parking/parking_manager.c b/res/parking/parking_manager.c index 73b5ff4954..9edc1a87ce 100644 --- a/res/parking/parking_manager.c +++ b/res/parking/parking_manager.c @@ -685,7 +685,7 @@ int load_parking_manager(void) static void parking_manager_disable_stasis(void) { - parking_sub = stasis_unsubscribe(parking_sub); + parking_sub = stasis_unsubscribe_and_join(parking_sub); } void unload_parking_manager(void)