Revision
14371
Author
gmaruzz
Date
2009-07-27 07:53:06 -0500 (Mon, 27 Jul 2009)

Log Message

skypiax: manage the 'BUSY' call status message (skypeout: remote PSTN party is busy, our outbound call is failed)

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (14370 => 14371)


--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	2009-07-27 09:37:06 UTC (rev 14370)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	2009-07-27 12:53:06 UTC (rev 14371)
@@ -375,12 +375,24 @@
               }
             } else {
               tech_pvt->skype_callflow = CALLFLOW_STATUS_INPROGRESS;
-              WARNINGA("Back from REMOTEHOLD!\n", SKYPIAX_P_LOG);
+              DEBUGA_SKYPE("Back from REMOTEHOLD!\n", SKYPIAX_P_LOG);
             }
 
           } else if (!strcasecmp(value, "REMOTEHOLD")) {
             tech_pvt->skype_callflow = CALLFLOW_STATUS_REMOTEHOLD;
-            WARNINGA("skype_call: %s is now REMOTEHOLD\n", SKYPIAX_P_LOG, id);
+            DEBUGA_SKYPE("skype_call: %s is now REMOTEHOLD\n", SKYPIAX_P_LOG, id);
+
+          } else if (!strcasecmp(value, "BUSY")) {
+            tech_pvt->skype_callflow = CALLFLOW_STATUS_FAILED;
+            DEBUGA_SKYPE
+              ("we tried to call Skype on skype_call %s and remote party (destination) was BUSY\n",
+               SKYPIAX_P_LOG, id);
+            skypiax_strncpy(tech_pvt->skype_call_id, id,
+                            sizeof(tech_pvt->skype_call_id) - 1);
+            tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
+            tech_pvt->skype_call_id[0] = '\0';
+			skypiax_sleep(1000);
+            return CALLFLOW_INCOMING_HANGUP;
           } else {
             WARNINGA("skype_call: %s, STATUS: %s is not recognized\n", SKYPIAX_P_LOG, id,
                      value);