]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix a bunch of places where pthread_attr_init() was called, but
authorRussell Bryant <russell@russellbryant.com>
Wed, 31 Jan 2007 21:25:11 +0000 (21:25 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 31 Jan 2007 21:25:11 +0000 (21:25 +0000)
pthread_attr_destroy() was not.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@53045 65c4cc65-6c06-0410-ace0-fbb531ad65f3

15 files changed:
apps/app_meetme.c
apps/app_page.c
apps/app_queue.c
apps/app_rpt.c
cdr.c
channels/chan_h323.c
channels/chan_iax2.c
channels/chan_mgcp.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_zap.c
manager.c
pbx.c
pbx/pbx_dundi.c
pbx/pbx_spool.c

index a29289ed86561b58a14dc4a5fb8abfc9c11ec1d3..1efd4bbb4d346f20afcd98624870153780a523e5 100644 (file)
@@ -862,6 +862,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
                ast_verbose(VERBOSE_PREFIX_4 "Starting recording of MeetMe Conference %s into file %s.%s.\n",
                            conf->confno, conf->recordingfilename, conf->recordingformat);
                ast_pthread_create(&conf->recordthread, &conf->attr, recordthread, conf);
+               pthread_attr_destroy(&conf->attr);
        }
 
        time(&user->jointime);
index c1668cc7f00a7248e19a56fb0a3990a44fff5b6c..e57e5d0510ec5668bf367ae7b419cb43695ba0e9 100644 (file)
@@ -135,6 +135,7 @@ static void launch_page(struct ast_channel *chan, const char *meetmeopts, const
                        ast_log(LOG_WARNING, "Unable to create paging thread: %s\n", strerror(errno));
                        free(cd);
                }
+               pthread_attr_destroy(&attr);
        }
 }
 
index 64117322f78c059550db4aeb8e4546d307f4d657..b6d809862f3a90354a0bbeaf2bea0c93d9dbb192 100644 (file)
@@ -562,6 +562,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;
 }
index 913baaba8faa6549a474ea1cd404838f3934ae02..a3f86c8204b8a9b30a5a1ceca0f6e9afe3efbd17 100644 (file)
@@ -1521,6 +1521,7 @@ pthread_attr_t attr;
         pthread_attr_init(&attr);
         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        ast_pthread_create(&tele->threadid,&attr,rpt_tele_thread,(void *) tele);
+       pthread_attr_destroy(&attr);
        return;
 }
 
@@ -2153,6 +2154,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;
 }
 
@@ -5239,6 +5241,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);
                                                continue;
                                        }
                                }
@@ -5781,6 +5784,7 @@ pthread_attr_t attr;
                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(;;)
@@ -5816,6 +5820,7 @@ pthread_attr_t attr;
                                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/cdr.c b/cdr.c
index f09d1e131109a7bb2870651951c9a8bf2b249131..6838d619c93b0b03db50e1fbabebc06e98cb8749 100644 (file)
--- a/cdr.c
+++ b/cdr.c
@@ -956,6 +956,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);
        }
 }
 
index 1b4a616a5fae89f8f4a9115c551b43d85e897458..b2d4d8184fde79c4e445b70190ffb493a5fe2a46 100644 (file)
@@ -1642,9 +1642,11 @@ static int restart_monitor(void)
                 /* Start a new monitor */
                 if (ast_pthread_create(&monitor_thread, &attr, do_monitor, NULL) < 0) {
                         ast_mutex_unlock(&monlock);
+                                               pthread_attr_destroy(&attr);
                         ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
                         return -1;
                 }
+               pthread_attr_destroy(&attr);
 
        }
        ast_mutex_unlock(&monlock);
index 76592002aa82129088ed5b1639f2b45edccd307c..eca422dfbbd534f5e3babd98b1e780da294117be 100644 (file)
@@ -6224,6 +6224,7 @@ static void spawn_dp_lookup(int callno, char *context, char *callednum, char *ca
                if (ast_pthread_create(&newthread, &attr, dp_lookup_thread, dpr)) {
                        ast_log(LOG_WARNING, "Unable to start lookup thread!\n");
                }
+               pthread_attr_destroy(&attr);
        } else
                ast_log(LOG_WARNING, "Out of memory!\n");
 }
