Fix broken parking dial-back
authorTerry Wilson <twilson@digium.com>
Fri, 16 Nov 2007 23:44:14 +0000 (23:44 +0000)
committerTerry Wilson <twilson@digium.com>
Fri, 16 Nov 2007 23:44:14 +0000 (23:44 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89347 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_features.c

index b0bea0b..4a73cf4 100644 (file)
@@ -2091,6 +2091,13 @@ static void *do_parking_thread(void *ignore)
                                        char *cp = strrchr(peername, '-');
                                        if (cp) 
                                                *cp = 0;
+                                       char peername_flat[AST_MAX_EXTENSION]; /* using something like Zap/52 for an extension name is NOT a good idea */
+                                       ast_copy_string(peername_flat,peername,sizeof(peername_flat));
+                                       int i;
+                                       for(i=0; peername_flat[i] && i < AST_MAX_EXTENSION; i++) {
+                                               if (peername_flat[i] == '/') 
+                                                       peername_flat[i]= '0';
+                                       }
                                        con = ast_context_find(parking_con_dial);
                                        if (!con) {
                                                con = ast_context_create(NULL, parking_con_dial, registrar);
@@ -2099,23 +2106,16 @@ static void *do_parking_thread(void *ignore)
                                        }
                                        if (con) {
                                                char returnexten[AST_MAX_EXTENSION];
-                                               char peername_flat[AST_MAX_EXTENSION]; /* using something like Zap/52 for an extension name is NOT a good idea */
-                                               int i;
-                                               ast_copy_string(peername_flat,peername,sizeof(peername_flat));
-                                               for(i=0; peername_flat[i] && i < AST_MAX_EXTENSION; i++) {
-                                                       if (peername_flat[i] == '/') 
-                                                               peername_flat[i]= '0';
-                                               }
                                                snprintf(returnexten, sizeof(returnexten), "%s,,t", peername);
                                                ast_add_extension2(con, 1, peername_flat, 1, NULL, NULL, "Dial", ast_strdup(returnexten), ast_free_ptr, registrar);
                                        }
                                        if (comebacktoorigin) { 
-                                               set_c_e_p(chan, parking_con_dial, peername, 1);
+                                               set_c_e_p(chan, parking_con_dial, peername_flat, 1);
                                        } else {
                                                ast_log(LOG_WARNING, "now going to parkedcallstimeout,s,1 | ps is %d\n",pu->parkingnum);
                                                snprintf(parkingslot, sizeof(parkingslot), "%d", pu->parkingnum);
                                                pbx_builtin_setvar_helper(pu->chan, "PARKINGSLOT", parkingslot);
-                                               set_c_e_p(chan, "parkedcallstimeout", peername, 1);
+                                               set_c_e_p(chan, "parkedcallstimeout", peername_flat, 1);
                                        }
                                } else {
                                        /* They've been waiting too long, send them back to where they came.  Theoretically they