Pass the callerid & ani to the new b-leg if the current b-leg requests call forwarding
authorMartin Pycko <martinp@digium.com>
Thu, 15 Jan 2004 23:32:27 +0000 (23:32 +0000)
committerMartin Pycko <martinp@digium.com>
Thu, 15 Jan 2004 23:32:27 +0000 (23:32 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2043 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_dial.c

index 812944c..f9e6b42 100755 (executable)
@@ -202,12 +202,22 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
                                                ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s'\n", tmpchan);
                                                o->stillgoing = 0;
                                                numbusies++;
-                                       } else if (ast_call(o->chan, tmpchan, 0)) {
-                                               ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
-                                               o->stillgoing = 0;
-                                               ast_hangup(o->chan);
-                                               o->chan = NULL;
-                                               numbusies++;
+                                       } else {
+                                               if (in->callerid && !o->chan->callerid) {
+                                                       o->chan->callerid = malloc(strlen(in->callerid) + 1);
+                                                       strncpy(o->chan->callerid, in->callerid, strlen(in->callerid) + 1);
+                                               }
+                                               if (in->ani && !o->chan->ani) {
+                                                       o->chan->ani = malloc(strlen(in->ani) + 1);
+                                                       strncpy(o->chan->ani, in->ani, strlen(in->ani) + 1);
+                                               }
+                                               if (ast_call(o->chan, tmpchan, 0)) {
+                                                       ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
+                                                       o->stillgoing = 0;
+                                                       ast_hangup(o->chan);
+                                                       o->chan = NULL;
+                                                       numbusies++;
+                                               }
                                        }
                                        continue;
                                }