[asterisk-users] SIP Simple support on Asterisk 11
Matthew J. Roth
mroth at imminc.com
Wed Jun 19 11:11:17 CDT 2013
Eloi Bail wrote:
>
> I am trying to enable SIP SIMPLE communication in my test environment.
>
> I have the following env :
>
> - one server (192.168.50.126) with Asterisk 11
> - 2 clients using pidgin : demo-bob and demo-alice on my 192.168.50.143
>
> I successfully had a phone call between clients.
>
> I used the following link to enable SIMPLE messaging between my clients :
> http://highsecurity.blogspot.ca/2012/03/asterisk-10-110-sms-messaging-or-sip.html
>
> Both users managed to register.
>
> Adding verbose on the server, I have the following traces when I send the
> message "MESSAGE FROM ALICE TO BOB" from "demo-alice" to "demo-bob"
>
> http://paste.fedoraproject.org/19489/37158861/
>
> As you can see I succeed to have the message sent from alice to Asterisk.
>
> When the server is trying to transmitting, I see a 401 error message.
> According to this post ( http://forums.digium.com/viewtopic.php?f=1&t=72814 )
> the first 401 should be normal as authentication is requested.
>
> Afterwards the server emit 202 message.
>
> But "demo-bob" never receives a message.
> I ran wireshark on server and client. It confirms that no message is sent from
> Asterisk to "demo-bob".
>
> Could you please give me advice ?
>
> Here are my extensions.conf and sip.conf according to the link I mentioned.
> http://paste.fedoraproject.org/19626/16493741/
>
> http://paste.fedoraproject.org/19627/49423137/
Eloi,
The trace shows that the initial MESSAGE from Alice does not include an
Authorization header so Asterisk responds with a 401 Unauthorized. Alice then
replies with a MESSAGE with an Authorization header, but reuses the same CSeq
header (CSeq: 6 MESSAGE) which causes Asterisk to ignore it as a retransmit:
> [Jun 18 16:49:35] DEBUG[16266] chan_sip.c: Ignoring SIP message because of
> retransmit (MESSAGE Seqno 6, ours 6)
I believe this is a bug in Pidgin because RFC 3261 [1] states:
CSeq or Command Sequence contains an integer and a method name. The
CSeq number is incremented for each new request within a dialog and
is a traditional sequence number.
...
Requests within a dialog MUST contain strictly monotonically
increasing and contiguous CSeq sequence numbers (increasing-by-one)
in each direction (excepting ACK and CANCEL of course, whose numbers
equal the requests being acknowledged or cancelled).
However, there is also a similar issue [2] that can be worked around by setting
"pedantic=no" in sip.conf. If that doesn't work, you can give the following
(untested) patch to chan_sip.c a try:
================================================================================
--- chan_sip.c.orig 2013-06-19 11:44:38.000000000 -0400
+++ chan_sip.c 2013-06-19 11:47:22.000000000 -0400
@@ -28078,6 +28078,7 @@
} else if (p->icseq &&
p->icseq == seqno &&
req->method != SIP_ACK &&
+ p->method != SIP_MESSAGE &&
(p->method != SIP_CANCEL || p->alreadygone)) {
/* ignore means "don't do anything with it" but still have to
respond appropriately. We do this if we receive a repeat of
================================================================================
Good luck and please let the list know how this works out.
[1] http://www.ietf.org/rfc/rfc3261.txt
[2] https://issues.asterisk.org/jira/browse/ASTERISK-19139
Regards,
Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer
More information about the asterisk-users
mailing list