[pjsip] Test result

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 
Hi Benny!

Thank you very much for a fast and detailed reply. From your comments, I
can assume that in most error cases that I send, missunderstanding of
RFC accoured or some implementaion is missing in my application . In
near future I will run test against latest SVN trunk version, and will
notify you about results. I also put some comments below.

Kind regards,

Vladimir

>-----Original Message-----
From: pjsip-bounces@xxxxxxxxxxxxxxx
[mailto:pjsip-bounces at lists.pjsip.org] On Behalf Of Benny Prijono
Sent: Tuesday, October 09, 2007 5:33 PM
To: pjsip embedded/DSP SIP discussion
Subject: Re: [pjsip] Test result

>Hi Vladimir,
>
>first of all many thanks for spending your time with doing the test!
>This kind of input is really valuable for us all, and especially
>anything that's related to conformance is guaranteed to get my
>attention.
>
>Please see more comments inline.
>
>
>Hozjan Vladimir wrote:
>> Hi Benny!
>> 
>> I made conformance testing with konformance testing tool, and found 
>> behaviour that is not as it should be accordingly to RFCs. Intention
of 
>> this letter is to inform you about the results. I tested released 
>> version 0.7.0 of pjsua, so some errors could be corrected by now.
>
>Although I can't remember any fixes related to these tests, it would
>be great to have the test against the latest SVN trunk version, to
>make it more relevant.
>
>
>> And the results:
>> *1. No reply to BYE with escaped sip uri. Session was made without 
>> escaped characters.*
>> Example:
>> INVITE sip:701069 at 172.18.80.69;transport=udp SIP/2.0
>> Via: SIP/2.0/UDP 
>> 172.18.81.26:5060;rport;branch=z9hG4bKPj00290000518e5f9d45ea
>> Max-Forwards: 70
>> From: "Sip" <sip:701026@172.18.80.69>;tag=00290000518c5f9d45ea
>> To: sip:*701069*@172.18.80.69
>> Contact: "Sip" <sip:701026 at 172.18.81.26:5060;transport=UDP>
>> Call-ID: 00290000518d5f9d45ea
>> CSeq: 1422475148 INVITE
>> Allow: INVITE, ACK, BYE, CANCEL, SUBSCRIBE, NOTIFY, REFER, OPTIONS,
INFO
>> Supported: norefersub, 100rel
>> Content-Type: application/sdp
>> Content-Length:   313
>> 
>> v=0
>> o=- 3397801224 3397801224 IN IP4 172.18.81.26
>> s=pjmedia
>> c=IN IP4 172.18.81.26
>> t=0 0
>> m=audio 16384 RTP/AVP 8 0 4 96 97 98 18
>> a=rtpmap:8 PCMA/8000
>> a=rtpmap:0 PCMU/8000
>> a=rtpmap:4 G723/8000
>> a=rtpmap:96 G726-32/8000
>> a=rtpmap:97 G726-40/8000
>> a=rtpmap:98 G726-24/8000
>> a=rtpmap:18 G729/8000
>> a=sendrecv
>> 
>> ...
>> 
>> BYE sip:701026 at 172.18.81.26:5060 SIP/2.0
>> Call-ID: 00290000518d5f9d45ea
>> CSeq: 1422475148 INVITE
>> From:  <sip*:%37%30%31%30%36%39*@172.18.80.69>;tag=4483
>> To: Sip <sip:701026 at 172.18.80.69>;tag=00290000518c5f9d45ea
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK6999
>> Max-Forwards: 70
>> Content-Length: 0
>
>
>What kind of reply does it expect? Or didn't pjsip reply at all?
>
>For requests within dialog, pjsip ignores the URI parts of the From
>and To header, and it just concerns about the tags. As long as the
>tags match the dialog, the request will be accepted and responded,
>no matter what the user part of the URI is.

Excpected is message 200OK from PJSUA. In that case nothing was send. I
will check my appliaction, if there is a problem.

>
>
>> *2. No reply to unknown method in message. 405 "Method Not Allowed" 
>> expected.
>> *Example:
>> *UNKNOWN* sip:701026 at 172.18.80.37 SIP/2.0
>> Call-ID: 4613 at 172.18.81.26
>> CSeq: 48 UNKNOWN
>> From: <sip:701069@172.18.80.37>;tag=8924
>> To:  <sip:701026 at 172.18.80.37>
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK6967
>> Contact: sip:701069 at 172.18.80.69:5060;transport=UDP
>> Max-Forwards: 70
>> Content-Length: 0
>
>
>This is true, and this is not pjsip's fault but rather application's
>(pjsua) fault. As a stack, pjsip does not handle any requests
>outside dialog; it simply just forwards these requests to
>application and let application do something about it (create
>dialog, create UAS transaction, respond statelessly, etc.). So it is
>application's responsibility to reject any requests that it can't
>handle.
>

Once again, my application.

