Group PJSIP_MULTIPART

group PJSIP_MULTIPART

Support for multipart message bodies.

Functions

pjsip_msg_body *pjsip_multipart_create(pj_pool_t *pool, const pjsip_media_type *ctype, const pj_str_t *boundary)

Create an empty multipart body.

Parameters
  • pool – Memory pool to allocate memory from.

  • ctype – Optional MIME media type of the multipart bodies. If not specified, “multipart/mixed” will be used.

  • boundary – Optional string to be set as part boundary. The boundary string excludes the leading hyphens. If this parameter is NULL or empty, a random boundary will be generated.

Returns

Multipart body instance with no part.

pjsip_multipart_part *pjsip_multipart_create_part(pj_pool_t *pool)

Create an empty multipart part.

Parameters

pool – The memory pool.

Returns

The multipart part.

pjsip_multipart_part *pjsip_multipart_clone_part(pj_pool_t *pool, const pjsip_multipart_part *part)

Perform a deep clone to a multipart part.

Parameters
  • pool – The memory pool.

  • part – The part to be duplicated.

Returns

Copy of the multipart part.

pj_status_t pjsip_multipart_add_part(pj_pool_t *pool, pjsip_msg_body *mp, pjsip_multipart_part *part)

Add a part into multipart bodies.

Parameters
  • pool – The memory pool.

  • mp – The multipart bodies.

  • part – The part to be added into the bodies.

Returns

PJ_SUCCESS on success.

pjsip_multipart_part *pjsip_multipart_get_first_part(const pjsip_msg_body *mp)

Get the first part of multipart bodies.

Parameters

mp – The multipart bodies.

Returns

The first part, or NULL if the multipart bodies currently doesn’t hold any elements.

pjsip_multipart_part *pjsip_multipart_get_next_part(const pjsip_msg_body *mp, pjsip_multipart_part *part)

Get the next part after the specified part.

Parameters
  • mp – The multipart bodies.

  • part – The part.

Returns

The next part, or NULL if there is no other part after the part.

pjsip_multipart_part *pjsip_multipart_find_part(const pjsip_msg_body *mp, const pjsip_media_type *content_type, const pjsip_multipart_part *start)

Find a body inside multipart bodies which has the specified content type.

Parameters
  • mp – The multipart body.

  • content_type – Content type to find.

  • start – If specified, the search will begin at start->next. Otherwise it will begin at the first part in the multipart bodies.

Returns

The first part with the specified content type if found, or NULL.

pjsip_msg_body *pjsip_multipart_parse(pj_pool_t *pool, char *buf, pj_size_t len, const pjsip_media_type *ctype, unsigned options)

Parse multipart message.

Parameters
  • pool – Memory pool.

  • buf – Input buffer.

  • len – The buffer length.

  • ctype – Content type of the multipart body.

  • options – Parsing options, must be zero for now.

Returns

Multipart message body.

pj_status_t pjsip_multipart_get_raw(pjsip_msg_body *mp, pj_str_t *boundary, pj_str_t *raw_data)

Get the boundary string and the raw message body of the specified multipart message body. Note that raw message body will only be available if the multipart message body is generated by pjsip_multipart_parse().

Parameters
  • mp – The multipart message body.

  • boundary – Optional parameter to receive the boundary string.

  • raw_data – Optional parameter to receive the raw message body.

Returns

PJ_SUCCESS on success.

struct pjsip_multipart_part
#include <sip_multipart.h>

This structure describes the individual body part inside a multipart message body. It mainly contains the message body itself and optional headers.