Our Liblinphone library has been modified to support multipart message bodies in INVITEs (as described in RFC 5621), in the purpose of:
allowing an application to specify a custom body to be inserted in INVITE (through a new api call linphone_call_params_add_custom_body), in addition to the normal SDP (hence using multipart body encoding).
allowing liblinphone to receive such INVITE with multipart body, extract the SDP from it and process it normally (currently liblinphone rejects any INVITE that is carrying a body that is not application/sdp)
As an example, these modifications allow developers to implement Geolocation conveyance in their Liblinphone-based apps, following RFC 6442.
These changes have been implemented and are available in Liblinphone's master branch.