By using the B2BuaHelper.createRequest(..., headerMap) the user can create a new "b2bua:ed" request where system headers such as Route-headers can be overridden. However, the documentation is not really clear what the behavior is when you supply an empty value-list for a particular header. Consider the following example:
Incoming INVITE which has two route headers like so:
INVITE sip:email@example.com SIP/2.0
Route: <route 1>
Route: <route 2>
If I wanted to use the b2buahelper to create the second leg but do not want to the Route headers to be present in the new request one could assume that the following would work:
Map<String, List<String>> headerMap = ...
headerMap.put("Route", new ArrayList<String>());
SipServletRequest req = helper.createRequest(origRequest, linked, headerMap);
I would now assume that the previous two routes have been wiped out. It is not clear in the specification that this is what is supposed to happen and at least one container implementation had not implemented it this way.