X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.c;h=3904c9ac16016dee16565b36460a8bcf76f02b8b;hp=13aa680558019e00e5aba5f1e014c84adc91bfdc;hb=03f26ba38638051d153db96ce158f220a6746d22;hpb=7798beeab23fa282d4a510c53d5f95ed3f8c2366 diff --git a/chan_lcr.c b/chan_lcr.c index 13aa680..3904c9a 100644 --- a/chan_lcr.c +++ b/chan_lcr.c @@ -208,8 +208,6 @@ int wake_global = 0; int wake_pipe[2]; struct lcr_fd wake_fd; -int quit; - int glob_channel = 0; int lcr_sock = -1; @@ -1935,23 +1933,11 @@ static void *chan_thread(void *arg) ast_mutex_lock(&chan_lock); - while(!quit) { + while(1) { handle_queue(); select_main(0, &global_change, lock_chan, unlock_chan); } - close_socket(); - - del_timer(&socket_retry); - - unregister_fd(&wake_fd); - close(wake_pipe[0]); - close(wake_pipe[1]); - - CERROR(NULL, NULL, "Thread exit.\n"); - - ast_mutex_unlock(&chan_lock); - return NULL; } @@ -3303,7 +3289,6 @@ int load_module(void) ast_cli_register(&cli_port_unload); #endif - quit = 0; if ((pthread_create(&chan_tid, NULL, chan_thread, NULL)<0)) { /* failed to create thread */ bchannel_deinitialize(); @@ -3325,16 +3310,24 @@ int load_module(void) int unload_module(void) { /* First, take us out of the channel loop */ - CDEBUG(NULL, NULL, "-- Unregistering mISDN Channel Driver --\n"); + CDEBUG(NULL, NULL, "-- Unregistering Linux-Call-Router Channel Driver --\n"); + + pthread_cancel(chan_tid); + + close_socket(); - quit = 1; - pthread_join(chan_tid, NULL); + del_timer(&socket_retry); + + unregister_fd(&wake_fd); + close(wake_pipe[0]); + close(wake_pipe[1]); + +// ast_mutex_unlock(&chan_lock); ast_channel_unregister(&lcr_tech); ast_unregister_application("lcr_config"); - if (mISDN_created) { bchannel_deinitialize(); mISDN_created = 0;