11 Using Compact and Long Header Formats for SIP Messages

This chapter describes how to use the Oracle Communications Converged Application Server SipServletMessage interface and configuration parameters to control Session Initiation Protocol (SIP) message header formats.

Overview of Header Format APIs and Configuration

Applications that operate on wireless networks may want to limit the size of SIP headers to reduce the size of messages and conserve bandwidth. Java Specification Request (JSR) 359 provides the SipServletMessage.setHeaderForm() method, which enables application developers to set a long or compact format for the value of a given header.

One feature of the SipServletMessage application program interface (API) provided in JSR 359 is the ability to set long or compact header formats for the entire SIP message using the setHeaderForm method.

In addition to SipServletMessage, Converged Application Server provides a container-wide configuration parameter that can control SIP header formats for all system-generated headers. This system-wide parameter can be used along with SipServletMessage.setHeaderForm and SipServletMessage.setHeader to further customize header formats.

Summary of Compact Headers

Table 11-1 defines the compact header abbreviations described in the SIP specification (http://www.ietf.org/rfc/rfc3261.txt). Specifications that introduce additional headers may also include compact header abbreviations.

Table 11-1 Compact Header Abbreviations

Header Name (Long Format) Compact Format

Call-ID

i

Contact

m

Content-Encoding

e

Content-Length

l

Content-Type

c

From

f

Subject

s

Supported

k

To

t

Via

v


Summary of API and Configuration Behavior

Header formats can be specified at the header, message, and SIP Servlet container levels. Table 11-2 shows the header format that results when adding a new header with SipServletMessage.setHeader, given different container configurations and message-level settings with WlssSipServletResponse.setUseHeaderForm.

Table 11-2 API Behavior when Adding Headers

SIP Servlet Container Header Configuration (use-compact-form Setting) WlssSipServletMessage.setUseHeaderForm Setting SipServletMessage.setHeader Value Resulting Header

COMPACT

DEFAULT

”Content-Type”

”Content-Type”

COMPACT

DEFAULT

”c”

”c”

COMPACT

COMPACT

”Content-Type”

”c”

COMPACT

COMPACT

”c”

”c”

COMPACT

LONG

”Content-Type”

”Content-Type”

COMPACT

LONG

”c”

”Content-Type”

LONG

DEFAULT

”Content-Type”

”Content-Type”

LONG

DEFAULT

”c”

”c”

LONG

COMPACT

”Content-Type”

”c”

LONG

COMPACT

”c”

”c”

LONG

LONG

”Content-Type”

”Content-Type”

LONG

LONG

”c”

”Content-Type”

FORCE_COMPACT

DEFAULT

”Content-Type”

”c”

FORCE_COMPACT

DEFAULT

”c”

”c”

FORCE_COMPACT

COMPACT

”Content-Type”

”c”

FORCE_COMPACT

COMPACT

”c”

”c”

FORCE_COMPACT

LONG

”Content-Type”

”Content-Type”

FORCE_COMPACT

LONG

”c”

”Content-Type”

FORCE_LONG

DEFAULT

”Content-Type”

”Content-Type”

FORCE_LONG

DEFAULT

”c”

”Content-Type”

FORCE_LONG

COMPACT

”Content-Type”

”c”

FORCE_LONG

COMPACT

”c”

”c”

FORCE_LONG

LONG

”Content-Type”

”Content-Type”

FORCE_LONG

LONG

”c”

”Content-Type”


Table 11-3 shows the system header format that results when setting the header format with WlssSipServletResponse.setUseHeaderForm given different container configuration values.

Table 11-3 API Behavior for System Headers

SIP Servlet Container Header Configuration (use-compact-form Setting) WlssSipServletMessage.setUseHeaderForm Setting Resulting Contact Header

COMPACT

DEFAULT

”m”

COMPACT

COMPACT

”m”

COMPACT

LONG

”Contact”

LONG

DEFAULT

”Contact”

LONG

COMPACT

”m”

LONG

LONG

”Contact”

FORCE_COMPACT

DEFAULT

”m”

FORCE_COMPACT

COMPACT

”m”

FORCE_COMPACT

LONG

”Contact”

FORCE_LONG

DEFAULT

”Contact”

FORCE_LONG

COMPACT

”m”

FORCE_LONG

LONG

”Contact”