Apparently as a work-around to a problem with the NIST SIP stack, SipPort.createRequest makes repeated calls to setHeader when processing a header with multiple values. Each call replaces the header value rather than adding it. (SipPort.java, lines 203-221).
Note the following log entry for the file:
r1472 | venkita | 2009-06-25 16:14:56 -0400 (Thu, 25 Jun 2009) | 1 line
changes to createRequest method regarding the way in which headper map
is added. currently the stack does not throw exception when trying to
addLast a header that is existing and one that is a reqd header eg. to
header. As a work around setHeader is used
In the example test cases, SelfTests.testSimpleTwoWayCall attempts to push three routes, which has the effect of creating a multi-valued Route key in the header map. Only the first route pushed (which is the last entry in the route set) appears in the Route header. (Pending a fix here, the test case has been modified to push only a single route.)