Common SIP, RTP and SDP Implementation Errors
RTP-Related Bugs
- Support of any packetization time. Some implementations
restrict the max input audio packet size to 20 ms or 30 ms.
- If a test application just loops back the audio packet, then it
should be careful not to loop back the RTP headers also (especially the
SSRC). Loop back should be done at the media level.
SIP-Related Bugs
- One implementation responded to requests with Via headers that had
been reversed, causing the response to go right to the sender.
- One implementation ignored route headers when the request URI had an
maddr parameter.
- Use the Expires in "Contact:" if present instead of
"Expires:". Aso, when retrying register refresh, an UA
should handle error cases (i.e., timeout <=0 ).
- Case insensitivity of stale param in WWW-Auth. stale=FALSE is not
interpreted correctly.
- Proxy forwards request to other address if the domain in requestURI
does not belong to itself.
- Distinction between 404 and 480?
- Send CANCEL or BYE if 200/ACK was not received or sent properly (or
timed out).
- Send ACK every time you receive (even retransmission of) final
response of INVITE.
- Set Content-Length in TCP SIP request and response; if it is not set
the things do not work as expected.
- Some implementation did not send back the response to the port
number specified in Via, instead used 5060 always.
- Blank spaces, tabs, multi-lines for WWW-Authenticate
header.
- Retransmitted responses different from the original response - they
must be same.
- Add appropriate tag in Via if the IP address does not match the
claimed Via.
- Sending an OPTIONS method in the middle of a call causes the call to
fall over.
- Confusion between the two CSeq numbering spaces.
- Case sensitivity with header and token names.
SDP-Related
- For gateway implementation (which can support only one audio codec
at a time), the gateway sends list of codecs in INVITE but expects the
remote UA to reply with only one (selected) codec in m= line. Correct
way is to use re-INVITE.
- Ordering of t= line.
- Some implementation did not look into the payload type of RTP
packet. Assumed to be 0 (PCMU/8000).
Last updated
by Henning Schulzrinne