>
>> *3. INVITE with missing Call-ID doesn't produce 400 Bad Request.*
>> Example:
>> INVITE sip:701026 at 172.18.80.37 SIP/2.0
>> Contact: <sip:701069 at 172.18.80.69:5060;transport=UDP>
>> CSeq: 69 INVITE
>> From: <sip:701069@172.18.80.37>;tag=8860
>> Max-Forwards: 70
>> To:  <sip:701026 at 172.18.80.37>
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK6628
>
>True. But from what I understand, the standard only tells us to do
>our best when receiving requests with missing mandatory headers.
>Since some bad requests cannot be responded at all (for example when
>the Via header is missing), the standard allows SIP implementations
>to just drop the bad request. So rather than trying to do too hard
>with handling these broken request, I think it's quite
>okay to just drop them. The other endpoint is just too
>broken to do something about. :)
>

True. Let say that this is a feature of PJSIP and not a bug :).

>
>> *4. Incorrect value of Content-Length in INVITE doesn't produce 400
"Bad 
>> request" reply. When the incorrect Content-Length in 200K ACK should
not 
>> be send.
>> *Example:
>> INVITE sip:701026 at 172.18.80.37 SIP/2.0
>> Call-ID: 6139 at 172.18.81.26
>> Contact: <sip:701069 at 172.18.80.69:5060;transport=UDP>
>> Content-Disposition: session
>> Content-Length: *160*
>> Content-Type: application/sdp
>> CSeq: 71 INVITE
>> From: <sip:701069@172.18.80.37>;tag=8199
>> Max-Forwards: 70
>> To:  <sip:701026 at 172.18.80.37>
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK5113
>> 
>> v=0
>> o=voicesession 12345 12345 IN IP4 193.174.154.20
>> s=Voice Session
>> c=IN IP4 195.174.154.20
>> t=0 0
>> m=audio 8500 RTP/AVP 0
>> a=rtpmap:0 PCMU/8000
>
>For requests coming from datagram based transports (such as UDP), we
>don't need to see the Content-Length header. pjsip just ignores it
>and parse the datagram directly.
>

It is logical to handle Content-Length as you described. But if values
from UDP and from Content-Length differ, PJSIP could assume that
something went wrong in communication between peers. I prefer your
solution, because this solution increases robustnes of stack.

>
>> *5. When re-INVITE with lower CSeq from initial INVITE is send before
OK 
>> is received, 500 internal server error is expected.
>> *Example:
>> INVITE sip:701026 at 172.18.80.69 SIP/2.0
>> Call-ID: 4773 at 172.18.81.26
>> Contact: <sip:701069 at 172.18.80.69:5060;transport=UDP>
>> Content-Disposition: session
>> Content-Length: 150
>> Content-Type: application/sdp
>> CSeq: *82* INVITE
>> From: <sip:701069@172.18.80.37>;tag=6161
>> Max-Forwards: 70
>> To:  <sip:701026 at 172.18.80.69>
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK7446
>> 
>> v=0
>> o=voicesession 12345 12345 IN IP4 193.174.154.20
>> s=Voice Session
>> c=IN IP4 195.174.154.20
>> t=0 0
>> m=audio 8500 RTP/AVP 0
>> a=rtpmap:0 PCMU/8000
>> 
>> SIP/2.0 180 Ringing
>> Via: SIP/2.0/UDP
172.18.80.69:5060;received=172.18.80.69;branch=z9hG4bK7446
>> Call-ID: 4773 at 172.18.81.26
>> From:<sip:701069 at 172.18.80.37>;tag=6161
>> To: <sip:701026 at 172.18.80.69>;tag=0029000000c753c5d033
>> CSeq: 82 INVITE
>> Contact: <sip:701026 at 172.18.81.26:5060;transport=UDP>
>> Content-Length:  0
>> 
>> INVITE sip:701026 at 172.18.80.69 SIP/2.0
>> Call-ID: 4773 at 172.18.81.26
>> Contact: <sip:701069 at 172.18.80.69:5060;transport=UDP>
>> Content-Disposition: session
>> Content-Length: 140
>> Content-Type: application/sdp
>> CSeq: *81* INVITE
>> From: <sip:701069@172.18.80.37>;tag=6161
>> Max-Forwards: 70
>> To:  <sip:701026 at 172.18.80.69>
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK6715
>> 
>> v=0
>> o=voicesession 12345 12345 IN IP4 127.0.0.1
>> s=Voice Session
>> c=IN IP4 127.0.0.1
>> t=0 0
>> m=audio 8500 RTP/AVP 0
>> a=rtpmap:0 PCMU/8000
>
>I'm not sure about this. RFC 3261 Section 12.2.2 indeed says that
>incoming request *within dialog* that has lower CSeq must be
>rejected with 500 (Internal Server Error). But this only applies to
>requests within dialog.
>
>The second INVITE above does not have To tag, so it's not a request
>within dialog. It's not a merged request either (Section 12.2.2.2),
>since the CSeq is different. So I think pjsip is allowed to accept
>this request.
>

Test should be changed, thanks for a tip.

