o Juha Heinanen on 10/01/2013 02:23 PM:
> when doing more testing, i noticed that when sems sbc is sending session
> timer update request, it does not include refresher in Session-Expires
the reasoning behind this is that end-to-end refreshes (through the
SBC) are preferred over refreshes from within the middle, where e.g.
re-Invites from the other side could be blocked while the Invite
transaction is in progress, or a changed SDP may lead to another
re-invite on the other side.
> in this particular test, sems used refresher=uas in its 200 ok response
> to the initial invite, i.e., sems had decided to be the refresher. so
it did this because the other side didn't put refresher at all
> when sems sends update, it is recommended that also there sems writes
> ;refresher=uas.
if you are the refresher, and you are doing the refresh (as uac) a you
can't require the other side to be the refresher (put refresher=uas),
therefore sems doesn't put refresher, and hopes the other side takes
over the refresher role.
>
> any pointers on how to fix this? i assume that somewhere sbc keeps
> track which role it has and it should be pretty easy to add the param
> based on than when it sends the update.
i just found a patch in that directory, which you could try, but I
won't include this in mainline because of the reasons stated above.
> this came up, because it looks like a commercial sip phone gets confused
> if refresher param is missing.
then the phone is broken.
Note that prior to e487aa7e5 there was a bug which resulted in sems
not understanding supported and therefore act incorrectly in some cases.
Stefan
diff --git a/core/plug-in/session_timer/SessionTimer.cpp b/core/plug-in/session_timer/SessionTimer.cpp
index 9869ebe..3563316 100644
--- a/core/plug-in/session_timer/SessionTimer.cpp
+++ b/core/plug-in/session_timer/SessionTimer.cpp
@@ -181,7 +181,8 @@ bool SessionTimer::onSendRequest(const string& method,
removeHeader(hdrs, SIP_HDR_SESSION_EXPIRES);
removeHeader(hdrs, SIP_HDR_MIN_SE);
- hdrs += SIP_HDR_COLSP(SIP_HDR_SESSION_EXPIRES) + int2str(session_interval) + CRLF
+ hdrs += SIP_HDR_COLSP(SIP_HDR_SESSION_EXPIRES) + int2str(session_interval) +
+ ";refresher=uac" CRLF
+ SIP_HDR_COLSP(SIP_HDR_MIN_SE) + int2str(min_se) + CRLF;
return false;
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev