aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-01-31 21:32:08 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-01-31 21:32:08 +0000
commit2575db2212e7d80f55f6804f83d63e9a1cf48798 (patch)
treee7f13c5a00659352f3f3249fa9149a50db6dbceb
parent30a7992b379e6488d2e53b324c25de8d92c3aaac (diff)
Merged revisions 53045 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r53045 | russell | 2007-01-31 15:25:11 -0600 (Wed, 31 Jan 2007) | 3 lines Fix a bunch of places where pthread_attr_init() was called, but pthread_attr_destroy() was not. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@53046 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--apps/app_meetme.c1
-rw-r--r--apps/app_queue.c1
-rw-r--r--apps/app_rpt.c5
-rw-r--r--channels/chan_h323.c2
-rw-r--r--channels/chan_iax2.c7
-rw-r--r--channels/chan_mgcp.c1
-rw-r--r--channels/chan_sip.c2
-rw-r--r--channels/chan_skinny.c1
-rw-r--r--channels/chan_zap.c17
-rw-r--r--main/cdr.c1
-rw-r--r--main/http.c1
-rw-r--r--main/manager.c1
-rw-r--r--main/pbx.c7
-rw-r--r--pbx/pbx_dundi.c6
-rw-r--r--pbx/pbx_spool.c2
15 files changed, 47 insertions, 8 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 444f3c7b9..0e54aa4fc 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -1072,6 +1072,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
pthread_attr_init(&conf->attr);
pthread_attr_setdetachstate(&conf->attr, PTHREAD_CREATE_DETACHED);
ast_pthread_create_background(&conf->recordthread, &conf->attr, recordthread, conf);
+ pthread_attr_destroy(&conf->attr);
}
time(&user->jointime);
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 5442e24c7..9bb6b5b7d 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -609,6 +609,7 @@ static int statechange_queue(const char *dev, int state, void *ign)
ast_log(LOG_WARNING, "Failed to create update thread!\n");
free(sc);
}
+ pthread_attr_destroy(&attr);
return 0;
}
diff --git a/apps/app_rpt.c b/apps/app_rpt.c
index 9872051cb..34732a25a 100644
--- a/apps/app_rpt.c
+++ b/apps/app_rpt.c
@@ -2613,6 +2613,7 @@ pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
res = ast_pthread_create(&tele->threadid,&attr,rpt_tele_thread,(void *) tele);
+ pthread_attr_destroy(&attr);
if(res < 0){
rpt_mutex_lock(&myrpt->lock);
remque((struct qlem *) tele); /* We don't like stuck transmitters, remove it from the queue */
@@ -3380,6 +3381,7 @@ static int function_autopatchup(struct rpt *myrpt, char *param, char *digitbuf,
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ast_pthread_create(&myrpt->rpt_call_thread,&attr,rpt_call,(void *) myrpt);
+ pthread_attr_destroy(&attr);
return DC_COMPLETE;
}
@@ -5936,6 +5938,7 @@ char cmd[MAXDTMF+1] = "";
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ast_pthread_create(&myrpt->rpt_call_thread,&attr,rpt_call,(void *)myrpt);
+ pthread_attr_destroy(&attr);
return;
}
}
@@ -7219,6 +7222,7 @@ struct ast_config *cfg;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ast_pthread_create(&rpt_vars[i].rpt_thread,&attr,rpt,(void *) &rpt_vars[i]);
+ pthread_attr_destroy(&attr);
}
usleep(500000);
for(;;)
@@ -7254,6 +7258,7 @@ struct ast_config *cfg;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ast_pthread_create(&rpt_vars[i].rpt_thread,&attr,rpt,(void *) &rpt_vars[i]);
+ pthread_attr_destroy(&attr);
ast_log(LOG_WARNING, "rpt_thread restarted on node %s\n", rpt_vars[i].name);
}
diff --git a/channels/chan_h323.c b/channels/chan_h323.c
index 01d9259a9..6557623e8 100644
--- a/channels/chan_h323.c
+++ b/channels/chan_h323.c
@@ -2524,8 +2524,10 @@ static int restart_monitor(void)
monitor_thread = AST_PTHREADT_NULL;
ast_mutex_unlock(&monlock);
ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
+ pthread_attr_destroy(&attr);
return -1;
}
+ pthread_attr_destroy(&attr);
}
ast_mutex_unlock(&monlock);
return 0;
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 47604758e..29031796d 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -6059,6 +6059,8 @@ static void spawn_dp_lookup(int callno, const char *context, const char *calledn
if (ast_pthread_create(&newthread, &attr, dp_lookup_thread, dpr)) {
ast_log(LOG_WARNING, "Unable to start lookup thread!\n");
}
+
+ pthread_attr_destroy(&attr);
}
struct iax_dual {
@@ -6133,8 +6135,11 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2)
d->chan1 = chan1m;
d->chan2 = chan2m;
- if (!ast_pthread_create_background(&th, &attr, iax_park_thread, d))
+ if (!ast_pthread_create_background(&th, &attr, iax_park_thread, d)) {
+ pthread_attr_destroy(&attr);
return 0;
+ }
+ pthread_attr_destroy(&attr);
free(d);
}
return -1;
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 78d1948f0..80e0bb07f 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -2995,6 +2995,7 @@ static void handle_hd_hf(struct mgcp_subchannel *sub, char *ev)
/*ast_queue_control(sub->owner, AST_CONTROL_ANSWER);*/
}
}
+ pthread_attr_destroy(&attr);
}
static int handle_request(struct mgcp_subchannel *sub, struct mgcp_request *req, struct sockaddr_in *sin)
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index fd71c464b..ce4a883a6 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -12629,8 +12629,10 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct
/* Could not start thread */
free(d); /* We don't need it anymore. If thread is created, d will be free'd
by sip_park_thread() */
+ pthread_attr_destroy(&attr);
return 0;
}
+ pthread_attr_destroy(&attr);
}
return -1;
}
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index de321b885..1ba7f126a 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -4302,6 +4302,7 @@ static void *accept_thread(void *ignore)
if (skinnydebug)
ast_verbose("killing accept thread\n");
close(as);
+ pthread_attr_destroy(&attr);
return 0;
}
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 1420b6037..56421ca8a 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -3591,9 +3591,6 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
pthread_attr_t attr;
struct ast_channel *chan;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-
index = zt_get_index(ast, p, 0);
mysig = p->sig;
if (p->outsigmod > -1)
@@ -4178,6 +4175,8 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
if (res)
ast_log(LOG_WARNING, "Unable to start dial recall tone on channel %d\n", p->channel);
p->owner = chan;
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (!chan) {
ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", p->channel);
} else if (ast_pthread_create(&threadid, &attr, ss_thread, chan)) {
@@ -4195,7 +4194,8 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
}
p->subs[SUB_THREEWAY].needhold = 1;
- }
+ }
+ pthread_attr_destroy(&attr);
}
} else {
/* Already have a 3 way call */
@@ -6686,6 +6686,7 @@ static int handle_init_event(struct zt_pvt *i, int event)
"interface %d\n", i->channel);
}
}
+ pthread_attr_destroy(&attr);
return 0;
}
@@ -6908,10 +6909,12 @@ static int restart_monitor(void)
if (ast_pthread_create_background(&monitor_thread, &attr, do_monitor, NULL) < 0) {
ast_mutex_unlock(&monlock);
ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
+ pthread_attr_destroy(&attr);
return -1;
}
}
ast_mutex_unlock(&monlock);
+ pthread_attr_destroy(&attr);
return 0;
}
@@ -8248,9 +8251,6 @@ static void *pri_dchannel(void *vpri)
char plancallingani[256];
char calledtonstr[10];
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-
gettimeofday(&lastidle, NULL);
if (!ast_strlen_zero(pri->idledial) && !ast_strlen_zero(pri->idleext)) {
/* Need to do idle dialing, check to be sure though */
@@ -8741,6 +8741,8 @@ static void *pri_dchannel(void *vpri)
pbx_builtin_setvar_helper(c, "PRIREDIRECTREASON", redirectingreason2str(e->ring.redirectingreason));
ast_mutex_lock(&pri->lock);
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (c && !ast_pthread_create(&threadid, &attr, ss_thread, c)) {
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Accepting overlap call from '%s' to '%s' on channel %d/%d, span %d\n",
@@ -8756,6 +8758,7 @@ static void *pri_dchannel(void *vpri)
pri->pvts[chanpos]->call = NULL;
}
}
+ pthread_attr_destroy(&attr);
} else {
ast_mutex_unlock(&pri->lock);
/* Release PRI lock while we create the channel */
diff --git a/main/cdr.c b/main/cdr.c
index 02794ddf0..6aef9b51e 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -860,6 +860,7 @@ void ast_cdr_submit_batch(int shutdown)
if (option_debug)
ast_log(LOG_DEBUG, "CDR multi-threaded batch processing begins now\n");
}
+ pthread_attr_destroy(&attr);
}
}
diff --git a/main/http.c b/main/http.c
index ce6a690e5..80841a223 100644
--- a/main/http.c
+++ b/main/http.c
@@ -539,6 +539,7 @@ static void *http_root(void *data)
fclose(ser->f);
free(ser);
}
+ pthread_attr_destroy(&attr);
} else {
ast_log(LOG_WARNING, "fdopen failed!\n");
close(ser->fd);
diff --git a/main/manager.c b/main/manager.c
index 14019986c..0cbdeb781 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -1752,6 +1752,7 @@ static int action_originate(struct mansession *s, const struct message *m)
} else {
res = 0;
}
+ pthread_attr_destroy(&attr);
}
} else if (!ast_strlen_zero(app)) {
res = ast_pbx_outgoing_app(tech, AST_FORMAT_SLINEAR, data, to, app, appdata, &reason, 1, l, n, vars, account, NULL);
diff --git a/main/pbx.c b/main/pbx.c
index 41ad2312d..230b06b9f 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -2585,8 +2585,10 @@ enum ast_pbx_result ast_pbx_start(struct ast_channel *c)
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (ast_pthread_create(&t, &attr, pbx_thread, c)) {
ast_log(LOG_WARNING, "Failed to create new channel thread\n");
+ pthread_attr_destroy(&attr);
return AST_PBX_FAILED;
}
+ pthread_attr_destroy(&attr);
return AST_PBX_SUCCESS;
}
@@ -5048,8 +5050,10 @@ int ast_pbx_outgoing_exten(const char *type, int format, void *data, int timeout
}
ast_hangup(chan);
res = -1;
+ pthread_attr_destroy(&attr);
goto outgoing_exten_cleanup;
}
+ pthread_attr_destroy(&attr);
res = 0;
}
outgoing_exten_cleanup:
@@ -5151,6 +5155,7 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout,
if (locked_channel)
*locked_channel = chan;
}
+ pthread_attr_destroy(&attr);
}
}
} else {
@@ -5209,11 +5214,13 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout,
ast_channel_unlock(chan);
ast_hangup(chan);
res = -1;
+ pthread_attr_destroy(&attr);
goto outgoing_app_cleanup;
} else {
if (locked_channel)
*locked_channel = chan;
}
+ pthread_attr_destroy(&attr);
res = 0;
}
outgoing_app_cleanup:
diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index 99295826e..007c65d13 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -783,8 +783,10 @@ static int dundi_answer_entity(struct dundi_transaction *trans, struct dundi_ies
memset(&ied, 0, sizeof(ied));
dundi_ie_append_cause(&ied, DUNDI_IE_CAUSE, DUNDI_CAUSE_GENERAL, "Out of threads");
dundi_send(trans, DUNDI_COMMAND_EIDRESPONSE, 0, 1, &ied);
+ pthread_attr_destroy(&attr);
return -1;
}
+ pthread_attr_destroy(&attr);
} else {
ast_log(LOG_WARNING, "Out of memory!\n");
memset(&ied, 0, sizeof(ied));
@@ -1009,8 +1011,10 @@ static int dundi_prop_precache(struct dundi_transaction *trans, struct dundi_ies
memset(&ied, 0, sizeof(ied));
dundi_ie_append_cause(&ied, DUNDI_IE_CAUSE, DUNDI_CAUSE_GENERAL, "Out of threads");
dundi_send(trans, DUNDI_COMMAND_PRECACHERP, 0, 1, &ied);
+ pthread_attr_destroy(&attr);
return -1;
}
+ pthread_attr_destroy(&attr);
} else {
ast_log(LOG_WARNING, "Out of memory!\n");
memset(&ied, 0, sizeof(ied));
@@ -1095,8 +1099,10 @@ static int dundi_answer_query(struct dundi_transaction *trans, struct dundi_ies
memset(&ied, 0, sizeof(ied));
dundi_ie_append_cause(&ied, DUNDI_IE_CAUSE, DUNDI_CAUSE_GENERAL, "Out of threads");
dundi_send(trans, DUNDI_COMMAND_DPRESPONSE, 0, 1, &ied);
+ pthread_attr_destroy(&attr);
return -1;
}
+ pthread_attr_destroy(&attr);
} else {
ast_log(LOG_WARNING, "Out of memory!\n");
memset(&ied, 0, sizeof(ied));
diff --git a/pbx/pbx_spool.c b/pbx/pbx_spool.c
index 2293ca9ab..4d6e955d8 100644
--- a/pbx/pbx_spool.c
+++ b/pbx/pbx_spool.c
@@ -367,6 +367,7 @@ static void launch_service(struct outgoing *o)
ast_log(LOG_WARNING, "Unable to create thread :( (returned error: %d)\n", ret);
free_outgoing(o);
}
+ pthread_attr_destroy(&attr);
}
static int scan_service(char *fn, time_t now, time_t atime)
@@ -499,6 +500,7 @@ static int load_module(void)
ast_log(LOG_WARNING, "Unable to create thread :( (returned error: %d)\n", ret);
return -1;
}
+ pthread_attr_destroy(&attr);
return 0;
}