[asterisk-commits] tilghman: branch 1.6.1 r165660 - in /branches/1.6.1: ./ apps/app_voicemail.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Dec 18 12:47:09 CST 2008


Author: tilghman
Date: Thu Dec 18 12:47:08 2008
New Revision: 165660

URL: http://svn.digium.com/view/asterisk?view=rev&rev=165660
Log:
Merged revisions 165658 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r165658 | tilghman | 2008-12-18 12:36:48 -0600 (Thu, 18 Dec 2008) | 2 lines
  
  Fix 2 resource leaks and fix another pipe-to-comma conversion
........

Modified:
    branches/1.6.1/   (props changed)
    branches/1.6.1/apps/app_voicemail.c

Propchange: branches/1.6.1/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.1/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.1/apps/app_voicemail.c?view=diff&rev=165660&r1=165659&r2=165660
==============================================================================
--- branches/1.6.1/apps/app_voicemail.c (original)
+++ branches/1.6.1/apps/app_voicemail.c Thu Dec 18 12:47:08 2008
@@ -6210,7 +6210,6 @@
 			int old_priority;
 			struct ast_app* directory_app;
 
-			
 			directory_app = pbx_findapp("Directory");
 			if (directory_app) {
 				char vmcontext[256];
@@ -6220,7 +6219,7 @@
 				old_priority = chan->priority;
 				
 				/* call the the Directory, changes the channel */
-				snprintf(vmcontext, sizeof(vmcontext), "%s||v", context ? context : "default");
+				snprintf(vmcontext, sizeof(vmcontext), "%s,,v", context ? context : "default");
 				res = pbx_exec(chan, directory_app, vmcontext);
 				
 				ast_copy_string(username, chan->exten, sizeof(username));
@@ -6229,7 +6228,6 @@
 				memcpy(chan->context, old_context, sizeof(chan->context));
 				memcpy(chan->exten, old_exten, sizeof(chan->exten));
 				chan->priority = old_priority;
-				
 			} else {
 				ast_log(AST_LOG_WARNING, "Could not find the Directory application, disabling directory_forward\n");
 				ast_clear_flag((&globalflags), VM_DIRECFORWARD);
@@ -6255,6 +6253,14 @@
 				AST_LIST_INSERT_HEAD(&extensions, receiver, list);
 				found++;
 			} else {
+				/* XXX Optimization for the future.  When we encounter a single bad extension,
+				 * bailing out on all of the extensions may not be the way to go.  We should
+				 * probably just bail on that single extension, then allow the user to enter
+				 * several more. XXX
+				 */
+				while ((receiver = AST_LIST_REMOVE_HEAD(&extensions, list))) {
+					free_user(receiver);
+				}
 				valid_extensions = 0;
 				break;
 			}
@@ -6269,10 +6275,9 @@
 					return res;
 				}
 			} else {
-				/* Dispose just in case */
-				DISPOSE(fn, -1);
 				res = ast_say_digit_str(chan, s, ecodes, chan->language);
 			}
+			DISPOSE(fn, -1);
 
 			s = strsep(&stringp, "*");
 		}




More information about the asterisk-commits mailing list