From 21a7bc1d6267edd9e4c6160c4131095663a47db6 Mon Sep 17 00:00:00 2001 From: markster Date: Thu, 23 Oct 2003 03:55:58 +0000 Subject: Create outgoing threads detached (bug #391) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1661 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'pbx.c') diff --git a/pbx.c b/pbx.c index a792ffba4..98c7392ed 100755 --- a/pbx.c +++ b/pbx.c @@ -3790,6 +3790,8 @@ int ast_pbx_outgoing_exten(char *type, int format, void *data, int timeout, char int res = -1; char *var, *tmp; struct outgoing_helper oh; + pthread_attr_t attr; + if (sync) { LOAD_OH(oh); chan = __ast_request_and_dial(type, format, data, timeout, reason, callerid, &oh); @@ -3854,7 +3856,9 @@ int ast_pbx_outgoing_exten(char *type, int format, void *data, int timeout, char strncpy(as->exten, exten, sizeof(as->exten) - 1); as->priority = priority; as->timeout = timeout; - if (pthread_create(&as->p, NULL, async_wait, as)) { + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + if (pthread_create(&as->p, &attr, async_wait, as)) { ast_log(LOG_WARNING, "Failed to start async wait\n"); free(as); ast_hangup(chan); @@ -3895,6 +3899,8 @@ int ast_pbx_outgoing_app(char *type, int format, void *data, int timeout, char * struct app_tmp *tmp; char *var, *vartmp; int res = -1; + pthread_attr_t attr; + if (!app || !strlen(app)) return -1; if (sync) { @@ -3917,7 +3923,9 @@ int ast_pbx_outgoing_app(char *type, int format, void *data, int timeout, char * if (sync > 1) { ast_pbx_run_app(tmp); } else { - if (pthread_create(&tmp->t, NULL, ast_pbx_run_app, tmp)) { + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + if (pthread_create(&tmp->t, &attr, ast_pbx_run_app, tmp)) { ast_log(LOG_WARNING, "Unable to spawn execute thread on %s: %s\n", chan->name, strerror(errno)); free(tmp); ast_hangup(chan); -- cgit v1.2.3