diff --git a/data/tutorials/osips_native/cgrates/etc/cgrates/cgrates.json b/data/tutorials/osips_native/cgrates/etc/cgrates/cgrates.json index bde8b3878..fcb3f9444 100644 --- a/data/tutorials/osips_native/cgrates/etc/cgrates/cgrates.json +++ b/data/tutorials/osips_native/cgrates/etc/cgrates/cgrates.json @@ -4,7 +4,7 @@ // Copyright (C) ITsysCOM GmbH "general": { - "default_request_type": "*prepaid", +// "default_request_type": "*prepaid", }, "stor_db": { @@ -137,6 +137,7 @@ "sm_generic": { "enabled": true, + "debit_interval": "10s", }, diff --git a/data/tutorials/osips_native/opensips/etc/opensips/opensips.cfg b/data/tutorials/osips_native/opensips/etc/opensips/opensips.cfg index 2045be92a..e9530654a 100644 --- a/data/tutorials/osips_native/opensips/etc/opensips/opensips.cfg +++ b/data/tutorials/osips_native/opensips/etc/opensips/opensips.cfg @@ -4,10 +4,6 @@ # OpenSIPS-CGRateS out of residential configuration script # by OpenSIPS Solutions # -# This script was generated via "make menuconfig", from -# the "Residential" scenario. -# You can enable / disable more features / functionalities by -# re-generating the scenario with different options.# # # Please refer to the Core CookBook at: # http://www.opensips.org/Resources/DocsCookbooks @@ -83,17 +79,6 @@ loadmodule "cgrates.so" modparam("cgrates", "cgrates_engine", "127.0.0.1:2012") -#### ACCounting module -loadmodule "acc.so" -/* what special events should be accounted ? */ -modparam("acc", "early_media", 0) -modparam("acc", "report_cancels", 0) -/* by default we 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) - - #### UDP protocol loadmodule "proto_udp.so" @@ -112,10 +97,7 @@ route{ # take the path determined by record-routing if (loose_route()) { - if (is_method("BYE")) { - # do accunting, even if the transaction fails - do_accounting("log","failed"); - } else if (is_method("INVITE")) { + if (is_method("INVITE")) { # even if in most of the cases is useless, do RR for # re-INVITEs alos, as some buggy clients do change route set # during the dialog. @@ -178,11 +160,6 @@ route{ if (!is_method("REGISTER|MESSAGE")) record_route(); - # account only INVITEs - if (is_method("INVITE")) { - do_accounting("log"); - } - if (!uri==myself) { route(relay); } @@ -214,6 +191,8 @@ route{ } # check auth with CGRateS + #$cgr(Tenant) = $fd; + #$cgr(RequestType) = "*prepaid"; if (!async(cgrates_auth("$fU", "$rU"), resume_cgr_auth)) { sl_send_reply("503", "Service Unavailable"); exit; @@ -236,6 +215,11 @@ route[relay] { } route [resume_cgr_auth] { + if ($rc < 0) { + xlog("Call not authorized: code=$cgrret!\n"); + send_reply("403", "Forbidden"); + exit; + } cgrates_acc("cdr|missed", "$fU", "$rU"); route(relay); } diff --git a/sessionmanager/smgeneric.go b/sessionmanager/smgeneric.go index b84780761..0eedeeaa5 100644 --- a/sessionmanager/smgeneric.go +++ b/sessionmanager/smgeneric.go @@ -1042,13 +1042,16 @@ func (smg *SMGeneric) BiRPCV1GetLCRSuppliers(clnt rpcclient.RpcClientConnection, } // Called on session start, returns the maximum number of seconds the session can last -func (smg *SMGeneric) BiRPCV1InitiateSession(clnt rpcclient.RpcClientConnection, ev SMGenericEvent, maxUsage *float64) error { - if minMaxUsage, err := smg.InitiateSession(ev, clnt); err != nil { - return utils.NewErrServerError(err) +func (smg *SMGeneric) BiRPCV1InitiateSession(clnt rpcclient.RpcClientConnection, ev SMGenericEvent, maxUsage *float64) (err error) { + var minMaxUsage time.Duration + if minMaxUsage, err = smg.InitiateSession(ev, clnt); err != nil { + if err != rpcclient.ErrSessionNotFound { + err = utils.NewErrServerError(err) + } } else { *maxUsage = minMaxUsage.Seconds() } - return nil + return } // Interim updates, returns remaining duration from the RALs