[svn-commits] rmudgett: branch group/issue14292 r173208 - in /team/group/issue14292: ./ app...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Feb 3 15:37:04 CST 2009


Author: rmudgett
Date: Tue Feb  3 15:37:04 2009
New Revision: 173208

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=173208
Log:
Merged revisions 172739,172774,172812,172851,172903,172935,172961,173023,173078,173140,173162,173202 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/team/group/issue14068

................
  r172739 | root | 2009-01-31 12:17:21 -0600 (Sat, 31 Jan 2009) | 21 lines
  
  Merged revisions 172715 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172715 | root | 2009-01-31 11:18:54 -0600 (Sat, 31 Jan 2009) | 14 lines
    
    Merged revisions 172706 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172706 | tilghman | 2009-01-31 10:40:59 -0600 (Sat, 31 Jan 2009) | 7 lines
      
      Don't increment the loop, now that incrementing is taken care of by the
      decoder function.
      (closes issue #14363)
       Reported by: andrew53
       Patches: 
             func_strings_filter.patch uploaded by andrew53 (license 519)
    ........
  ................
................
  r172774 | root | 2009-01-31 22:17:22 -0600 (Sat, 31 Jan 2009) | 18 lines
  
  Merged revisions 172750 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172750 | root | 2009-01-31 21:19:04 -0600 (Sat, 31 Jan 2009) | 11 lines
    
    Merged revisions 172741 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172741 | tilghman | 2009-01-31 20:44:23 -0600 (Sat, 31 Jan 2009) | 4 lines
      
      Blank argument crashes Asterisk
      (closes issue #14377)
       Reported by: amorsen
    ........
  ................
................
  r172812 | root | 2009-02-01 21:17:18 -0600 (Sun, 01 Feb 2009) | 18 lines
  
  Merged revisions 172787 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172787 | root | 2009-02-01 20:18:59 -0600 (Sun, 01 Feb 2009) | 11 lines
    
    Merged revisions 172778 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172778 | seanbright | 2009-02-01 19:41:29 -0600 (Sun, 01 Feb 2009) | 4 lines
      
      The CID lookup feature wasn't actually working properly with dialog-info+xml
      supporting devices.  The devices (snoms, specifically) need to receive a SIP
      URI instead of just an extension.  This adds that functionality.
    ........
  ................
................
  r172851 | root | 2009-02-02 06:17:21 -0600 (Mon, 02 Feb 2009) | 26 lines
  
  Merged revisions 172826 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172826 | root | 2009-02-02 05:18:55 -0600 (Mon, 02 Feb 2009) | 19 lines
    
    Merged revisions 172816-172818 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172816 | oej | 2009-02-02 04:29:07 -0600 (Mon, 02 Feb 2009) | 3 lines
      
      Add some well-needed improvements to the wishlist in the code, so that we can close
      some bug reports. 
    ........
      r172817 | oej | 2009-02-02 04:44:48 -0600 (Mon, 02 Feb 2009) | 2 lines
      
      Small formatting change
    ........
      r172818 | oej | 2009-02-02 04:46:19 -0600 (Mon, 02 Feb 2009) | 3 lines
      
      Add a todo. I do need to really check what's going on with this kill-the-user business ;-)
      Why do we suddenly have two flags to set peer type?
    ........
  ................
................
  r172903 | root | 2009-02-02 12:18:29 -0600 (Mon, 02 Feb 2009) | 16 lines
  
  Merged revisions 172864 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172864 | root | 2009-02-02 11:19:05 -0600 (Mon, 02 Feb 2009) | 9 lines
    
    Merged revisions 172855 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172855 | russell | 2009-02-02 10:42:58 -0600 (Mon, 02 Feb 2009) | 2 lines
      
      Fix a spelling mistake.
    ........
  ................
................
  r172935 | root | 2009-02-02 13:18:15 -0600 (Mon, 02 Feb 2009) | 63 lines
  
  Merged revisions 172904 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172904 | root | 2009-02-02 12:18:51 -0600 (Mon, 02 Feb 2009) | 56 lines
    
    Merged revisions 172890,172894 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172890 | murf | 2009-02-02 11:37:15 -0600 (Mon, 02 Feb 2009) | 41 lines
      
      This change allows the disconnect feature (as in "one-touch" in features.c)
      to be used within the dial app, before a call is bridged.
      
      Many thanks to sobomax for submitting this patch. 
      
      Quoting from bug 11582:
      
        "So the goal of the patch was to use the user configured feature code during the 
         call setup phase. The original ast_feature_interpret() function is not well suited 
         for this purpose as it uses much call bridge specific data and doesn't separate a 
         detection of feature from a feature handler call. So a new function ast_feature_detect() 
         has been extracted off the ast_feature_interpret() function but keeping the original 
         logic intact except some insignificant changes to locking.
      
        "Having created the ast_feature_detect() function the possibility to use feature detection 
         in almost any place of the asterisk code. So a call to this function has been added to 
         wait_for_answer() function of app_dial.so module. This code doesn't call the feature handler 
         however and uses old call leg disconnect logic to make the changes as small and simple as 
         possible to prevent unexpected problems. A disconnect feature currently is the only one 
         supported during call setup as other features as call parking and call transfer don't make much 
         sense during call setup. However if need in some of the features would arise it is much easier to 
         implement as the infrastructure changes are already in place with this patch."
      
      I have cleaned up the patch somewhat, and verified that the existing functionality is not
      harmed, and that the new functionality works. Terry has committed his stuff, and there were
      no conflicts (see 14274).
      
      (closes issue #11583)
      Reported by: sobomax
      Patches:
            patch-apps__app_dial.c uploaded by sobomax (license 359)
            patch-include__asterisk__features.h uploaded by sobomax (license 359)
            patch-res__res_features.c uploaded by sobomax (license 359)
            enable-features-during-call-setup.diff uploaded by sobomax (license 359)
            11583.newdiff uploaded by murf (license 17)
            enable-features-during-call-setup-1.diff uploaded by sobomax (license 359)
            11583.latest-patch uploaded by murf (license 17)
      Tested by: sobomax, murf
    ........
      r172894 | lmadsen | 2009-02-02 12:13:40 -0600 (Mon, 02 Feb 2009) | 7 lines
      
      Update the res_ldap.conf file with a better working example.
      
      (closes issue #13861)
      Reported by: scramatte
      Patches:
            __20080110-res_ldap.conf-2.patch uploaded by blitzrage (license 10)
      Tested by: jcovert
    ........
  ................
................
  r172961 | root | 2009-02-02 14:17:17 -0600 (Mon, 02 Feb 2009) | 20 lines
  
  Merged revisions 172936 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172936 | root | 2009-02-02 13:18:39 -0600 (Mon, 02 Feb 2009) | 13 lines
    
    Merged revisions 172929 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r172929 | murf | 2009-02-02 13:02:24 -0600 (Mon, 02 Feb 2009) | 7 lines
      
      
      This reverts the changes I made for 11583; will
      reviewboard this before committing again...
      reopened 11583 until all Russell's issues are
      resolved.
    ........
  ................
................
  r173023 | root | 2009-02-02 16:17:18 -0600 (Mon, 02 Feb 2009) | 32 lines
  
  Merged revisions 172971 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r172971 | root | 2009-02-02 15:19:18 -0600 (Mon, 02 Feb 2009) | 25 lines
    
    Merged revisions 172963 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ................
      r172963 | rmudgett | 2009-02-02 14:40:27 -0600 (Mon, 02 Feb 2009) | 18 lines
      
      Recorded merge of revisions 172962 via svnmerge from 
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
        r172962 | rmudgett | 2009-02-02 14:28:54 -0600 (Mon, 02 Feb 2009) | 11 lines
        
        channels/chan_dahdi.c
        *  Added doxygen comments to the major dahdi structures.
        *  Fixed PRI using an incorrect string value if the extension
        delimiter is not present in the Dial() function.
        *  Fixed some uninitialized string variables on FXS ports.
        
        configs/chan_dahdi.conf.sample
        *  Updated some documentation.
        
        These changes are already in trunk -r172400
      ........
    ................
  ................
................
  r173078 | root | 2009-02-02 18:18:49 -0600 (Mon, 02 Feb 2009) | 22 lines
  
  Merged revisions 173034 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r173034 | root | 2009-02-02 17:18:42 -0600 (Mon, 02 Feb 2009) | 15 lines
    
    Merged revisions 173028 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r173028 | mmichelson | 2009-02-02 17:10:47 -0600 (Mon, 02 Feb 2009) | 9 lines
      
      Add a CLI command to log out a manager user
      
      (closes issue #13877)
      Reported by: eliel
      Patches:
            cli_manager_logout.patch.txt uploaded by eliel (license 64)
      Tested by: eliel, putnopvut
    ........
  ................
................
  r173140 | root | 2009-02-02 19:18:27 -0600 (Mon, 02 Feb 2009) | 28 lines
  
  Merged revisions 173079 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r173079 | root | 2009-02-02 18:19:13 -0600 (Mon, 02 Feb 2009) | 21 lines
    
    Merged revisions 173047,173067 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ................
      r173047 | mmichelson | 2009-02-02 17:21:33 -0600 (Mon, 02 Feb 2009) | 4 lines
      
      Reverting commit number 173028 as there are some
      potential issues
    ................
      r173067 | twilson | 2009-02-02 17:57:25 -0600 (Mon, 02 Feb 2009) | 9 lines
      
      Merged revisions 173066 via svnmerge from 
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
        r173066 | twilson | 2009-02-02 17:48:06 -0600 (Mon, 02 Feb 2009) | 2 lines
        
        Fix a feature inheritance bug I added after code review
      ........
    ................
  ................
................
  r173162 | root | 2009-02-02 20:17:18 -0600 (Mon, 02 Feb 2009) | 30 lines
  
  Merged revisions 173141 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r173141 | root | 2009-02-02 19:18:52 -0600 (Mon, 02 Feb 2009) | 23 lines
    
    Merged revisions 173104,173130 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ................
      r173104 | tilghman | 2009-02-02 18:24:52 -0600 (Mon, 02 Feb 2009) | 12 lines
      
      Merged revisions 173070 via svnmerge from 
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
        r173070 | tilghman | 2009-02-02 18:15:59 -0600 (Mon, 02 Feb 2009) | 5 lines
        
        Add warning to standard config, that globals may be overridden by other
        dialplan configuration files.
        (closes issue #14388)
         Reported by: macli
      ........
    ................
      r173130 | tilghman | 2009-02-02 18:29:49 -0600 (Mon, 02 Feb 2009) | 2 lines
      
      Make OS X compile cleanly with app_stack
    ................
  ................
................
  r173202 | root | 2009-02-03 13:17:28 -0600 (Tue, 03 Feb 2009) | 16 lines
  
  Merged revisions 173175 via svnmerge from 
  file:///srv/subversion/repos/asterisk/team/group/issue8824
  
  ................
    r173175 | root | 2009-02-03 12:18:54 -0600 (Tue, 03 Feb 2009) | 9 lines
    
    Merged revisions 173169 via svnmerge from 
    file:///srv/subversion/repos/asterisk/trunk
    
    ........
      r173169 | rmudgett | 2009-02-03 11:35:37 -0600 (Tue, 03 Feb 2009) | 2 lines
      
      Broke up the large conditional blocks so it is easy to see if a function is compiled.
    ........
  ................
................

Modified:
    team/group/issue14292/   (props changed)
    team/group/issue14292/apps/app_stack.c
    team/group/issue14292/apps/app_voicemail.c
    team/group/issue14292/channels/chan_dahdi.c
    team/group/issue14292/channels/chan_sip.c
    team/group/issue14292/configs/extensions.conf.sample
    team/group/issue14292/configs/res_ldap.conf.sample
    team/group/issue14292/configure
    team/group/issue14292/configure.ac
    team/group/issue14292/funcs/func_strings.c
    team/group/issue14292/include/asterisk/autoconfig.h.in
    team/group/issue14292/include/asterisk/compiler.h
    team/group/issue14292/include/asterisk/optional_api.h
    team/group/issue14292/main/features.c
    team/group/issue14292/main/xml.c

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
--- issue14068-integrated (original)
+++ issue14068-integrated Tue Feb  3 15:37:04 2009
@@ -1,1 +1,1 @@
-/team/group/issue8824:1-172479
+/team/group/issue8824:1-173201

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
--- issue14292-integrated (original)
+++ issue14292-integrated Tue Feb  3 15:37:04 2009
@@ -1,1 +1,1 @@
-/team/group/issue14068:1-172701
+/team/group/issue14068:1-173207

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Feb  3 15:37:04 2009
@@ -1,1 +1,1 @@
-/trunk:1-172648
+/trunk:1-173174

Modified: team/group/issue14292/apps/app_stack.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/apps/app_stack.c?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/apps/app_stack.c (original)
+++ team/group/issue14292/apps/app_stack.c Tue Feb  3 15:37:04 2009
@@ -640,7 +640,7 @@
 {
 	struct ast_context *con;
 
-	if (ast_agi_unregister(ast_module_info->self, &gosub_agi_command) == 1) {
+	if (ast_agi_unregister && ast_agi_unregister(ast_module_info->self, &gosub_agi_command) == 1) {
 		if ((con = ast_context_find("app_stack_gosub_virtual_context"))) {
 			ast_context_remove_extension2(con, "s", 1, NULL, 0);
 			ast_context_destroy(con, "app_stack"); /* leave nothing behind */
@@ -661,7 +661,7 @@
 {
 	struct ast_context *con;
 
-	if (ast_agi_register(ast_module_info->self, &gosub_agi_command) == 1) {
+	if (ast_agi_register && ast_agi_register(ast_module_info->self, &gosub_agi_command) == 1) {
 		if (!(con = ast_context_find_or_create(NULL, NULL, "app_stack_gosub_virtual_context", "app_stack"))) {
 			ast_log(LOG_ERROR, "Virtual context 'app_stack_gosub_virtual_context' does not exist and unable to create\n");
 			return AST_MODULE_LOAD_DECLINE;

Modified: team/group/issue14292/apps/app_voicemail.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/apps/app_voicemail.c?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/apps/app_voicemail.c (original)
+++ team/group/issue14292/apps/app_voicemail.c Tue Feb  3 15:37:04 2009
@@ -9627,6 +9627,11 @@
 
 	AST_NONSTANDARD_APP_ARGS(arg, args, '@');
 
+	if (ast_strlen_zero(arg.mbox)) {
+		ast_log(LOG_ERROR, "MAILBOX_EXISTS requires an argument (<mailbox>[@<context>])\n");
+		return -1;
+	}
+
 	ast_copy_string(buf, find_user(&svm, ast_strlen_zero(arg.context) ? "default" : arg.context, arg.mbox) ? "1" : "0", len);
 	return 0;
 }

Modified: team/group/issue14292/channels/chan_dahdi.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/channels/chan_dahdi.c?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/channels/chan_dahdi.c (original)
+++ team/group/issue14292/channels/chan_dahdi.c Tue Feb  3 15:37:04 2009
@@ -1894,7 +1894,7 @@
 
 struct dahdi_pvt *round_robin[32];
 
-#ifdef HAVE_PRI
+#if defined(HAVE_PRI)
 static inline int pri_grab(struct dahdi_pvt *pvt, struct dahdi_pri *pri)
 {
 	int res;
@@ -1910,14 +1910,16 @@
 		pthread_kill(pri->master, SIGURG);
 	return 0;
 }
-#endif
-
-#ifdef HAVE_SS7
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_SS7)
 static inline void ss7_rel(struct dahdi_ss7 *ss7)
 {
 	ast_mutex_unlock(&ss7->lock);
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static inline int ss7_grab(struct dahdi_pvt *pvt, struct dahdi_ss7 *pri)
 {
 	int res;
@@ -1933,7 +1935,7 @@
 		pthread_kill(pri->master, SIGURG);
 	return 0;
 }
-#endif
+#endif	/* defined(HAVE_SS7) */
 #define NUM_CADENCE_MAX 25
 static int num_cadence = 4;
 static int user_has_defined_cadences = 0;
@@ -2158,21 +2160,21 @@
 	chan_pvt->subs[sub_num].dfd = -1;
 }
 
-#ifdef HAVE_PRI
+#if defined(HAVE_PRI)
 static void dahdi_close_pri_fd(struct dahdi_pri *pri, int fd_num)
 {
 	dahdi_close(pri->fds[fd_num]);
 	pri->fds[fd_num] = -1;
 }
-#endif
-
-#ifdef HAVE_SS7
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_SS7)
 static void dahdi_close_ss7_fd(struct dahdi_ss7 *ss7, int fd_num)
 {
 	dahdi_close(ss7->fds[fd_num]);
 	ss7->fds[fd_num] = -1;
 }
-#endif
+#endif	/* defined(HAVE_SS7) */
 
 static int dahdi_setlinear(int dfd, int linear)
 {
@@ -3101,17 +3103,19 @@
 	return 0;
 }
 
-#ifdef HAVE_SS7
+#if defined(HAVE_SS7)
 static unsigned char cid_pres2ss7pres(int cid_pres)
 {
 	 return (cid_pres >> 5) & 0x03;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static unsigned char cid_pres2ss7screen(int cid_pres)
 {
 	return cid_pres & 0x03;
 }
-#endif
+#endif	/* defined(HAVE_SS7) */
 
 static int ast_to_pri_reason(enum AST_REDIRECTING_REASON ast_reason)
 {
@@ -4156,7 +4160,7 @@
 	ast_mutex_unlock(&iflock);
 }
 
-#ifdef HAVE_PRI
+#if defined(HAVE_PRI)
 static char *dahdi_qsig_ccbsnr_initialize_app = "DAHDIQsigCcbsnrInitialize";
 
 /*
@@ -4708,9 +4712,10 @@
 
 	return 0;
 }
-
-#ifdef HAVE_PRI_PROG_W_CAUSE
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
+#if defined(HAVE_PRI_PROG_W_CAUSE)
 static char *dahdi_send_callrerouting_facility_app = "DAHDISendCallreroutingFacility";
 
 static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, void *data)
@@ -4782,9 +4787,10 @@
 
 	return res;
 }
-
-#endif
-
+#endif	/* defined(HAVE_PRI_PROG_W_CAUSE) */
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_is_up(struct dahdi_pri *pri)
 {
 	int x;
@@ -4794,7 +4800,9 @@
 	}
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_assign_bearer(struct dahdi_pvt *crv, struct dahdi_pri *pri, struct dahdi_pvt *bearer)
 {
 	bearer->owner = &inuse;
@@ -4807,7 +4815,9 @@
 	crv->pri = pri;
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *pri_order(int level)
 {
 	switch (level) {
@@ -4823,7 +4833,9 @@
 		return "<Unknown>";
 	}
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 /* Returns fd of the active dchan */
 static int pri_active_dchan_fd(struct dahdi_pri *pri)
 {
@@ -4836,7 +4848,9 @@
 
 	return pri->fds[x];
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_find_dchan(struct dahdi_pri *pri)
 {
 	int oldslot = -1;
@@ -4865,7 +4879,7 @@
 	pri->pri = pri->dchans[newslot];
 	return 0;
 }
-#endif
+#endif	/* defined(HAVE_PRI) */
 
 static int dahdi_hangup(struct ast_channel *ast)
 {
@@ -10171,7 +10185,7 @@
 	return 0;
 }
 
-#ifdef HAVE_PRI
+#if defined(HAVE_PRI)
 static int pri_resolve_span(int *span, int channel, int offset, struct dahdi_spaninfo *si)
 {
 	int x;
@@ -10217,7 +10231,9 @@
 	}
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_create_trunkgroup(int trunkgroup, int *channels)
 {
 	struct dahdi_spaninfo si;
@@ -10280,7 +10296,9 @@
 	}
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_create_spanmap(int span, int trunkgroup, int logicalspan)
 {
 	if (pris[span].mastertrunkgroup) {
@@ -10291,11 +10309,9 @@
 	pris[span].prilogicalspan = logicalspan;
 	return 0;
 }
-
-#endif
-
-#ifdef HAVE_SS7
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_SS7)
 static unsigned int parse_pointcode(const char *pcstring)
 {
 	unsigned int code1, code2, code3;
@@ -10309,7 +10325,9 @@
 
 	return 0;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static struct dahdi_ss7 * ss7_resolve_linkset(int linkset)
 {
 	if ((linkset < 0) || (linkset >= NUM_SPANS))
@@ -10317,7 +10335,7 @@
 	else
 		return &linksets[linkset - 1];
 }
-#endif /* HAVE_SS7 */
+#endif	/* defined(HAVE_SS7) */
 
 /* converts a DAHDI sigtype to signalling as can be configured from
  * chan_dahdi.conf.
@@ -11067,8 +11085,7 @@
 	return p;
 }
 
-
-#ifdef HAVE_PRI
+#if defined(HAVE_PRI)
 static int pri_find_empty_chan(struct dahdi_pri *pri, int backwards)
 {
 	int x;
@@ -11093,7 +11110,7 @@
 	}
 	return -1;
 }
-#endif
+#endif	/* defined(HAVE_PRI) */
 
 static struct ast_channel *dahdi_request(const char *type, int format, void *data, int *cause)
 {
@@ -11345,10 +11362,9 @@
 {
 	return ioctl(dfd, DAHDI_SETLAW, &law);
 }
-#endif
-
-#ifdef HAVE_SS7
-
+#endif	/* defined(HAVE_PRI) || defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static int ss7_find_cic(struct dahdi_ss7 *linkset, int cic, unsigned int dpc)
 {
 	int i;
@@ -11361,7 +11377,9 @@
 	}
 	return winner;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void ss7_handle_cqm(struct dahdi_ss7 *linkset, int startcic, int endcic, unsigned int dpc)
 {
 	unsigned char status[32];
@@ -11393,7 +11411,9 @@
 		ast_log(LOG_WARNING, "Could not find any equipped circuits within CQM CICs\n");
 
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static inline void ss7_hangup_cics(struct dahdi_ss7 *linkset, int startcic, int endcic, unsigned int dpc)
 {
 	int i;
@@ -11407,7 +11427,9 @@
 		}
 	}
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static inline void ss7_block_cics(struct dahdi_ss7 *linkset, int startcic, int endcic, unsigned int dpc, unsigned char state[], int block)
 {
 	int i;
@@ -11422,7 +11444,9 @@
 		}
 	}
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void ss7_inservice(struct dahdi_ss7 *linkset, int startcic, int endcic, unsigned int dpc)
 {
 	int i;
@@ -11432,7 +11456,9 @@
 			linkset->pvts[i]->inservice = 1;
 	}
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void ss7_reset_linkset(struct dahdi_ss7 *linkset)
 {
 	int i, startcic = -1, endcic, dpc;
@@ -11460,7 +11486,9 @@
 		}
 	}
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void dahdi_loopback(struct dahdi_pvt *p, int enable)
 {
 	if (p->loopedback != enable) {
@@ -11471,7 +11499,9 @@
 		p->loopedback = enable;
 	}
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 /* XXX: This function is assumed to be called with the private channel lock and linkset lock held */
 static void ss7_start_call(struct dahdi_pvt *p, struct dahdi_ss7 *linkset)
 {
@@ -11588,7 +11618,9 @@
 	ast_mutex_lock(&p->lock);
 	ast_mutex_lock(&linkset->lock);
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void ss7_apply_plan_to_number(char *buf, size_t size, const struct dahdi_ss7 *ss7, const char *number, const unsigned nai)
 {
 	switch (nai) {
@@ -11609,11 +11641,16 @@
 		break;
 	}
 }
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static int ss7_pres_scr2cid_pres(char presentation_ind, char screening_ind)
 {
 	return ((presentation_ind & 0x3) << 5) | (screening_ind & 0x3);
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void *ss7_linkset(void *data)
 {
 	int res, i;
@@ -12142,7 +12179,9 @@
 
 	return 0;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void dahdi_ss7_message(struct ss7 *ss7, char *s)
 {
 #if 0
@@ -12157,7 +12196,9 @@
 	ast_verbose("%s", s);
 #endif
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static void dahdi_ss7_error(struct ss7 *ss7, char *s)
 {
 #if 0
@@ -12171,10 +12212,9 @@
 	ast_log(LOG_ERROR, "%s", s);
 #endif
 }
-
-#endif /* HAVE_SS7 */
-
-#ifdef HAVE_PRI
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_PRI)
 static struct dahdi_pvt *pri_find_crv(struct dahdi_pri *pri, int crv)
 {
 	struct dahdi_pvt *p;
@@ -12186,8 +12226,9 @@
 	}
 	return NULL;
 }
-
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_find_principle(struct dahdi_pri *pri, int channel)
 {
 	int x;
@@ -12214,7 +12255,9 @@
 
 	return principle;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_fixup_principle(struct dahdi_pri *pri, int principle, q931_call *c)
 {
 	int x;
@@ -12297,7 +12340,9 @@
 	ast_log(LOG_WARNING, "Call specified, but not found?\n");
 	return -1;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static void *do_idle_thread(void *vchan)
 {
 	struct ast_channel *chan = vchan;
@@ -12345,7 +12390,9 @@
 	ast_hangup(chan);
 	return NULL;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 #ifndef PRI_RESTART
 #error "Upgrade your libpri"
 #endif
@@ -12387,7 +12434,9 @@
 
 	ast_mutex_unlock(&pridebugfdlock);
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static void dahdi_pri_error(struct pri *pri, char *s)
 {
 	int x, y;
@@ -12426,7 +12475,9 @@
 
 	ast_mutex_unlock(&pridebugfdlock);
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_check_restart(struct dahdi_pri *pri)
 {
 	do {
@@ -12445,7 +12496,9 @@
 	}
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int pri_hangup_all(struct dahdi_pvt *p, struct dahdi_pri *pri)
 {
 	int x;
@@ -12469,7 +12522,9 @@
 	ast_mutex_lock(&pri->lock);
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char * redirectingreason2str(int redirectingreason)
 {
 	switch (redirectingreason) {
@@ -12485,7 +12540,9 @@
 		return "NOREDIRECT";
 	}
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static void apply_plan_to_number(char *buf, size_t size, const struct dahdi_pri *pri, const char *number, const int plan)
 {
 	if (pri->dialplan == -2) { /* autodetect the TON but leave the number untouched */
@@ -12513,8 +12570,9 @@
 		break;
 	}
 }
-
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static void *pri_dchannel(void *vpri)
 {
 	struct dahdi_pri *pri = vpri;
@@ -14039,7 +14097,9 @@
 	/* Never reached */
 	return NULL;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static int start_pri(struct dahdi_pri *pri)
 {
 	int res, x;
@@ -14139,7 +14199,9 @@
 	}
 	return 0;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *complete_span_helper(const char *line, const char *word, int pos, int state, int rpos)
 {
 	int which, span;
@@ -14158,12 +14220,16 @@
 	}
 	return ret;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *complete_span_4(const char *line, const char *word, int pos, int state)
 {
 	return complete_span_helper(line,word,pos,state,3);
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_set_debug_file(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int myfd;
@@ -14199,7 +14265,9 @@
 	ast_cli(a->fd, "PRI debug output will be sent to '%s'\n", a->argv[4]);
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int span;
@@ -14260,7 +14328,9 @@
 	}
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static void build_status(char *s, size_t len, int status, int active)
 {
 	if (!s || len < 1) {
@@ -14281,7 +14351,9 @@
 		strncat(s, ", Standby", len - strlen(s) - 1);
 	s[len - 1] = '\0';
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_show_spans(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int span;
@@ -14314,7 +14386,9 @@
 	}
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_show_span(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int span;
@@ -14388,7 +14462,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_show_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int x;
@@ -14429,7 +14505,9 @@
 		ast_cli(a->fd, "No debug set or no PRI running\n");
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static char *handle_pri_version(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	switch (cmd) {
@@ -14447,7 +14525,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
 static struct ast_cli_entry dahdi_pri_cli[] = {
 	AST_CLI_DEFINE(handle_pri_debug, "Enables PRI debugging on a span"),
 	AST_CLI_DEFINE(handle_pri_show_spans, "Displays PRI Information"),
@@ -14456,8 +14536,7 @@
 	AST_CLI_DEFINE(handle_pri_set_debug_file, "Sends PRI debug output to the specified file"),
 	AST_CLI_DEFINE(handle_pri_version, "Displays libpri version"),
 };
-
-#endif /* HAVE_PRI */
+#endif	/* defined(HAVE_PRI) */
 
 static char *dahdi_destroy_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
@@ -15545,7 +15624,7 @@
 	return 0;
 }
 
-#ifdef HAVE_SS7
+#if defined(HAVE_SS7)
 static int linkset_addsigchan(int sigchan)
 {
 	struct dahdi_ss7 *link;
@@ -15664,7 +15743,9 @@
 
 	return 0;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int span;
@@ -15701,7 +15782,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_block_cic(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int linkset, cic;
@@ -15764,7 +15847,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_block_linkset(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int linkset;
@@ -15806,7 +15891,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_unblock_cic(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int linkset, cic;
@@ -15863,7 +15950,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_unblock_linkset(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int linkset;
@@ -15906,7 +15995,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_show_linkset(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	int linkset;
@@ -15940,7 +16031,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static char *handle_ss7_version(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	switch (cmd) {
@@ -15958,7 +16051,9 @@
 
 	return CLI_SUCCESS;
 }
-
+#endif	/* defined(HAVE_SS7) */
+
+#if defined(HAVE_SS7)
 static struct ast_cli_entry dahdi_ss7_cli[] = {
 	AST_CLI_DEFINE(handle_ss7_debug, "Enables SS7 debugging on a linkset"),
 	AST_CLI_DEFINE(handle_ss7_block_cic, "Blocks the given CIC"),
@@ -15968,7 +16063,7 @@
 	AST_CLI_DEFINE(handle_ss7_show_linkset, "Shows the status of a linkset"),
 	AST_CLI_DEFINE(handle_ss7_version, "Displays libss7 version"),
 };
-#endif /* HAVE_SS7 */
+#endif	/* defined(HAVE_SS7) */
 
 static int __unload_module(void)
 {

Modified: team/group/issue14292/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/channels/chan_sip.c?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/channels/chan_sip.c (original)
+++ team/group/issue14292/channels/chan_sip.c Tue Feb  3 15:37:04 2009
@@ -40,6 +40,11 @@
  * \todo Transaction support
  * \todo Asterisk should send a non-100 provisional response every minute to keep proxies
  *  from cancelling the transaction (RFC 3261 13.3.1.1). See bug #11157.
+ * 
+ * ******** Wishlist: Improvements
+ * - Support of SIP domains for devices, so that we match on username at domain in the From: header
+ * - Connect registrations with a specific device on the incoming call. It's not done
+ *   automatically in Asterisk
  *
  * \ingroup channel_drivers
  *
@@ -485,7 +490,6 @@
 #define	FINDALLDEVICES	FALSE
 #define FINDONLYUSERS	TRUE
 
-
 #define	SIPBUFSIZE		512		/*!< Buffer size for many operations */
 
 #define XMIT_ERROR		-2
@@ -1086,6 +1090,8 @@
 /*@{*/ 
 /*! \brief a place to store all global settings for the sip channel driver 
 	These are settings that will be possibly to apply on a group level later on.
+	\note Do not add settings that only apply to the channel itself and can't
+	      be applied to devices (trunks, services, phones)
 */
 struct sip_settings {
 	int peer_rtupdate;		/*!< G: Update database with registration data for peer? */
@@ -1907,10 +1913,9 @@
 
 	/* things that don't belong in flags */
 	char is_realtime;		/*!< this is a 'realtime' peer */
-	char rt_fromcontact;		/*!< P: copy fromcontact from realtime */
-	char host_dynamic;		/*!< P: Dynamic Peers register with Asterisk */
-	char selfdestruct;		/*!< P: Automatic peers need to destruct themselves */
-	char onlymatchonip;		/*!< P: Only match on IP for incoming calls (old type=peer) */
+	char rt_fromcontact;		/*!< copy fromcontact from realtime */
+	char host_dynamic;		/*!< Dynamic Peers register with Asterisk */
+	char selfdestruct;		/*!< Automatic peers need to destruct themselves */
 	char the_mark;			/*!< moved out of ASTOBJ into struct proper; That which bears the_mark should be deleted! */
 
 	int expire;			/*!<  When to expire this peer registration */
@@ -1942,7 +1947,10 @@
 	int timer_t1;			/*!<  The maximum T1 value for the peer */
 	int timer_b;			/*!<  The maximum timer B (transaction timeouts) */
 	int deprecated_username; /*!< If it's a realtime peer, are they using the deprecated "username" instead of "defaultuser" */
+	
+	/*XXX Seems like we suddenly have two flags with the same content. Why? To be continued... */
 	enum sip_peer_type type; /*!< Distinguish between "user" and "peer" types. This is used solely for CLI and manager commands */
+	char onlymatchonip;		/*!< Only match on IP for incoming calls (old type=peer) */
 };
 
 
@@ -10307,7 +10315,8 @@
 		ast_str_append(&tmp, 0, "<?xml version=\"1.0\"?>\n");
 		ast_str_append(&tmp, 0, "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\" version=\"%d\" state=\"%s\" entity=\"%s\">\n", p->dialogver++, full ? "full" : "partial", mto);
 		if ((state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) {
-			const char *local_display = p->exten, *local_target = mto;
+			const char *local_display = p->exten;
+			char *local_target = mto;
 
 			/* There are some limitations to how this works.  The primary one is that the
 			   callee must be dialing the same extension that is being monitored.  Simply dialing
@@ -10316,8 +10325,10 @@
 				struct ast_channel *caller = ast_channel_search_locked(find_calling_channel, p);
 
 				if (caller) {
+					int need = strlen(caller->cid.cid_num) + strlen(p->fromdomain) + sizeof("sip:@");
+					local_target = alloca(need);
+					snprintf(local_target, need, "sip:%s@%s", caller->cid.cid_num, p->fromdomain);
 					local_display = ast_strdupa(caller->cid.cid_name);
-					local_target = ast_strdupa(caller->cid.cid_num);
 					ast_channel_unlock(caller);
 					caller = NULL;
 				}

Modified: team/group/issue14292/configs/extensions.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/configs/extensions.conf.sample?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/configs/extensions.conf.sample (original)
+++ team/group/issue14292/configs/extensions.conf.sample Tue Feb  3 15:37:04 2009
@@ -137,7 +137,13 @@
 ;
 TRUNKMSD=1					; MSD digits to strip (usually 1 or 0)
 ;TRUNK=IAX2/user:pass at provider
-
+;
+; WARNING WARNING WARNING WARNING
+; If you load any other extension configuration engine, such as pbx_ael.so,
+; your global variables may be overridden by that file.  Please take care to
+; use only one location to set global variables, and you will likely save
+; yourself a ton of grief.
+; WARNING WARNING WARNING WARNING
 ;
 ; Any category other than "General" and "Globals" represent 
 ; extension contexts, which are collections of extensions.  

Modified: team/group/issue14292/configs/res_ldap.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/configs/res_ldap.conf.sample?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/configs/res_ldap.conf.sample (original)
+++ team/group/issue14292/configs/res_ldap.conf.sample Tue Feb  3 15:37:04 2009
@@ -56,7 +56,7 @@
 ; Sip Users Table
 ;
 [sip]
-name = uid
+name = cn
 amaflags = AstAccountAMAFlags
 callgroup = AstAccountCallGroup
 callerid = AstAccountCallerID
@@ -91,7 +91,7 @@
 ipaddr = AstAccountIPAddress
 defaultuser = AstAccountDefaultUser
 regserver = AstAccountRegistrationServer
-additionalFilter=(objectClass=AstAccountSIP)
+additionalFilter=(objectClass=AsteriskSIPUser)
 
 ;
 ; IAX Users Table

Modified: team/group/issue14292/configure.ac
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue14292/configure.ac?view=diff&rev=173208&r1=173207&r2=173208
==============================================================================
--- team/group/issue14292/configure.ac (original)
+++ team/group/issue14292/configure.ac Tue Feb  3 15:37:04 2009
@@ -174,14 +174,18 @@
 AC_PATH_PROG([LN], [ln], :)
 AC_PATH_PROG([DOT], [dot], :)
 AC_PATH_PROG([WGET], [wget], :)
+AC_PATH_PROG([CURL], [curl], :)
 AC_PATH_PROG([RUBBER], [rubber], :)
 AC_PATH_PROG([KPATHSEA], [kpsewhich], :)
 AC_PATH_PROG([XMLSTARLET], [xmlstarlet], :)
 if test "${WGET}" != ":" ; then
   DOWNLOAD=${WGET}
+else if test "${CURL}" != ":" ; then
+  DOWNLOAD="${CURL} -O --progress-bar -w \"%{url_effective}\n\""
 else
   AC_PATH_PROG([FETCH], [fetch], [:])
   DOWNLOAD=${FETCH}
+fi
 fi
 AC_SUBST(DOWNLOAD)
 
@@ -481,6 +485,7 @@
 AST_GCC_ATTRIBUTE(sentinel)
 AST_GCC_ATTRIBUTE(warn_unused_result)
 AST_GCC_ATTRIBUTE(weak)
+AST_GCC_ATTRIBUTE(weak_import)
 AST_GCC_ATTRIBUTE(alias, [alias("foo")])
 
 AC_MSG_CHECKING(for -ffunction-sections support)

Modified: team/group/issue14292/funcs/func_strings.c

[... 96 lines stripped ...]



More information about the svn-commits mailing list