]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 53045 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Wed, 31 Jan 2007 21:32:08 +0000 (21:32 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 31 Jan 2007 21:32:08 +0000 (21:32 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.4@53046 65c4cc65-6c06-0410-ace0-fbb531ad65f3

15 files changed:
apps/app_meetme.c
apps/app_queue.c
apps/app_rpt.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
main/cdr.c
main/http.c
main/manager.c
main/pbx.c
pbx/pbx_dundi.c
pbx/pbx_spool.c

index 444f3c7b94470986f77779697ef2f6ae6aea6a03..0e54aa4fc5e01df6cb52429321ae8d0dad54d9fa 100644 (file)
@@ -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);
index 5442e24c7f749b96de2dc7e8118c4cc1d553205b..9bb6b5b7dd841ee39a839015d507c172635c670c 100644 (file)
@@ -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;
 }
index 9872051cb3d5b18fcee91093379763fedf53e8a3..34732a25a179d0f7191f53e2ea9603fcb94941f7 100644 (file)
@@ -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);
                        }
 
index 01d9259a9b8ee1c4de6e12b96eb5971458af1c8c..6557623e8c0b34fddc33cab30f6718f6d4038c25 100644 (file)
@@ -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;
index 47604758ef1afec0b415643e7bf649e0b51d4351..29031796dea7a68e82e6569afa896f5f0ed3b02a 100644 (file)
@@ -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;
index 78d1948f06e1f2f965ec4771625bea18402dbd4a..80e0bb07f7f8cb26f9501f36413bfa731486032f 100644 (file)
@@ -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)
index fd71c464b65dc5bbe47a5249c81fdfcffc3be363..ce4a883a6ade0592aed66402efc8ac8875a923a5 100644 (file)
@@ -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;
 }
index de321b885653ff5338618a8d5316620c64275565..1ba7f126af81d9944bbbc377e137b9938aa69290 100644 (file)
@@ -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;
 }
 
index 1420b60370f22d8d9e25577c71027d22ccd260b7..56421ca8ae948df1d4118af143f3ba73f6a3ca31 100644 (file)
@@ -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 */
index 02794ddf0960106fa199636c9ab8afda5a94846e..6aef9b51ed3870cf0383b1703b0cacaaaebd8902 100644 (file)
@@ -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);
        }
 }
 
index ce6a690e5a855ba3a1bc0278bbfad753fb2ab413..80841a2235a0be006811f1394cda9c2902d756e8 100644 (file)
@@ -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);
index 14019986c4d201ccffdc86b64727a0fd74d9e0de..0cbdeb7811d0f3087196fb0894c1c99108ff2ea7 100644 (file)
@@ -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);
index 41ad2312d4227f31ed29f0182b6169ae2be1ac35..230b06b9fd71caac82b2307b28b2b41ebaa49c78 100644 (file)
@@ -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:
index 99295826ec77c54267468944b83d6375ddfa7273..007c65d13de82e4ae93c7a89293b129b5f567671 100644 (file)
@@ -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));
index 2293ca9ab7906d96cc1b11a697c9ea9fcdd229c6..4d6e955d8182cd1b35059b7373a69f00ffc673e3 100644 (file)
@@ -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;
 }