>
>> *6. INVITE message with To-tag is not rejected with 481.
>> *Example:
>> INVITE sip:701026 at 172.18.80.69 SIP/2.0
>> Call-ID: 2384 at 172.18.81.26
>> Contact: <sip:701069 at 172.18.80.69:5060;transport=UDP>
>> Content-Disposition: session
>> Content-Length: 150
>> Content-Type: application/sdp
>> CSeq: 66 INVITE
>> From: <sip:701069@172.18.80.37>;tag=9580
>> Max-Forwards: 70
>> To:  <sip:701026 at 172.18.80.69>;*tag=9079
>> *Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK4221
>> 
>> v=0
>> o=voicesession 12345 12345 IN IP4 193.174.154.20
>> s=Voice Session
>> c=IN IP4 195.174.154.20
>> t=0 0
>> m=audio 8500 RTP/AVP 0
>> a=rtpmap:0 PCMU/8000
>
>pjsip *does* respond requests with unknown To tag with 481, so I'm
>not sure why it didn't do that.

I will check the application.

>
>
>> *7. In PJSIP message header are case sensitive. PJSIP doesn't support

>> header "FrOM" of "ViA".*
>> Example
>> BYE sip:701026 at 172.18.81.26:5060 SIP/2.0
>> *CAll-ID*: 0029000051a35f9d45ea
>> *CSEq*: 620309820 INVITE
>> *FROM*:  <sip:701069 at 172.18.80.69>;tag=6815
>> To: Sip <sip:701026 at 172.18.80.69>;tag=0029000051a25f9d45ea
>> *ViA*: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK1868
>> Max-Forwards: 70
>> Content-Length: 0
>
>This is not true, pjsip does handle mixed case (or "wrong" case).
>I'm not sure why your test showed different result.

I'll check this in my application once again.

>
>
>> *7. No reply to message with unknown parameter.*
>> Example:
>> BYE sip:701026 at 172.18.81.26:5060;*paramUnknown=nonunderstood* SIP/2.0
>> Call-ID: 0029000051985f9d45ea
>> Content-Length: 0
>> CSeq: 991774943 INVITE
>> From:  <sip:701069@172.18.80.69>;tag=6265
>> Max-Forwards: 70
>> To: SipProne26TTCN80
<sip:701026 at 172.18.80.69>;tag=0029000051975f9d45ea
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK3459
>
>I can't find anywhere in RFC 3261 that says UAS should reject
>request URI with unknown parameters, so in this case pjsip should
>just accept it. I'm not sure what did it mean by "No reply".
>
>
>> *8.No reply to BYE method if From sip uri contains additional
parameters.*
>> Example:
>> BYE sip:701026 at 172.18.81.26:5060 SIP/2.0
>> Call-ID: 0029000053385f9d45ea
>> Content-Length: 0
>> CSeq: 607358849 INVITE
>> From:  <sip:701069@172.18.80.69;*method=CANCEL*>;tag=502
>> Max-Forwards: 70
>> To:
Sip<sip:701026 at 172.18.80.69;method=CANCEL>;tag=0029000053375f9d45ea
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK9108
>> 
>> or
>> 
>> BYE sip:701026 at 172.18.81.26:5060 SIP/2.0
>> Call-ID: 0029000053315f9d45ea
>> Content-Length: 0
>> CSeq: 1149224875 INVITE
>> From:  <sip:701069@172.18.80.69?h1=$>;tag=6979
>> Max-Forwards: 70
>> To: Sip <sip:701026 at 172.18.80.69?h2=$>;tag=0029000053305f9d45ea
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK816
>> 
>> BYE sip:701026 at 172.18.81.26:5060 SIP/2.0
>> Call-ID: 0029000053245f9d45ea
>> Content-Length: 0
>> CSeq: 1808471132 INVITE
>> From:  <sip:701069@172.18.80.69;*maddr=192.0.0.1*>;tag=6482
>> Max-Forwards: 70
>> To: Sip
<sip:701026 at 172.18.80.69;*maddr=192.0.0.2*>;tag=0029000053235f9d45ea
>> Via: SIP/2.0/UDP 172.18.80.69:5060;branch=z9hG4bK8848
>
>Again I'm not sure what kind of reply does it expect.
>
>As far as pjsip is concerned, requests will be (or should be)
>accepted as long as the tags match the dialog, and I can't see why
>pjsip should reject this request just because it has unknown
>parameters. So in this case, pjsip should process the request and
>respond it, as long as the tags and CSeq are okay.
>

These BYE message did not produce any reply. 200 OK is expected and
PJSIP should procede normaly. According to your statment I have feeling
that problem is not in PJSIP, but in my applicaton, so I'll search for a
problem there.


>What do you think?
>
>regards,
>  -benny
>
>> If you would like to have any additional information about testing, I

>> can send it.
>> 
>> regards,
>> 
>> Vladimir Hozjan
>
>
>
>
>
>
>
>
>_______________________________________________
>Visit our blog: http://blog.pjsip.org
>
>pjsip mailing list
>pjsip at lists.pjsip.org
>http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux