diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-05 16:56:40 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-05 16:56:40 +0000 |
commit | 19e8dc973ba0b16d8c0b6efbe5da0ec516d74f7e (patch) | |
tree | c9043e8bd93e6a2a02aa9a04e2510a45f1772bc9 /channels/chan_iax2.c | |
parent | 1290d19a8849791f9673e420888c1da4c51b1e73 (diff) |
ensure that threads which are supposed to be detached (because we aren't going to wait on them) are created properly
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@49635 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r-- | channels/chan_iax2.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 1adac13e2..2fa2cc2c5 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -6210,13 +6210,18 @@ static void spawn_dp_lookup(int callno, char *context, char *callednum, char *ca struct dpreq_data *dpr; dpr = malloc(sizeof(struct dpreq_data)); if (dpr) { + pthread_attr_t attr; + + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + memset(dpr, 0, sizeof(struct dpreq_data)); dpr->callno = callno; ast_copy_string(dpr->context, context, sizeof(dpr->context)); ast_copy_string(dpr->callednum, callednum, sizeof(dpr->callednum)); if (callerid) dpr->callerid = strdup(callerid); - if (ast_pthread_create(&newthread, NULL, dp_lookup_thread, dpr)) { + if (ast_pthread_create(&newthread, &attr, dp_lookup_thread, dpr)) { ast_log(LOG_WARNING, "Unable to start lookup thread!\n"); } } else @@ -6291,10 +6296,15 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2) } d = malloc(sizeof(struct iax_dual)); if (d) { + pthread_attr_t attr; + + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + memset(d, 0, sizeof(*d)); d->chan1 = chan1m; d->chan2 = chan2m; - if (!ast_pthread_create(&th, NULL, iax_park_thread, d)) + if (!ast_pthread_create(&th, &attr, iax_park_thread, d)) return 0; free(d); } |