[OpenSIPS-Users] Trouble getting mediaproxy to work (dialog module)

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Mar 20 15:10:22 CET 2009


Hi Jeff,

there is no dependency (as order) between engage_media_proxy()  and 
create_dialog(). you can call them in whatever order.

there is no debug because engage_media_proxy() is simply setting a 
flag...the action is done later in some calbacks.

Regards,
Bogdan

Jeff Pyle wrote:
> Hi Bogdan,
>
> Is there any reason that engage_media_proxy() has to run before
> create_dialog()?  If it's the other way around, engage_media_proxy() doesn't
> do anything, even at the highest debug level.
>
>
> - Jeff
>
>
>
> On 3/20/09 8:30 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
>
>   
>> Hi,
>>
>> Do you get something like this at statup:
>>     engage_media_proxy() will not work because the dialog module is not
>> loaded
>>
>> Regards,
>> Bogdan
>>
>>
>> slophoo wrote:
>>     
>>> Opensips trace returns the following error to me:
>>>
>>> ERROR:mediaproxy:EngageMediaProxy: engage_media_proxy requires the dialog
>>> module to be loaded and configured
>>>
>>> I have not needed the dialog module before, but have now loaded it and it
>>> required one parameter, so I copied that from the example as well.
>>>
>>> loadmodule "dialog.so"
>>> modparam("dialog", "dlg_flag",4)
>>>
>>> it seems to be loaded, but i still get the above error when making a call
>>> and mediaproxy is not used.  What am I missing?
>>>
>>> I'll post my entire opensips.cfg here in case it helps, maybe the issue is
>>> the order in which i call engage_media_proxy.  By the way, at the moment my
>>> goal is to get ALL calls to use mediaproxy just to verify that it works.
>>> Later I will work out the specific NAT situations where it is needed:
>>>
>>>
>>>
>>> #
>>> # $Id: opensips.cfg 4423 2008-06-27 10:25:01Z henningw $
>>> #
>>> # OpenSIPS basic configuration script
>>> #     by Anca Vamanu <anca at voice-system.ro>
>>> #
>>> # Please refer to the Core CookBook at
>>> http://www.opensips.org/dokuwiki/doku.php
>>> # for a explanation of possible statements, functions and parameters.
>>> # hhii
>>>
>>> ####### Global Parameters #########
>>>
>>> debug=3
>>> log_stderror=no
>>> log_facility=LOG_LOCAL0
>>>
>>> fork=yes
>>> children=4
>>>
>>> /* uncomment the following lines to enable debugging */
>>> debug=6
>>> #fork=no
>>> log_stderror=yes
>>>
>>> /* uncomment the next line to disable TCP (default on) */
>>> #disable_tcp=yes
>>>
>>> /* uncomment the next line to enable the auto temporary blacklisting of
>>>    not available destinations (default disabled) */
>>> #disable_dns_blacklist=no
>>>
>>> /* uncomment the next line to enable IPv6 lookup after IPv4 dns
>>>    lookup failures (default disabled) */
>>> #dns_try_ipv6=yes
>>>
>>> /* uncomment the next line to disable the auto discovery of local aliases
>>>    based on revers DNS on IPs (default on) */
>>> #auto_aliases=no
>>>
>>> /* uncomment the following lines to enable TLS support  (default off) */
>>> #disable_tls = no
>>> #listen = tls:your_IP:5061
>>> #tls_verify_server = 1
>>> #tls_verify_client = 1
>>> #tls_require_client_certificate = 0
>>> #tls_method = TLSv1
>>> #tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
>>> #tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
>>> #tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"
>>>
>>>
>>> port=5060
>>>
>>> /* uncomment and configure the following line if you want opensips to
>>>    bind on a specific interface/port/proto (default bind on all available)
>>> */
>>> #listen=udp:192.168.1.2:5060
>>>
>>>
>>> ####### Modules Section ########
>>>
>>> #set module path
>>> mpath="/usr/local/lib/opensips/modules/"
>>>
>>> /* uncomment next line for MySQL DB support */
>>> loadmodule "db_mysql.so"
>>> loadmodule "sl.so"
>>> loadmodule "tm.so"
>>> loadmodule "rr.so"
>>> loadmodule "maxfwd.so"
>>> loadmodule "usrloc.so"
>>> loadmodule "registrar.so"
>>> loadmodule "textops.so"
>>> loadmodule "mi_fifo.so"
>>> loadmodule "uri_db.so"
>>> loadmodule "uri.so"
>>> loadmodule "xlog.so"
>>> loadmodule "dialog.so"
>>> loadmodule "acc.so"
>>> /* uncomment next lines for MySQL based authentication support
>>>    NOTE: a DB (like db_mysql) module must be also loaded */
>>> loadmodule "auth.so"
>>> loadmodule "auth_db.so"
>>> /* uncomment next line for aliases support
>>>    NOTE: a DB (like db_mysql) module must be also loaded */
>>> #loadmodule "alias_db.so"
>>> /* uncomment next line for multi-domain support
>>>    NOTE: a DB (like db_mysql) module must be also loaded
>>>    NOTE: be sure and enable multi-domain support in all used modules
>>>          (see "multi-module params" section ) */
>>> loadmodule "domain.so"
>>> /* uncomment the next two lines for presence server support
>>>    NOTE: a DB (like db_mysql) module must be also loaded */
>>> #loadmodule "presence.so"
>>> #loadmodule "presence_xml.so"
>>>
>>> loadmodule "nathelper.so"
>>> loadmodule "mediaproxy.so"
>>>
>>> # ----------------- setting module-specific parameters ---------------
>>>
>>>
>>> # ----- mi_fifo params -----
>>> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
>>>
>>>
>>> # ----- rr params -----
>>> # add value to ;lr param to cope with most of the UAs
>>> modparam("rr", "enable_full_lr", 1)
>>> # do not append from tag to the RR (no need for this script)
>>> modparam("rr", "append_fromtag", 0)
>>>
>>>
>>> # ----- rr params -----
>>> modparam("registrar", "method_filtering", 1)
>>> /* uncomment the next line to disable parallel forking via location */
>>> # modparam("registrar", "append_branches", 0)
>>> /* uncomment the next line not to allow more than 10 contacts per AOR */
>>> modparam("registrar", "max_contacts", 10)
>>>
>>> # ----- uri_db params -----
>>> /* by default we disable the DB support in the module as we do not need it
>>>    in this configuration */
>>> modparam("uri_db", "use_uri_table", 0)
>>> modparam("uri_db", "db_url", "")
>>> modparam("registrar", "received_avp", "$avp(i:42)")
>>>
>>> modparam("dialog","dlg_flag",4)
>>>
>>>
>>> # ----- acc params -----
>>> /* what sepcial events should be accounted ? */
>>> modparam("acc", "early_media", 1)
>>> modparam("acc", "report_ack", 1)
>>> modparam("acc", "report_cancels", 1)
>>> /* by default ww do not adjust the direct of the sequential requests.
>>>    if you enable this parameter, be sure the enable "append_fromtag"
>>>    in "rr" module */
>>> modparam("acc", "detect_direction", 0)
>>> /* account triggers (flags) */
>>> modparam("acc", "failed_transaction_flag", 3)
>>> modparam("acc", "log_flag", 1)
>>> modparam("acc", "log_missed_flag", 2)
>>> /* uncomment the following lines to enable DB accounting also */
>>> modparam("acc", "db_flag", 1)
>>> modparam("acc", "db_missed_flag", 2)
>>>
>>>
>>> # ----- usrloc params -----
>>> modparam("usrloc", "db_mode",   0)
>>> /* uncomment the following lines if you want to enable DB persistency
>>>    for location entries */
>>> modparam("usrloc", "db_mode",   2)
>>> modparam("usrloc", "db_url",
>>> "mysql://openser:openserrw@127.0.0.1/openser")
>>>
>>>
>>> # ----- auth_db params -----
>>> /* uncomment the following lines if you want to enable the DB based
>>>    authentication */
>>> modparam("auth_db", "calculate_ha1", yes)
>>> modparam("auth_db", "password_column", "password")
>>> modparam("auth_db", "db_url",
>>> "mysql://openser:openserrw@127.0.0.1/openser")
>>> modparam("auth_db", "load_credentials", "")
>>>
>>>
>>> # ----- alias_db params -----
>>> /* uncomment the following lines if you want to enable the DB based
>>>    aliases */
>>> #modparam("alias_db", "db_url",
>>> # "mysql://opensips:opensipsrw@localhost/opensips")
>>>
>>>
>>> # ----- domain params -----
>>> /* uncomment the following lines to enable multi-domain detection
>>>    support */
>>> modparam("domain", "db_url", "mysql://openser:openserrw@127.0.0.1/openser")
>>> modparam("domain", "db_mode", 1)   # Use caching
>>>
>>>
>>> # ----- multi-module params -----
>>> /* uncomment the following line if you want to enable multi-domain support
>>>    in the modules (dafault off) */
>>> modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
>>>
>>>
>>> # ----- presence params -----
>>> /* uncomment the following lines if you want to enable presence */
>>> #modparam("presence|presence_xml", "db_url",
>>> "mysql://openser:openserrw@127.0.0.1/openser")
>>> #modparam("presence_xml", "force_active", 1)
>>> #modparam("presence", "server_address", "sip:74.85.27.9:5060")
>>>
>>>
>>> # ----- nathelper params -----
>>> #modparam("nathelper", "rtpproxy_disable", 1)
>>> modparam("nathelper", "natping_interval", 0)
>>> modparam("nathelper","received_avp","$avp(i:42)")
>>>
>>> #modparam("mediaproxy","natping_interval",30)
>>> modparam("mediaproxy", "mediaproxy_socket",
>>> "/var/run/mediaproxy/dispatcher.sock")
>>>
>>>
>>>
>>> ####### Routing Logic ########
>>>
>>>
>>> # main request routing logic
>>>
>>> route{
>>> if (!mf_process_maxfwd_header("10")) {
>>> sl_send_reply("483","Too Many Hops");
>>> exit;
>>> }
>>>
>>> if (has_totag()) {
>>> # sequential request withing a dialog should
>>> # take the path determined by record-routing
>>> if (loose_route()) {
>>> if (is_method("BYE")) {
>>> setflag(1); # do accounting ...
>>> setflag(3); # ... even if the transaction fails
>>> }
>>> route(1);
>>> } else {
>>> /* uncomment the following lines if you want to enable presence */
>>> ##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") {
>>> ## # in-dialog subscribe requests
>>> ## route(2);
>>> ## exit;
>>> ##}
>>> if ( is_method("ACK") ) {
>>> if ( t_check_trans() ) {
>>> # non loose-route, but stateful ACK; must be an ACK after a 487 or e.g.
>>> 404 from upstream server
>>> t_relay();
>>> exit;
>>> } else {
>>> # ACK without matching transaction ... ignore and discard.\n");
>>> exit;
>>> }
>>> }
>>> sl_send_reply("404","Not here");
>>> }
>>> exit;
>>> }
>>>
>>> #initial requests
>>>
>>> # CANCEL processing
>>> if (is_method("CANCEL"))
>>> {
>>> if (t_check_trans())
>>> t_relay();
>>> exit;
>>> }
>>>
>>> t_check_trans();
>>>
>>> # authenticate if from local subscriber (uncomment to enable auth)
>>> ##if (!(method=="REGISTER") && from_uri==myself)
>>> ##{
>>> ## if (!proxy_authorize("", "subscriber")) {
>>> ##  proxy_challenge("", "0");
>>> ##  exit;
>>> ## }
>>> ## if (!check_from()) {
>>> ##  sl_send_reply("403","Forbidden auth ID");
>>> ##  exit;
>>> ## }
>>> ##
>>> ## consume_credentials();
>>> ## # caller authenticated
>>> ##}
>>>
>>> # record routing
>>> if (!is_method("REGISTER|MESSAGE"))
>>> append_hf("P-hint: hello record routing\r\n");
>>> record_route();
>>>
>>> # account only INVITEs
>>> if (is_method("INVITE")) {
>>> setflag(1); # do accounting
>>> }
>>> if (!uri==myself)
>>> /* replace with following line if multi-domain support is used */
>>> ##if (!is_uri_host_local())
>>> {
>>> append_hf("P-hint: outbound\r\n");
>>> # if you have some interdomain connections via TLS
>>> ##if($rd=="tls_domain1.net") {
>>> ## t_relay("tls:domain1.net");
>>> ## exit;
>>> ##} else if($rd=="tls_domain2.net") {
>>> ## t_relay("tls:domain2.net");
>>> ## exit;
>>> ##}
>>> route(1);
>>> }
>>>
>>> # requests for my domain
>>>
>>> /* uncomment this if you want to enable presence server
>>>   and comment the next 'if' block
>>>   NOTE: uncomment also the definition of route[2] from  below */
>>> ##if( is_method("PUBLISH|SUBSCRIBE"))
>>> ##  route(2);
>>>
>>> if (is_method("PUBLISH"))
>>> {
>>> append_hf("P-hint: outbound alias\r\n");
>>> sl_send_reply("503", "Service sort of Unavailable");
>>> exit;
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> if (is_method("REGISTER"))
>>> {
>>> # authenticate the REGISTER requests (uncomment to enable auth)
>>> ##if (!www_authorize("", "subscriber"))
>>> ##{
>>> ## www_challenge("", "0");
>>> ## exit;
>>> ##}
>>> ##
>>> ##if (!check_to())
>>> ##{
>>> ## sl_send_reply("403","Forbidden auth ID");
>>> ## exit;
>>> ##}
>>> append_hf("P-hint: hello register\r\n");
>>> if (!search("^Contact:[ ]*\*")) {
>>> setflag(6);
>>> fix_nated_register();
>>> force_rport();
>>> };
>>> if (!save("location"))
>>> sl_reply_error();
>>>
>>> exit;
>>> }
>>>
>>> if ($rU==NULL) {
>>> # request with no Username in RURI
>>> sl_send_reply("484","Address Incomplete");
>>> exit;
>>> }
>>>
>>> # apply DB based aliases (uncomment to enable)
>>> ##alias_db_lookup("dbaliases");
>>>
>>> if (!lookup("location")) {
>>> switch ($retcode) {
>>> case -1:
>>> case -3:
>>> t_newtran();
>>> t_reply("404", "Not Found");
>>> exit;
>>> case -2:
>>> sl_send_reply("405", "Method Not Allowed");
>>> exit;
>>> }
>>> }
>>>
>>> # when routing via usrloc, log the missed calls also
>>> setflag(2);
>>>
>>> route(1);
>>> }
>>>
>>> route[1] {
>>> # for INVITEs enable some additional helper routes
>>> if (is_method("INVITE")) {
>>> ##  #use_media_proxy();
>>> engage_media_proxy();
>>> append_hf("P-hint: setflag7|forcerport|fix_contact\r\n");
>>> t_on_branch("2");
>>> t_on_reply("2");
>>> t_on_failure("1");
>>> }
>>>
>>> if (!t_relay()) {
>>> sl_reply_error();
>>> };
>>> exit;
>>> }
>>>
>>>
>>> # Presence route
>>> /* uncomment the whole following route for enabling presence
>>>    NOTE: do not forget to enable the call of this route from the main
>>>      route */
>>> ##route[2]
>>> ##{
>>> ## if (!t_newtran())
>>> ## {
>>> ##  sl_reply_error();
>>> ##  exit;
>>> ## };
>>> ##
>>> ## if(is_method("PUBLISH"))
>>> ## {
>>> ##  handle_publish();
>>> ##  t_release();
>>> ## }
>>> ## else
>>> ## if( is_method("SUBSCRIBE"))
>>> ## {
>>> ##  handle_subscribe();
>>> ##  t_release();
>>> ## }
>>> ##
>>> ## exit;
>>> ##}
>>>
>>>
>>> branch_route[2] {
>>> xlog("new branch at $ru\n");
>>> }
>>>
>>>
>>> onreply_route[2] {
>>> ## use_media_proxy();
>>> append_hf("P-hint: onreplyrout\r\n)");
>>> xlog("incoming reply\n");
>>> }
>>>
>>>
>>> failure_route[1] {
>>> if (t_was_cancelled()) {
>>> exit;}
>>>
>>> # uncomment the following lines if you want to block client
>>> # redirect based on 3xx replies.
>>> ##if (t_check_status("3[0-9][0-9]")) {
>>> ##t_reply("404","Not found");
>>> ## exit;
>>> ##}
>>>
>>> # uncomment the following lines if you want to redirect the failed
>>> # calls to a different new destination
>>> ##if (t_check_status("486|408")) {
>>> ## sethostport("192.168.2.100:5060");
>>> ## append_branch();
>>> ## # do not set the missed call flag again
>>> ## t_relay();
>>> ##}
>>> }
>>>
>>>
>>>   
>>>       
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>     
>
>
>   




More information about the Users mailing list