From: Russell Bryant Date: Thu, 19 Oct 2006 01:04:18 +0000 (+0000) Subject: Merge fix to not leak the stringfields of a thread speicif sip_pvt. This also X-Git-Tag: 1.6.0-beta1~3^2~4344 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=777d03bd17ffadd7091c059c59bc4d8392affdd5;p=thirdparty%2Fasterisk.git Merge fix to not leak the stringfields of a thread speicif sip_pvt. This also includes the fix not to leak the actual sip_pvt. Merged revisions 45622 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r45622 | russell | 2006-10-18 20:59:51 -0400 (Wed, 18 Oct 2006) | 2 lines Don't leak the actual thread-specific sip_pvt struct ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45624 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 18b232587a..c23f54aa32 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1142,8 +1142,10 @@ static struct ast_register_list { int recheck; } regl; +static void temp_pvt_cleanup(void *); + /*! \brief A per-thread temporary pvt structure */ -AST_THREADSTORAGE(ts_temp_pvt); +AST_THREADSTORAGE_CUSTOM(ts_temp_pvt, NULL, temp_pvt_cleanup); /*! \todo Move the sip_auth list to AST_LIST */ static struct sip_auth *authl = NULL; /*!< Authentication list for realm authentication */ @@ -5530,6 +5532,15 @@ static int __transmit_response(struct sip_pvt *p, const char *msg, const struct return send_response(p, &resp, reliable, seqno); } +static void temp_pvt_cleanup(void *data) +{ + struct sip_pvt *p = data; + + ast_string_field_free_pools(p); + + free(data); +} + /*! \brief Transmit response, no retransmits, using a temporary pvt structure */ static int transmit_response_using_temp(ast_string_field callid, struct sockaddr_in *sin, int useglobal_nat, const int intended_method, const struct sip_request *req, const char *msg) {