Skip to content

Opensips tm fails to cancel fr_timer if "100 Trying" is received too soon #25

@MayamaTakeshi

Description

@MayamaTakeshi

I was testing upgrading my OS from CentOS 5.3 to CentOS 6.4. After that, the same opensips.cfg (that uses SIP UDP only) started to fail to cancel the fr_timer when "100 Trying" is received.
The scenario is:
uac --> INVITE --> opensips --> INVITE --> FreeSWITCH
where opensips and FreeSWITCH reside on the same CentOS 6.4 machine.
FS just replies with "100 Trying" and sleep. Then after fr_timer passes, opensips terminates the call with "408 Request Timeout", but it shoudn't.
I know "100 Trying" was processed by opensips because it doesn't retransmit the INVITE to FS.

It seems to me that in CentOS 6.4, the OS handles the packets to opensips more quickly than with CentOS 5.3 and opensips is not ready to handle it.

To confirm this, I added a small delay in the packets doing this:
tc qdisc add dev lo root netem delay 1ms
and after that, opensips correctly canceled the fr_timer after reception of "100 Trying".

I have originally found this issue on branch 1.6, but I tested the latest revision of all branches 1.7, 1.8, 1.9 up to head and all of them shows this issue.
The one that I used for the investigation is this:

svn info

Path: .
URL: http://svn.code.sf.net/p/opensips/svn/trunk
Repository Root: http://svn.code.sf.net/p/opensips/svn
Repository UUID: 689a6050-402a-0410-94f2-e92a70836424
Revision: 10114
Node Kind: directory
Schedule: normal
Last Changed Author: opensipsrelease
Last Changed Rev: 10112
Last Changed Date: 2013-07-12 01:40:29 +0900 (Fri, 12 Jul 2013)

Regards,
Takeshi

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions