SIP Protocol Programming 3-1
3
SIP Protocol Programming
This chapter describes programming SIP applications and contains the following sections:
■
Section 3.1, Using Compact and Long Header Formats for SIP Messages
■
Section 3.2, Using Content Indirection in SIP Servlets
■
Section 3.3, Generating SNMP Traps from Application Code
3.1 Using Compact and Long Header Formats for SIP Messages
This section describes how to use the OWLCS SipServletMessage interface and configuration parameters to control SIP message header formats
3.1.1 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. JSR 289 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 API provided in JSR 289 is the ability to set long or compact header formats for the entire SIP message using the setHeaderForm
method.
In addition to SipServletMessage, OWLCS 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.
3.1.2 Summary of Compact Headers
Table 3–1 defines the compact header abbreviations described in the SIP specification
http:www.ietf.orgrfcrfc3261.txt . Specifications that introduce
additional headers may also include compact header abbreviations.
Table 3–1 Compact Header Abbreviations
Header Name Long Format
Compact Format
Call-ID i
Contact m
3-2 Developers Guide
3.1.3 Assigning Header Formats with WlssSipServletMessage
A pair of gettersetter methods, setHeaderForm and getHeaderForm, are used to assign or retrieve the header formats used in the message. These methods assign or
return a HeaderForm object, which is a simple Enumeration that describes the header format:
■
COMPACT—Forces all headers in the message to use compact format. This behavior is similar to the container-wide configuration value of force compact, as
described in use-compact-form in the Configuration Reference Manual.
■
LONG—Forces all headers in the message to use long format. This behavior is similar to the container-wide configuration value of force long, as described in
use-compact-form in the Configuration Reference Manual.
■
DEFAULT—Defers the header format to the container-wide configuration value set in use-compact-form.
SipServletResponse.setHeaderForm can be used in combination with SipServletMessage.setHeader and the container-level configuration parameter,
use-compact-form.
3.1.4 Summary of API and Configuration Behavior
Header formats can be specified at the header, message, and SIP Servlet container levels.
Table 3–1 shows the header format that results when adding a new header with
SipServletMessage.setHeader, given different container configurations and message-level settings with SipServletMessage.setHeaderForm.
Content-Encoding e
Content-Length l
Content-Type c
From f
Subject s
Supported k
To t
Via v
Table 3–2 API Behavior when Adding Headers
SIP Servlet Container Header
Configuration use-compact-fo
rm Setting .SIPServletMessage
setHeaderForm 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
Table 3–1 Cont. Compact Header Abbreviations
Header Name Long Format
Compact Format
SIP Protocol Programming 3-3
Table 3–1 shows the system header format that results when setting the header format
with WlssSipServletResponse.setUseHeaderForm given different container configuration values.
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 3–3 API Behavior for System Headers
SIP Servlet Container Header
Configuration use-compact-fo
rm Setting SipServletMessage.
setHeaderForm 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
Table 3–2 Cont. API Behavior when Adding Headers