The SIP RA uses a lazy parser, which parses the headers in incoming SIP messages
This means that headers are not parsed until they are needed, either internally within the RA or by the application accessing a header.
Headers parsed as needed
Critical headers such as Call-ID, CSeq, and Via will always be parsed by the RA, as these are essential to correct operation of the protocol. However most other headers need not be parsed at all until accessed by an application. This is a performance benefit, and can also aid interoperability with user agents that may not strictly follow SIP syntax.
Lazy parsing failures
If an application calls
and the RA is unable to parse the header, a
will be thrown. This is an unchecked exception. In this case, an
application might want to get the unparsed header value so that it can
parse the header itself. This might be required when communicating with
a user agent that is known to have bugs in SIP syntax.
An application can retrieve the unparsed value of a header by casting the
Message object to a
This returns the string value of the header, which the application can
parse itself. If the header is a multi-value header, the
method should be used, which returns an array of strings.