I am referring to the documentation in Forum Nokia Library on this topic. And here is the procedure described in the documentation for sending an INVITE:
Creating a dialog with INVITE
To create a dialog with INVITE an application creates CSIPInviteDialogAssoc and CSIPMessageElements objects. The application must enter the relevant SIP headers in the CSIPMessageElements object before passing it to CSIPInviteDialogAssoc using the CSIPInviteDialogAssoc::SendInviteL() function.
The signature of CSIPInviteDialogAssoc::SendInviteL() is documented as follows:
IMPORT_C CSIPClientTransaction *SendInviteL(CSIPMessageElements *aElements=0);
Thus the only argument that can be passed to this method is of type CSIPMessageElements.
In the documentation for CSIPMessageElements class, the following restriction is mentioned:
Class provides functions for setting and getting optional elements in a SIP message. Optional elements include user SIP message headers, content and content type. Following headers are not considered to be user SIP message headers and cannot be set or retrieved using functions of this class: "Authentication-Info", "Call-Id", "CSeq", "From" "Max-Forwards", "Min-Expires", "Record-Route", "Security-Verify", "Service-Route", "To", "Via", "Security-Server" and "Proxy-Authorization".
So, how can the headers To and From, which are mandatory for any SIP request, and are part of the SIP INVITE dialog state, be set?