Hello,

I have a very strange problem using mod_spidermonkey_curl in CentOS 5.5 x86_64 bit. Same setup i am using in other machine in Fedora 12, it works, is there any bugs????????? I receive OK, but when i use to compare it fails in logical statement.


FreeSWITCH Version 1.0.head (git-25ddef5 2010-09-24 01-55-54 +0200) Started.

Installation curl as:
==============
[root@a autoload_configs]# cat spidermonkey.conf.xml
<configuration name="spidermonkey.conf" description="Spider Monkey JavaScript Plug-Ins">
  <modules>
    <load module="mod_spidermonkey_teletone"/>
    <load module="mod_spidermonkey_core_db"/>
    <load module="mod_spidermonkey_socket"/>
    <!--<load module="mod_spidermonkey_odbc"/>-->
    <load module="mod_spidermonkey_curl" />

  </modules>
</configuration>



.../scripts/helloworld.js:
============

use("CURL");
var menuselection = "";
var promptfordigits_dtmf_digits = "";
var invalidRetry = 0;

/* This is getting failed, in Centos, but in other machine it works */
function my_callback(string, arg)
{
  console_log("info", string);
 
  //string = 'OK'; // then it works!!
  //2010-10-08 18:40:53.585676 [INFO] mod_dialplan_xml.c:331 Processing 1002 <1002>->1200 in context default
  //2010-10-08 18:41:23.842965 [INFO] helloworld.js:42 OK
  //2010-10-08 18:41:35.962099 [NOTICE] switch_ivr.c:1480 Transfer sofia/internal/1002@z.com to XML[3000@default]
  //2010-10-08 18:41:35.962099 [INFO] mod_dialplan_xml.c:331 Processing 1002 <1002>->3000 in context default
  //2010-10-08 18:41:43.134207 [NOTICE] sofia.c:528 Hangup sofia/internal/z.com [CS_EXECUTE] [NORMAL_CLEARING]

 
  if (string=='OK') { 
  
   //
   //
   //       <<<<<<<<<<<<<<<<<<------------------ It receive OK but it never execute this two, and but it execute invalid macro
   //
   //
   //
   session.sayPhrase("valid", menuselection, "en");
   session.execute("transfer", '3000');
  } else {
   session.sayPhrase("invalid", menuselection, "en");
   return true;
}


/* FS wiki - example */
function promptfordigits_dtmf_callback(session, type, digits, arg)
{
   console_log("digit: " + digits.digit + "\n");
   promptfordigits_dtmf_digits += digits.digit;
   /* returning true does not interrupt the digit collection*/
   return(true);
}

/* FS wiki - example */
function promptfordigits(ivrsession, promptname, numdigits, timeout)
{
   var repeat = 0;

   console_log("saymenu: menu=[" + promptname + "] numdigits=[" + numdigits + "]\n");

   session.flushDigits();
   promptfordigits_dtmf_digits = "";

   while (ivrsession.ready() && promptfordigits_dtmf_digits.length < numdigits && repeat < 3) {
       /* play phrase - if digit keyed while playing callback will catch them.
       If less than numdigits collected we get the rest after the prompt.*/
       ivrsession.sayPhrase(promptname, numdigits, "en", promptfordigits_dtmf_callback, "");

       console_log("Prompt done=[" + promptname + "] Collected " + promptfordigits_dtmf_digits.length + " digits [" + promptfordigits_dtmf_digits + "]\n");

       /* if caller still here and has not entered any selection yet (or less than numdigits entered) - wait for the rest of the digits*/
       if (ivrsession.ready() && promptfordigits_dtmf_digits.length < numdigits ) {
           promptfordigits_dtmf_digits += ivrsession.getDigits(numdigits - promptfordigits_dtmf_digits.length, "", timeout);
           /* if still no selection or insufficient digits repeat menu */
           if (promptfordigits_dtmf_digits.length < numdigits) {
               promptfordigits_dtmf_digits = "";
               repeat++;
           }
       }
   }
   return(promptfordigits_dtmf_digits);
}



function retry()
{
  /* FS wiki - example */
  menuselection = promptfordigits(session, "DialByNumberMenu", 8, 6000);

  if ( session.ready() ) {

  var curl = new CURL();
  curl.run( "POST",
            "http://portal/conference/query",
            "om=" + menuselection + "&ty=__",
             my_callback,
             "my arg\n",
             "p:ier");

  }

}


/**
 * Let's answer our call
 */
session.answer();
retry();




Thanks & Regards