<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
over the weekend I backported the implementation of t_flush_flags()
as well as auto-update of transaction flags after branch/failure
route. Just pull the latest branch 3.1 and you are ready to
compile/install.<br>
<br>
Let us know if it solves the case.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
On 9/9/11 2:40 PM, Daniel-Constantin Mierla wrote:
<blockquote cite="mid:4E6A0938.3080707@gmail.com" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
Hello,<br>
<br>
when you pulled the GIT branch 3.1, did you use --depth 1, like
next?<br>
<br>
git clone --depth 1 git://git.sip-router.org/sip-router kamailio<br>
<br>
The you just got the snapshot at that time without the history of
the commit and probably you did the git clone after I did the
commit, a new git pull taking newer commit. So try cloning again
the latest branch 3.1, without --depth 1 parameter.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<br>
On 9/7/11 2:20 PM, Ozren Lapcevic wrote:
<blockquote
cite="mid:CAK1NKFtDJJRjn80HP570kf7xzH22i5KP-K4kqEXu+UV=u2=Xyw@mail.gmail.com"
type="cite">Hi,<br>
<br>
I've previously installed kamailio from git branch 3.1. Now,
I've manged to git cherry-pick your patch, but got "fatal: Could
not find 83620cb7cd14ee3b509eef72d99337567f53967f" when tried to
get t_flush_flags(). I've double-checked commit and found it
here: <a moz-do-not-send="true"
href="http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=commit;h=83620cb7cd14ee3b509eef72d99337567f53967f">http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=commit;h=83620cb7cd14ee3b509eef72d99337567f53967f</a>.
I don't know why I can't cherry-pick it.<br>
<br>
Your patch alone, without t_flush_flags(), doesn't change
anything in my scenario, there is still no logging of 2nd
branch. <br>
<br>
Cheers<br>
Ozren<br>
<br>
<br>
<div class="gmail_quote">On Wed, Sep 7, 2011 at 1:05 PM,
Daniel-Constantin Mierla <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:miconda@gmail.com">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div bgcolor="#FFFFFF" text="#000000"> Hello,
<div class="im"><br>
<br>
On 9/7/11 11:25 AM, Ozren Lapcevic wrote:
<blockquote type="cite">Hi Daniel, <br>
<br>
thanks for the quick fix and reply.<br>
<br>
What is the easiest way to try this new patch? I'm
running kamailio 3.1.4 and there is no t_flush_flags()
in tmx module in that version. I suppose I need to
install Kamailio Devel from git (<a
moz-do-not-send="true"
href="http://www.kamailio.org/dokuwiki/doku.php/install:kamailio-devel-from-git"
target="_blank">http://www.kamailio.org/dokuwiki/doku.php/install:kamailio-devel-from-git</a>)
to get t_flush flags() and your patch or is there a
workaround to apply them to my 3.1.4 branch?<br>
</blockquote>
<br>
</div>
did you install 3.1.4 from tarball/packages or is it from
git branch 3.1? If later, then you can do:<br>
<br>
git pull origin<br>
git cherry-pick -x
83620cb7cd14ee3b509eef72d99337567f53967f<br>
git cherry-pick -x
c589ca35b2aa3097a3c9e2a5a050514337300c05<br>
<br>
then recompile/install. First cherry-pick brings the
t_flush_flags, the second auto-update of the flags after
branch/failure route.<br>
<br>
If you installed from packages, then you would need to
repackage yourself after patching. The patches are
available at commit url, for example:
<div class="im"><br>
<br>
<a moz-do-not-send="true"
href="http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c589ca35b2aa3097a3c9e2a5a050514337300c05"
target="_blank">http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c589ca35b2aa3097a3c9e2a5a050514337300c05</a><br>
<br>
</div>
There you find at top of the page a link named 'patch'
that you can use with git tools to apply or extract the
diff-patch part and apply with patch.<br>
<br>
Cheers,<br>
<font color="#888888"> Daniel</font>
<div>
<div class="h5"><br>
<blockquote type="cite"> <br>
Cheers<br>
Ozren<br>
<br>
<br>
<div class="gmail_quote">On Tue, Sep 6, 2011 at 2:18
PM, Daniel-Constantin Mierla <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:miconda@gmail.com"
target="_blank">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello,<br>
<br>
can you use t_flush_flags() after setting the
accounting flag in falure_route? Automatic
update was missing so far, reported by Alex
Hermann as well. I just did a patch, so if you
want to try it, see the commit:<br>
<br>
<a moz-do-not-send="true"
href="http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c589ca35b2aa3097a3c9e2a5a050514337300c05"
target="_blank">http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c589ca35b2aa3097a3c9e2a5a050514337300c05</a><br>
<br>
Actually, reporting if all goes fine with this
patch, will help in backporting it to 3.1
branch.<br>
<br>
Thanks,<br>
Daniel
<div>
<div><br>
<br>
On 9/5/11 2:41 PM, Ozren Lapcevic wrote: </div>
</div>
<blockquote type="cite">
<div>
<div>Hi,<br>
<br>
I'm having some problems accounting
missed serial forked calls to mysql
database. <br>
<br>
I have following setup. Each user can
have up to two contacts: telephone
number (routed to asterisk) and SIP URI.
Users can specify which contact has
higher priority - which one should ring
first. There is also SEMS voicemail
which is forked as 3rd serial call leg
if there is no answer at first two
contacts.<br>
<br>
For example, I have two users: <a
moz-do-not-send="true"
href="mailto:oz@abc.hr"
target="_blank">oz@abc.hr</a> and <a
moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a>. <a
moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a> also
has set telephone number as alternative
number if he is not reachable at <a
moz-do-not-send="true"
href="mailto:sip%3Apero@abc.hr"
target="_blank">sip:pero@abc.hr</a>.
Moreover, <a moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a> has
voicemail turned on. When <a
moz-do-not-send="true"
href="mailto:oz@abc.hr"
target="_blank">oz@abc.hr</a> calls <a
moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a>, first
<a moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a>'s SIP
client rings, then if there is no answer
and after the timeout telephone number
rings and finally, if there is no answer
at telephone and after the timeout
INVITE is forked to SEMS.<br>
<br>
There are two interesting scenarios
accounting-wise which can happened:<br>
1. <a moz-do-not-send="true"
href="mailto:oz@abc.hr"
target="_blank">oz@abc.hr</a> calls <a
moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a>, there
are no answers and call is forked to
voicemail.<br>
2. <a moz-do-not-send="true"
href="mailto:oz@abc.hr"
target="_blank">oz@abc.hr</a> calls <a
moz-do-not-send="true"
href="mailto:pero@abc.hr"
target="_blank">pero@abc.hr</a>, there
is no answer at SIP client, but pero
answers call at telephone.<br>
<br>
When scenario 1 happens, I want to have
only one log (row) in missed_calls
table.<br>
<br>
When scenario 2 happens, I don't want to
have a log in missed_calls table.<br>
<br>
To accomplish this,<b> I want to log
only the 2nd branch of the forked
call. However, there is either a bug
in acc module or I'm doing something
wrong, and I can't get Kamailio to log
only the 2nd branch</b>. I think that
I am setting the FLT_ACCMISSED flag
correctly - after the 2nd branch is
handled and prior to calling the RELAY
route. Logs show that FLT_ACCMISSED flag
is set prior to calling t_relay(), and
there are no errors in debug log. I am
using $ru = "something" to rewrite URI
prior to forking request. <br>
<br>
I can easily set up logging of every
call (two missed calls for serially
forked call to two locations) by setting
FLT_ACCMISSED flag for each INVITE. I
can set up logging of every call's 1st
branch, by reseting FLT_ACCMISSED flag
when handling 2nd branch of the call.
Interestingly, logging of only the 2nd
branch of the serial forked call works
when there is no forking to voicemail! <br>
<br>
Any ideas how to solve this problem? <br>
<br>
Bellow are important parts of my config
file. I'm running kamailio 3.1.4.<br>
<br>
Cheers<br>
Ozren<br>
<br>
<br>
# ----- acc params -----<br>
/* what special events should be
accounted ? */<br>
modparam("acc", "early_media", 0)<br>
modparam("acc", "report_ack", 1)<br>
modparam("acc", "report_cancels", 0)<br>
modparam("acc", "detect_direction", 0)<br>
/* account triggers (flags) */<br>
modparam("acc", "log_flag", FLT_ACC)<br>
modparam("acc", "log_missed_flag",
FLT_ACCMISSED)<br>
modparam("acc",
"failed_transaction_flag",
FLT_ACCFAILED)<br>
modparam("acc",
"log_extra","src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")<br>
/* enhanced DB accounting */<br>
#!ifdef WITH_ACCDB<br>
modparam("acc", "db_flag", FLT_ACC)<br>
modparam("acc", "db_missed_flag",
FLT_ACCMISSED)<br>
modparam("acc", "db_url", DBURL)<br>
modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_user=$tU;dst_domain=$td;src_ip=$si")<br>
#!endif<br>
<br>
...<br>
<br>
<br>
# Main SIP request routing logic<br>
# - processing of any incoming SIP
request starts with this route<br>
route {<br>
<br>
# per request initial checks<br>
route(REQINIT);<br>
<br>
if (src_ip != ****) {<br>
# NAT detection<br>
route(NAT);<br>
}<br>
<br>
# handle requests within SIP
dialogs<br>
route(WITHINDLG);<br>
<br>
### only initial requests (no To
tag)<br>
<br>
# CANCEL processing<br>
if (is_method("CANCEL"))<br>
{<br>
if (t_check_trans())<br>
t_relay();<br>
exit;<br>
}<br>
<br>
t_check_trans();<br>
<br>
# authentication<br>
route(AUTH);<br>
<br>
# record routing for dialog
forming requests (in case they are
routed)<br>
# - remove preloaded route
headers<br>
remove_hf("Route");<br>
if
(is_method("INVITE|SUBSCRIBE"))<br>
record_route();<br>
<br>
# account only INVITEs<br>
if (is_method("INVITE"))<br>
{<br>
setflag(FLT_ACC); # do
accounting<br>
}<br>
<br>
# dispatch requests to foreign
domains<br>
route(SIPOUT);<br>
<br>
### requests for my local
domains<br>
<br>
# handle presence related
requests<br>
route(PRESENCE);<br>
<br>
# handle registrations<br>
route(REGISTRAR);<br>
<br>
if ($rU==$null)<br>
{<br>
# request with no
Username in RURI<br>
sl_send_reply("484","Address
Incomplete");<br>
exit;<br>
}<br>
<br>
# dispatch destinations to PSTN<br>
route(PSTN);<br>
<br>
if ( is_method("INVITE") ) {<br>
route(DBALIASES);<br>
#check for user defined
forking priorities and timers<br>
route(FORK);<br>
}<br>
<br>
# user location service<br>
route(LOCATION);<br>
<br>
route(RELAY);<br>
}<br>
<br>
<br>
<br>
#check for user defined forking
priorities and timers<br>
route[FORK]{<br>
sql_query("con", "select * from
usr_pref_custom where uuid='$tu'",
"pref");<br>
<br>
$avp(uuid)=$dbr(pref=>[0,0]);<br>
$avp(email)=$dbr(pref=>[0,1]);<br>
$avp(prio1)=$dbr(pref=>[0,2]);<br>
$avp(prio2)=$dbr(pref=>[0,3]);<br>
$avp(timer1)=$dbr(pref=>[0,5]);<br>
$avp(timer2)=$dbr(pref=>[0,6]);<br>
<br>
if (strlen($avp(prio1))>5) {<br>
<br>
# user has multiple
contacts, do serial forking<br>
setflag(FLT_USRPREF);<br>
<br>
# set counter<br>
if (!$avp(prio)) {<br>
$avp(prio) = 1;<br>
}<br>
<br>
# overwrite request URI
with highest priority contact<br>
if ($avp(prio1) =~ "^<a
moz-do-not-send="true">sip:00</a>") {<br>
$ru =
$avp(prio1) + "@host";<br>
xlog("L_INFO","PRIO 1 is tel number,
RURI set: $ru");<br>
}<br>
else {<br>
$ru =
$avp(prio1);<br>
xlog("L_INFO","PRIO 1 is SIP URI, RURI
set: $ru");<br>
}<br>
}<br>
}<br>
<br>
<br>
route[RELAY] {<br>
#!ifdef WITH_NAT<br>
if
(check_route_param("nat=yes")) {<br>
setbflag(FLB_NATB);<br>
}<br>
if (isflagset(FLT_NATS) ||
isbflagset(FLB_NATB)) {<br>
route(RTPPROXY);<br>
}<br>
#!endif<br>
<br>
/* example how to enable some
additional event routes */<br>
if (is_method("INVITE")) {<br>
<br>
t_on_reply("REPLY_ONE");<br>
t_on_failure("FAIL_ONE");<br>
<br>
#if users have
priorities set, use FAIL_FORK failure
route<br>
if (
isflagset(FLT_USRPREF) ) {<br>
t_on_failure("FAIL_FORK");<br>
}<br>
}<br>
<br>
if (isflagset(FLT_ACCMISSED))
xlog("L_INFO","RELAY, $rm $ru, ACCMISSED
FLAG IS SET");<br>
else xlog("L_INFO","RELAY, $rm
$ru, ACCMISSED FLAG IS NOT SET");<br>
if (!t_relay()) {<br>
sl_reply_error();<br>
}<br>
exit;<br>
}<br>
<br>
<br>
# Handle requests within SIP dialogs<br>
route[WITHINDLG] {<br>
if (has_totag()) {<br>
# sequential request
withing a dialog should<br>
# take the path
determined by record-routing<br>
if (loose_route()) {<br>
xlog("L_INFO","WITHINDLG,
loose_route()");<br>
if
(is_method("BYE")) {<br>
xlog("L_INFO","WITHINDLG, BYE, DO
ACCOUNTING");<br>
setflag(FLT_ACC); # do accounting ...<br>
setflag(FLT_ACCFAILED); # ... even if
the transaction fails<br>
}<br>
route(RELAY);<br>
} else {<br>
if
(is_method("SUBSCRIBE") && uri
== myself) {<br>
#
in-dialog subscribe requests<br>
route(PRESENCE);<br>
exit;<br>
}<br>
if (
is_method("ACK") ) {<br>
if (
t_check_trans() ) {<br>
# no loose-route, but stateful ACK;<br>
# must be an ACK after a 487<br>
# or e.g. 404 from upstream server<br>
t_relay();<br>
exit;<br>
} else {<br>
# ACK without matching transaction ...
ignore and discard<br>
exit;<br>
}<br>
}<br>
sl_send_reply("404","Not here");<br>
}<br>
exit;<br>
}<br>
}<br>
<br>
<br>
# USER location service<br>
route[LOCATION] {<br>
<br>
#skip if $ru is telephone number<br>
if ($ru =~ "^<a
moz-do-not-send="true">sip:00</a>") {<br>
xlog("L_INFO","SKIP
lookup...");<br>
}<br>
else {<br>
if (!lookup("location"))
{<br>
switch ($rc) {<br>
case -1:<br>
case -3:<br>
t_newtran();<br>
t_reply("404", "Not Found");<br>
exit;<br>
case -2:<br>
sl_send_reply("405", "Method Not
Allowed");<br>
exit;<br>
}<br>
}<br>
}<br>
<br>
# when routing via usrloc, log
the missed calls also, but only if user
doesn't have prios set<br>
if ( is_method("INVITE")
&& !(isflagset(FLT_USRPREF))) {<br>
setflag(FLT_ACCMISSED);<br>
}<br>
}<br>
<br>
<br>
# Failure route for forked calls<br>
failure_route[FAIL_FORK] {<br>
#!ifdef WITH_NAT<br>
if (is_method("INVITE")
&& (isbflagset(FLB_NATB) ||
isflagset(FLT_NATS))) {<br>
unforce_rtp_proxy();<br>
}<br>
#!endif<br>
<br>
if ($avp(prio) >= 1) {<br>
$avp(prio) = $avp(prio)
+ 1;<br>
<br>
# handle 2nd branch<br>
if ( ($avp(prio) == 2)
&& ( isflagset(FLT_USRPREF) )) {<br>
t_on_failure("FAIL_FORK");<br>
<br>
if ($avp(prio2)
=~ "^<a moz-do-not-send="true">sip:00</a>")
{<br>
xlog("L_INFO","FAIL FORK, PRIO 2 is tel
number");<br>
$ru =
$avp(prio2) + "@host";<br>
}<br>
else {<br>
xlog("L_INFO","FAIL FORK, PRIO 2 is SIP
URI");<br>
$ru =
$avp(prio2);<br>
route(LOCATION);<br>
}<br>
setflag(FLT_ACCMISSED);<br>
}<br>
<br>
else {<br>
$avp(prio) = 0;<br>
$ru =
$(avp(uuid));<br>
rewritehostport("host:port");<br>
xlog("L_INFO","FAIL FORK, VOICEMAIL
email:$avp(email), ru:$ru, br: $br");<br>
append_hf("P-App-Name: voicemail\r\n");<br>
append_hf("P-App-Param:
Email-Address=$avp(email)\r\n");<br>
}<br>
route(RELAY);<br>
}<br>
<br>
if (t_is_canceled()) {<br>
exit;<br>
}<br>
} <br>
<fieldset></fieldset>
<br>
</div>
</div>
<pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a moz-do-not-send="true" href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<font color="#888888"> <br>
<pre cols="72">--
Daniel-Constantin Mierla -- <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
Kamailio Advanced Training, Oct 10-13, Berlin: <a moz-do-not-send="true" href="http://asipto.com/u/kat" target="_blank">http://asipto.com/u/kat</a>
<a moz-do-not-send="true" href="http://linkedin.com/in/miconda" target="_blank">http://linkedin.com/in/miconda</a> -- <a moz-do-not-send="true" href="http://twitter.com/miconda" target="_blank">http://twitter.com/miconda</a></pre>
</font></div>
</blockquote>
</div>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a moz-do-not-send="true" href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla -- <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
Kamailio Advanced Training, Oct 10-13, Berlin: <a moz-do-not-send="true" href="http://asipto.com/u/kat" target="_blank">http://asipto.com/u/kat</a>
<a moz-do-not-send="true" href="http://linkedin.com/in/miconda" target="_blank">http://linkedin.com/in/miconda</a> -- <a moz-do-not-send="true" href="http://twitter.com/miconda" target="_blank">http://twitter.com/miconda</a></pre>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla -- <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
Kamailio Advanced Training, Oct 10-13, Berlin: <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://asipto.com/u/kat">http://asipto.com/u/kat</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://linkedin.com/in/miconda">http://linkedin.com/in/miconda</a> -- <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://twitter.com/miconda">http://twitter.com/miconda</a></pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a class="moz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla -- <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
Kamailio Advanced Training, Oct 10-13, Berlin: <a class="moz-txt-link-freetext" href="http://asipto.com/u/kat">http://asipto.com/u/kat</a>
<a class="moz-txt-link-freetext" href="http://linkedin.com/in/miconda">http://linkedin.com/in/miconda</a> -- <a class="moz-txt-link-freetext" href="http://twitter.com/miconda">http://twitter.com/miconda</a></pre>
</body>
</html>