[asterisk-commits] trunk r18261 - in /trunk: ./ channels/chan_sip.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Apr 7 07:30:18 MST 2006


Author: oej
Date: Fri Apr  7 09:30:14 2006
New Revision: 18261

URL: http://svn.digium.com/view/asterisk?rev=18261&view=rev
Log:
Import of revistion 18250 from 1.2
- Fix minor memory leak
- Add proper cause codes on memory allocation failures

Modified:
    trunk/   (props changed)
    trunk/channels/chan_sip.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=18261&r1=18260&r2=18261&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri Apr  7 09:30:14 2006
@@ -12114,16 +12114,22 @@
 	char *dest = data;
 
 	oldformat = format;
-	format &= ((AST_FORMAT_MAX_AUDIO << 1) - 1);
-	if (!format) {
+	if ((format &= ((AST_FORMAT_MAX_AUDIO << 1) - 1))) {
 		ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format %s while capability is %s\n", ast_getformatname(oldformat), ast_getformatname(global_capability));
 		return NULL;
 	}
-	if (!(p = sip_alloc(NULL, NULL, 0, SIP_INVITE)))
+	if (!(p = sip_alloc(NULL, NULL, 0, SIP_INVITE))) {
+		ast_log(LOG_ERROR, "Unable to build sip pvt data for '%s' (Out of memory)\n", (char *)data);
+		*cause = AST_CAUSE_CONGESTION;
 		return NULL;
-
-	if (!(p->options = ast_calloc(1, sizeof(*p->options))))
+	}
+
+	if (!(p->options = ast_calloc(1, sizeof(*p->options)))) {
+		sip_destroy(p);
+		ast_log(LOG_ERROR, "Unable to build option SIP data structure - Out of memory\n");
+		*cause = AST_CAUSE_CONGESTION;
 		return NULL;
+	}
 
 	ast_copy_string(tmp, dest, sizeof(tmp));
 	host = strchr(tmp, '@');



More information about the asterisk-commits mailing list