[Freeswitch-dev] Issue while creating a session for an incoming call in managed application
Papineni, Suneel
SPapineni at enghouse.com
Wed Jun 13 19:29:06 MSD 2012
Hi,
I am having a third party VoIP client which exposes API in .NET to communicate with my application. I want to use this client as an endpoint in Freeswitch (like how it is implemented in "mod_skypopen" module), so that calls coming to this client can be handled at Freeswitch and (if required) bridge calls to clients connected to Freeswitch.
To implement this, I have written a managed module in which "ILoadNotificationPlugin" is implemented where config (client's interface config) is loaded.
When there is an incoming call (ringing state) to the client, I get handle in managed module and trying to establish a session at freeswitch. While doing this I am getting exception as "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Here is the code that I am using... Could someone guide me if I am doing this correctly.
Note: I am following "mod_skypopen" as an example...
public static int new_inbound_channel(private_object pobject)
{
SWIGTYPE_p_switch_core_session session = null;
SWIGTYPE_p_switch_channel channel = null;
switch_endpoint_interface intf = new switch_endpoint_interface();
intf.interface_name = "NET_interface";
intf.io_routines = io_routines;
intf.state_handler = state_handlers;
freeswitch.switch_core_set_globals();
Api fsApi = new Api();
String uuid = fsApi.ExecuteString("create_uuid");
try
{
session = freeswitch.switch_core_session_request_uuid(intf, switch_call_direction_t.SWITCH_CALL_DIRECTION_INBOUND, 0, null, uuid); //I am getting the above issue here....
if (session != null)
{
freeswitch.switch_core_session_add_stream(session, null);
channel = freeswitch.switch_core_session_get_channel(session);
if (channel == null)
{
freeswitch.switch_core_session_destroy_state(session);
return 0;
}
freeswitch.switch_channel_set_variable_name_printf(channel, "waste", "false");
pobject.caller_profile = freeswitch.switch_caller_profile_new(freeswitch.switch_core_session_get_pool(session), "NETClient", "dialplan", "callid_name", "callid_number", null, null, null, null, "mod_netclient", "context", "destination");
if (pobject.caller_profile != null)
{
freeswitch.switch_channel_set_name(channel, "name");
freeswitch.switch_channel_set_caller_profile(channel, pobject.caller_profile);
}
freeswitch.switch_channel_set_state_flag(channel, switch_channel_flag_t.CF_GEN_RINGBACK);
switch_status_t session_status = freeswitch.switch_core_session_thread_launch(session);
if (session_status != switch_status_t.SWITCH_STATUS_SUCCESS)
{
freeswitch.switch_core_session_destroy_state(session);
return 0;
}
}
}
catch (Exception exp)
{
string expstring = exp.Message;
}
return 0;
}
Thanks & Regards
Suneel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20120613/0157bac5/attachment.html
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-dev
mailing list