}
}
From from = new From();
from.setAddress(this.localParty);
To to = new To();
to.setAddress(this.remoteParty);
// Tags set below
// SIPRequest sipRequest = sipResponse.createRequest(sipUri, via, cseq, from, to);
SIPRequest sipRequest = new SIPRequest();
sipRequest.setMethod(method);
sipRequest.setRequestURI( sipUri );
sipRequest.setHeader(via); // branch gets set when sending
try {
sipRequest.setHeader( new MaxForwards(70) );
} catch (InvalidArgumentException e) {
}
sipRequest.setHeader(cseq);
sipRequest.setHeader(from);
sipRequest.setHeader(to);
sipRequest.setHeader( this.callIdHeader ); // clone?
/*
* The default contact header is obtained from the provider. The application can override
* this.
*
* JvB: Should only do this for target refresh requests, ie not for BYE, PRACK, etc
*/
if (SIPRequest.isTargetRefresh(method)) {
ContactHeader contactHeader = ((ListeningPointImpl) this.sipProvider
.getListeningPoint( via.getTransport() )).createContactHeader();
((SipURI) contactHeader.getAddress().getURI()).setSecure(this.isSecure());
sipRequest.setHeader(contactHeader);
}
if (method.equals(Request.SUBSCRIBE)) {
if (eventHeader != null)
sipRequest.addHeader(eventHeader);
}
if (MessageFactoryImpl.getDefaultUserAgentHeader() != null ) {
sipRequest.setHeader(MessageFactoryImpl.getDefaultUserAgentHeader());
}
/*
* RFC3261, section 12.2.1.1:
*
* The URI in the To field of the request MUST be set to the remote URI from the dialog
* state. The tag in the To header field of the request MUST be set to the remote tag of
* the dialog ID. The From URI of the request MUST be set to the local URI from the dialog
* state. The tag in the From header field of the request MUST be set to the local tag of
* the dialog ID. If the value of the remote or local tags is null, the tag parameter MUST
* be omitted from the To or From header fields, respectively.
*/
try {
if (this.getLocalTag() != null) {
from.setTag(this.getLocalTag());
} else {
from.removeTag();
}
if (this.getRemoteTag() != null) {
to.setTag(this.getRemoteTag());
} else {
to.removeTag();
}
} catch (ParseException ex) {
InternalErrorHandler.handleException(ex);
}