@@ -6304,8 +6305,11 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2)
                memset(d, 0, sizeof(*d));
                d->chan1 = chan1m;
                d->chan2 = chan2m;
-               if (!ast_pthread_create(&th, &attr, iax_park_thread, d))
+               if (!ast_pthread_create(&th, &attr, iax_park_thread, d)) {
+                       pthread_attr_destroy(&attr);
                        return 0;
+               }
+               pthread_attr_destroy(&attr);
                free(d);
        }
        return -1;
index 14b1874260562b97ebc8d8632275fa307a4b2192..de2d6a4008899a78abc6eb380e9e73f03835092d 100644 (file)
@@ -2963,6 +2963,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)
index a316065f291574206bf40a64efa8709537d20f85..5e1613275791d867d6ea9035bc85479834c8ad59 100644 (file)
@@ -10402,8 +10402,11 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct
                copy_request(&d->req, req);
                d->chan1 = chan1m;
                d->chan2 = chan2m;
-               if (!ast_pthread_create(&th, &attr, sip_park_thread, d))
+               if (!ast_pthread_create(&th, &attr, sip_park_thread, d)) {
+                       pthread_attr_destroy(&attr);
                        return 0;
+               }
+               pthread_attr_destroy(&attr);
                free(d);
        }
        return -1;
index ca55bfcad72b9d17cc7ee68a1ea90f3fe689030d..3cfd9d64687daf56d4ae74c882653327325a1a97 100644 (file)
@@ -2977,6 +2977,7 @@ static void *accept_thread(void *ignore)
                ast_verbose("killing accept thread\n");
        }
        close(as);
+       pthread_attr_destroy(&attr);
        return 0;
 }
 
index e8a88579156c9ec87d9dbba8fd499f72d2dd163a..45ebb0c786e555cb66a3ce3a6d5bc0696e75d282 100644 (file)
@@ -3668,9 +3668,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);
        p->subs[index].f.frametype = AST_FRAME_NULL;
        p->subs[index].f.datalen = 0;
@@ -4199,6 +4196,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)) {
@@ -4212,7 +4211,8 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
                                                        /* Start music on hold if appropriate */
                                                        if (ast_bridged_channel(p->subs[SUB_THREEWAY].owner))
                                                                ast_moh_start(ast_bridged_channel(p->subs[SUB_THREEWAY].owner), NULL);
-                                               }               
+                                               }
+                                               pthread_attr_destroy(&attr);
                                        }
                                } else {
                                        /* Already have a 3 way call */
@@ -6579,6 +6579,7 @@ static int handle_init_event(struct zt_pvt *i, int event)
                                "interface %d\n", i->channel);
                }
        }
+       pthread_attr_destroy(&attr);
        return 0;
 }
 
@@ -6838,10 +6839,12 @@ static int restart_monitor(void)
                if (ast_pthread_create(&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;
 }
 
@@ -8193,9 +8196,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 */
@@ -8683,6 +8683,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",
@@ -8698,6 +8700,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 */
index 5254f77496ab17920423682df840c9324e6f4d7c..419d7cae4ca02d69ca212c8a562523219b622bc8 100644 (file)
--- a/manager.c
+++ b/manager.c
@@ -1077,6 +1077,7 @@ static int action_originate(struct mansession *s, 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/pbx.c b/pbx.c
index 5fae072cafc061ce9a42fb3e119ec9aee41a26a5..b126c3ddb76b041ffb2ca30e1c0612a0740651f4 100644 (file)
--- a/pbx.c
+++ b/pbx.c
@@ -2541,8 +2541,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;
 }
@@ -5125,8 +5127,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:
@@ -5228,6 +5232,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 {
                                        ast_log(LOG_ERROR, "Out of memory :(\n");
@@ -5290,11 +5295,13 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout,
                                ast_mutex_unlock(&chan->lock);
                        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:
index 8f0457296dd36d164d42dd92467a78bd9992add6..8b87c8ec92d18d828ff0e153ee086991fb3b4674 100644 (file)
@@ -799,8 +799,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));
@@ -1030,8 +1032,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));
@@ -1122,8 +1126,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));
index 187beda1c3c6286df707eaaf3207ea34baa27745..0fac2b1a9bda57897309cc5e54126714c864cd4d 100644 (file)
@@ -295,6 +295,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)
@@ -426,6 +427,7 @@ 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;
 }