[Freeswitch-users] problems in Using Embedded FreeSWITCH

xl127 x.liu at hw.ac.uk
Thu Nov 24 14:35:48 MSK 2011


Hi,

The problem has been solved. I report it back here in case it might be 
helpful to others who would run into similar problems.
Basically I added switch_core_init(..) and set parameters for the global 
variable: SWITCH_GLOBAL_dirs

Below are the working codes:

======================================================================
#include <iostream>
#include <switch.h>
#include <QDir>

int main(int argc, char** argv)
{
     switch_core_flag_t flags = SCF_USE_SQL;
     bool console = true;
     const char *err = NULL;

     switch_core_set_globals();

     QDir conf_dir = QDir::current();

     SWITCH_GLOBAL_dirs.conf_dir = (char *) 
malloc(strlen(QString("%1/conf").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.conf_dir) {
        fprintf(stderr, "Cannot allocate memory for conf_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.conf_dir, 
QString("%1/conf").arg(conf_dir.absolutePath()).toAscii().constData());

     fprintf(stderr, "AAA%s\n",SWITCH_GLOBAL_dirs.conf_dir);

     SWITCH_GLOBAL_dirs.log_dir = (char *) 
malloc(strlen(QString("%1/log").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.log_dir) {
            fprintf(stderr,"Cannot allocate memory for log_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.log_dir, 
QString("%1/log").arg(conf_dir.absolutePath()).toAscii().constData());

     SWITCH_GLOBAL_dirs.run_dir = (char *) 
malloc(strlen(QString("%1/run").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.run_dir) {
         fprintf(stderr,"Cannot allocate memory for run_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.run_dir, 
QString("%1/run").arg(conf_dir.absolutePath()).toAscii().constData());

     SWITCH_GLOBAL_dirs.db_dir = (char *) 
malloc(strlen(QString("%1/db").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.db_dir) {
         fprintf(stderr,"Cannot allocate memory for db_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.db_dir, 
QString("%1/db").arg(conf_dir.absolutePath()).toAscii().constData());

     SWITCH_GLOBAL_dirs.script_dir = (char *) 
malloc(strlen(QString("%1/script").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.script_dir) {
         fprintf(stderr,"Cannot allocate memory for script_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.script_dir, 
QString("%1/script").arg(conf_dir.absolutePath()).toAscii().constData());

     SWITCH_GLOBAL_dirs.htdocs_dir = (char *) 
malloc(strlen(QString("%1/htdocs").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.htdocs_dir) {
         fprintf(stderr,"Cannot allocate memory for htdocs_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.htdocs_dir, 
QString("%1/htdocs").arg(conf_dir.absolutePath()).toAscii().constData());

     SWITCH_GLOBAL_dirs.grammar_dir = (char *) 
malloc(strlen(QString("%1/grammar").arg(conf_dir.absolutePath()).toAscii().constData()) 
+ 1);
     if (!SWITCH_GLOBAL_dirs.grammar_dir) {
         fprintf(stderr,"Cannot allocate memory for grammar_dir.");
     }
     strcpy(SWITCH_GLOBAL_dirs.grammar_dir, 
QString("%1/grammar").arg(conf_dir.absolutePath()).toAscii().constData());

     /* Initialize the core and load modules, that will startup FS 
completely */
     //if (switch_core_init(flags, console, &err) != 
SWITCH_STATUS_SUCCESS) {
     if (switch_core_init(flags, console ? SWITCH_TRUE : SWITCH_FALSE, 
&err) != SWITCH_STATUS_SUCCESS) {
         fprintf(stderr, "Failed to initialize FreeSWITCH's core: %s\n", 
err);
     }

     //switch_core_init_and_modload(flags, console ? SWITCH_TRUE : 
SWITCH_FALSE, &err);
     switch_core_init_and_modload(flags, SWITCH_FALSE, &err);
     switch_core_runtime_loop(!console);
     return 0;

}

====================================================================

cheers,
Xing



On 22/11/11 16:47, Anthony Minessale wrote:
> maybe your user does not have permissions to read and write the target 
> install dir
> try to chown -R to your user on all of /usr/local/freeswitch
>
> you might want to try things the other way around and embedd your app 
> in FS rather than embed FS in your app.
>
>
> On Tue, Nov 22, 2011 at 10:20 AM, xl127 <x.liu at hw.ac.uk 
> <mailto:x.liu at hw.ac.uk>> wrote:
>
>     If I switch to root user I can successfully run my embedded FS
>     app: FS_Embed.
>     but it will fails if I run it as non-root user.
>
>     One thing I can think of to do is re-install FS as non-root.
>     I tried but it failed to access
>     /usr/lib/python2.7/site-packages/freeswitch.py due to the
>     permissions.
>
>
>
>     On 22/11/11 16:08, Anthony Minessale wrote:
>>     i know you needed apr, not sure, maybe try strace or gdb
>>
>>
>>     On Tue, Nov 22, 2011 at 6:36 AM, xl127 <x.liu at hw.ac.uk
>>     <mailto:x.liu at hw.ac.uk>> wrote:
>>
>>         Thanks for the advice!
>>
>>         I tried it but still got the same error.
>>
>>         I added the #include <apr_general.h> and found it from
>>         /usr/local/sr/freeswitch/libs/apr/include
>>         rather than from the installed directory
>>         /usr/local/freeswitch. Hope it is the right one.
>>
>>         any more clues?
>>
>>
>>
>>         On 22/11/11 01:38, Anthony Minessale wrote:
>>>         try
>>>
>>>             if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
>>>                 fprintf(stderr, "FATAL ERROR! Could not initialize
>>>         APR\n");
>>>                 return 255;
>>>             }
>>>
>>>         early on in main()
>>>
>>>
>>>         On Mon, Nov 21, 2011 at 1:12 PM, xl127 <x.liu at hw.ac.uk
>>>         <mailto:x.liu at hw.ac.uk>> wrote:
>>>
>>>             Hello,
>>>
>>>             Following the instructions in
>>>             http://wiki.freeswitch.org/wiki/Embedding_FreeSWITCH
>>>             I am trying to use Embedded FreeSwitch.
>>>
>>>             I installed FS in Fedora linux as a root user in
>>>             /usr/local/freeswitch.
>>>             Now as non-root user,
>>>             I compiled following codes:
>>>
>>>             #include <switch.h>
>>>             int main(int argc, char** argv)
>>>             {
>>>                 switch_core_flag_t flags = SCF_USE_SQL;
>>>                 bool console = true;
>>>                 const char *err = NULL;
>>>                 switch_core_set_globals();
>>>                 switch_core_init_and_modload(flags, console ?
>>>             SWITCH_TRUE :
>>>             SWITCH_FALSE, &err);
>>>                 switch_core_runtime_loop(!console);
>>>                 return 0;
>>>             }
>>>
>>>             And copy the executable and conf, mod, contents of lib
>>>             of the installed
>>>             FS to my $MyWorkingDir.
>>>
>>>             My directory structure looks like:
>>>                MyWorkingDir--bin/  (contains my executable: FS_Embed)
>>>                                     --conf/
>>>                                     --mod/
>>>                                     --lib/
>>>                                     --grammars
>>>                                     --sounds
>>>                                     --scripts
>>>                                     --log
>>>             (I also tried to copy the contents of lib directory into
>>>             MyWorkingDir)
>>>
>>>             When I run my embedded FS: ./FS_Embed, I got error
>>>
>>>             2011-11-21 18:46:26.606783 [INFO] switch_event.c:631
>>>             Activate Eventing
>>>             Engine.
>>>             2011-11-21 18:46:26.617941 [DEBUG] switch_event.c:610
>>>             Create event
>>>             dispatch thread 0
>>>             FS_Embed: src/switch_xml.c:2225: switch_xml_open_cfg:
>>>             Assertion
>>>             `MAIN_XML_ROOT != ((void *)0)' failed.
>>>             Aborted (core dumped)
>>>
>>>             and occasionally on another run, I got error:
>>>
>>>             2011-11-21 16:56:51.756040 [INFO] switch_event.c:631
>>>             Activate Eventing
>>>             Engine.
>>>             2011-11-21 16:56:51.767198 [DEBUG] switch_event.c:610
>>>             Create event
>>>             dispatch thread 0
>>>             Segmentation fault (core dumped)
>>>
>>>             It looks like there are some things wrong with my
>>>             Environment Setup for
>>>             Embedded FS,
>>>             but after a while of checking/trying/googling I couldn't
>>>             find what's wrong.
>>>
>>>             Any advice please?
>>>
>>>             Many thanks!
>>>             Xing
>>>
>>>
>>>
>>>             --
>>>             Heriot-Watt University is a Scottish charity
>>>             registered under charity number SC000278.
>>>
>>>             Heriot-Watt University is the Sunday Times
>>>             Scottish University of the Year 2011-2012
>>>
>>>
>>>
>>>             _________________________________________________________________________
>>>             Professional FreeSWITCH Consulting Services:
>>>             consulting at freeswitch.org <mailto:consulting at freeswitch.org>
>>>             http://www.freeswitchsolutions.com
>>>
>>>             
>>>             
>>>
>>>             Official FreeSWITCH Sites
>>>             http://www.freeswitch.org
>>>             http://wiki.freeswitch.org
>>>             http://www.cluecon.com
>>>
>>>             FreeSWITCH-users mailing list
>>>             FreeSWITCH-users at lists.freeswitch.org
>>>             <mailto:FreeSWITCH-users at lists.freeswitch.org>
>>>             http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>>             UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>>             http://www.freeswitch.org
>>>
>>>
>>>
>>>
>>>         -- 
>>>         Anthony Minessale II
>>>
>>>         FreeSWITCH http://www.freeswitch.org/
>>>         ClueCon http://www.cluecon.com/
>>>         Twitter: http://twitter.com/FreeSWITCH_wire
>>>
>>>         AIM: anthm
>>>         MSN:anthony_minessale at hotmail.com
>>>         <mailto:MSN%3Aanthony_minessale at hotmail.com>
>>>         GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>>>         <mailto:PAYPAL%3Aanthony.minessale at gmail.com>
>>>         IRC: irc.freenode.net <http://irc.freenode.net> #freeswitch
>>>
>>>         FreeSWITCH Developer Conference
>>>         sip:888 at conference.freeswitch.org
>>>         <mailto:sip%3A888 at conference.freeswitch.org>
>>>         googletalk:conf+888 at conference.freeswitch.org
>>>         <mailto:googletalk%3Aconf%2B888 at conference.freeswitch.org>
>>>         pstn:+19193869900 <tel:%2B19193869900>
>>>
>>>
>>>         _________________________________________________________________________
>>>         Professional FreeSWITCH Consulting Services:
>>>         consulting at freeswitch.org  <mailto:consulting at freeswitch.org>
>>>         http://www.freeswitchsolutions.com
>>>
>>>         
>>>         
>>>
>>>         Official FreeSWITCH Sites
>>>         http://www.freeswitch.org
>>>         http://wiki.freeswitch.org
>>>         http://www.cluecon.com
>>>
>>>         FreeSWITCH-users mailing list
>>>         FreeSWITCH-users at lists.freeswitch.org  <mailto:FreeSWITCH-users at lists.freeswitch.org>
>>>         http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>>         UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>>         http://www.freeswitch.org
>>
>>
>>         ------------------------------------------------------------------------
>>
>>         MailScanner Signature HW *Heriot-Watt University is the
>>         Sunday Times
>>
>>           Scottish University of the Year 2011-2012
>>         *
>>
>>           Heriot-Watt University is a Scottish charity
>>           registered under charity number SC000278.
>>
>>         _________________________________________________________________________
>>         Professional FreeSWITCH Consulting Services:
>>         consulting at freeswitch.org <mailto:consulting at freeswitch.org>
>>         http://www.freeswitchsolutions.com
>>
>>         
>>         
>>
>>         Official FreeSWITCH Sites
>>         http://www.freeswitch.org
>>         http://wiki.freeswitch.org
>>         http://www.cluecon.com
>>
>>         FreeSWITCH-users mailing list
>>         FreeSWITCH-users at lists.freeswitch.org
>>         <mailto:FreeSWITCH-users at lists.freeswitch.org>
>>         http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>         UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>         http://www.freeswitch.org
>>
>>
>>
>>
>>     -- 
>>     Anthony Minessale II
>>
>>     FreeSWITCH http://www.freeswitch.org/
>>     ClueCon http://www.cluecon.com/
>>     Twitter: http://twitter.com/FreeSWITCH_wire
>>
>>     AIM: anthm
>>     MSN:anthony_minessale at hotmail.com
>>     <mailto:MSN%3Aanthony_minessale at hotmail.com>
>>     GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>>     <mailto:PAYPAL%3Aanthony.minessale at gmail.com>
>>     IRC: irc.freenode.net <http://irc.freenode.net> #freeswitch
>>
>>     FreeSWITCH Developer Conference
>>     sip:888 at conference.freeswitch.org
>>     <mailto:sip%3A888 at conference.freeswitch.org>
>>     googletalk:conf+888 at conference.freeswitch.org
>>     <mailto:googletalk%3Aconf%2B888 at conference.freeswitch.org>
>>     pstn:+19193869900 <tel:%2B19193869900>
>>
>>
>>     _________________________________________________________________________
>>     Professional FreeSWITCH Consulting Services:
>>     consulting at freeswitch.org  <mailto:consulting at freeswitch.org>
>>     http://www.freeswitchsolutions.com
>>
>>     
>>     
>>
>>     Official FreeSWITCH Sites
>>     http://www.freeswitch.org
>>     http://wiki.freeswitch.org
>>     http://www.cluecon.com
>>
>>     FreeSWITCH-users mailing list
>>     FreeSWITCH-users at lists.freeswitch.org  <mailto:FreeSWITCH-users at lists.freeswitch.org>
>>     http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>     UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>     http://www.freeswitch.org
>
>
>     ------------------------------------------------------------------------
>
>     MailScanner Signature HW *Heriot-Watt University is the Sunday Times
>       Scottish University of the Year 2011-2012*
>
>       Heriot-Watt University is a Scottish charity
>       registered under charity number SC000278.
>
>     _________________________________________________________________________
>     Professional FreeSWITCH Consulting Services:
>     consulting at freeswitch.org <mailto:consulting at freeswitch.org>
>     http://www.freeswitchsolutions.com
>
>     
>     
>
>     Official FreeSWITCH Sites
>     http://www.freeswitch.org
>     http://wiki.freeswitch.org
>     http://www.cluecon.com
>
>     FreeSWITCH-users mailing list
>     FreeSWITCH-users at lists.freeswitch.org
>     <mailto:FreeSWITCH-users at lists.freeswitch.org>
>     http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>     UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>     http://www.freeswitch.org
>
>
>
>
> -- 
> Anthony Minessale II
>
> FreeSWITCH http://www.freeswitch.org/
> ClueCon http://www.cluecon.com/
> Twitter: http://twitter.com/FreeSWITCH_wire
>
> AIM: anthm
> MSN:anthony_minessale at hotmail.com 
> <mailto:MSN%3Aanthony_minessale at hotmail.com>
> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com 
> <mailto:PAYPAL%3Aanthony.minessale at gmail.com>
> IRC: irc.freenode.net <http://irc.freenode.net> #freeswitch
>
> FreeSWITCH Developer Conference
> sip:888 at conference.freeswitch.org 
> <mailto:sip%3A888 at conference.freeswitch.org>
> googletalk:conf+888 at conference.freeswitch.org 
> <mailto:googletalk%3Aconf%2B888 at conference.freeswitch.org>
> pstn:+19193869900
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org



-- 
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.

Heriot-Watt University is the Sunday Times
Scottish University of the Year 2011-2012


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111124/dacf5a42/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 4803 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111124/dacf5a42/attachment-0002.jpe 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 4803 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111124/dacf5a42/attachment-0003.jpe 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hw_uni_of_year.jpg
Type: image/jpeg
Size: 4803 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20111124/dacf5a42/attachment-0001.jpg 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list