libosip 3.6.0
Classes | Defines | Typedefs | Functions

oSIP dialog Handling

Classes

struct  osip_dialog

Defines

#define osip_dialog_set_instance(dialog, instance)   (dialog)->your_instance = (void*)(instance)
#define osip_dialog_get_instance(dialog)   (dialog)->your_instance

Typedefs

typedef struct osip_dialog osip_dialog_t

Functions

int osip_dialog_init_as_uac (osip_dialog_t **dialog, osip_message_t *response)
int osip_dialog_init_as_uac_with_remote_request (osip_dialog_t **dialog, osip_message_t *next_request, int local_cseq)
int osip_dialog_init_as_uas (osip_dialog_t **dialog, osip_message_t *invite, osip_message_t *response)
void osip_dialog_free (osip_dialog_t *dialog)
void osip_dialog_set_state (osip_dialog_t *dialog, state_t type)
int osip_dialog_update_route_set_as_uas (osip_dialog_t *dialog, osip_message_t *invite)
int osip_dialog_update_osip_cseq_as_uas (osip_dialog_t *dialog, osip_message_t *request)
int osip_dialog_match_as_uac (osip_dialog_t *dialog, osip_message_t *response)
int osip_dialog_update_tag_as_uac (osip_dialog_t *dialog, osip_message_t *response)
int osip_dialog_update_route_set_as_uac (osip_dialog_t *dialog, osip_message_t *response)
int osip_dialog_match_as_uas (osip_dialog_t *dialog, osip_message_t *request)
int osip_dialog_is_originator (osip_dialog_t *dialog)
int osip_dialog_is_callee (osip_dialog_t *dialog)

Define Documentation

#define osip_dialog_get_instance (   dialog)    (dialog)->your_instance

Retrieve application instance from dialog

Parameters:
dialogThe osip dialog
instanceThe application instance
#define osip_dialog_set_instance (   dialog,
  instance 
)    (dialog)->your_instance = (void*)(instance)

Link osip dialog to application

Parameters:
dialogThe osip dialog
instanceThe application instance

Typedef Documentation

Structure for referencing a dialog.


Function Documentation

void osip_dialog_free ( osip_dialog_t dialog)
int osip_dialog_init_as_uac ( osip_dialog_t **  dialog,
osip_message_t response 
)

Allocate a osip_dialog_t element as a UAC. NOTE1: The dialog should be created when the first response is received. (except for a 100 Trying) NOTE2: Remote UA should be compliant! If not (not tag in the to header?) the old mechanism is used to match the request but if 2 uncompliant UA both answer 200 OK for the same transaction, they won't be detected. This is a major BUG in the old rfc.

Parameters:
dialogThe element to allocate.
responseThe response containing the informations.

References osip_message::from, osip_message::to, and osip_dialog::type.

int osip_dialog_init_as_uac_with_remote_request ( osip_dialog_t **  dialog,
osip_message_t next_request,
int  local_cseq 
)

Allocate a osip_dialog_t element as a UAC.

  • This could be used to initiate dialog with a NOTIFY coming before the answer for a subscribe has reached us.
Parameters:
dialogThe element to allocate.
next_requestThe response containing the informations.
local_cseqThe local cseq

References osip_message::cseq, osip_message::from, osip_cseq::number, osip_message::to, and osip_dialog::type.

int osip_dialog_init_as_uas ( osip_dialog_t **  dialog,
osip_message_t invite,
osip_message_t response 
)

Allocate a osip_dialog_t element as a UAS. NOTE1: The dialog should be created when the first response is sent. (except for a 100 Trying)

Parameters:
dialogThe element to allocate.
inviteThe INVITE request containing some informations.
responseThe response containing other informations.

References osip_message::cseq, osip_message::from, osip_cseq::number, osip_message::to, and osip_dialog::type.

int osip_dialog_match_as_uac ( osip_dialog_t dialog,
osip_message_t response 
)
int osip_dialog_match_as_uas ( osip_dialog_t dialog,
osip_message_t request 
)
void osip_dialog_set_state ( osip_dialog_t dialog,
state_t  type 
)

Set the state of the dialog. This is useful to keep information on who is the initiator of the call.

Parameters:
dialogThe element to work on.
typeThe type of dialog (CALLEE or CALLER).

References osip_dialog::state.

int osip_dialog_update_osip_cseq_as_uas ( osip_dialog_t dialog,
osip_message_t request 
)

Update the CSeq (remote cseq) during a UAS transaction of a dialog. NOTE: All INCOMING transactions MUST update the remote CSeq.

Parameters:
dialogThe element to work on.
requestThe request received.

References osip_message::cseq, osip_cseq::number, and osip_dialog::remote_cseq.

int osip_dialog_update_route_set_as_uac ( osip_dialog_t dialog,
osip_message_t response 
)

Update the Route-Set as UAC of a dialog. NOTE: bis-09 says that only INVITE transactions can update the route-set. NOTE: bis-09 says that updating the route-set means: update the contact field only (AND NOT THE ROUTE-SET). This method follow this behaviour. NOTE: This method should be called for each request (except 100 Trying) received for a dialog.

Parameters:
dialogThe element to work on.
responseThe response received.

References osip_message::contacts, MSG_IS_STATUS_2XX, osip_contact_clone(), osip_contact_free(), osip_list_add(), osip_list_eol(), osip_list_get(), osip_list_init(), osip_list_size(), osip_list_special_free(), osip_record_route_clone, osip_record_route_free(), osip_message::record_routes, osip_dialog::remote_contact_uri, osip_dialog::route_set, and osip_dialog::state.

int osip_dialog_update_route_set_as_uas ( osip_dialog_t dialog,
osip_message_t invite 
)

Update the Route-Set as UAS of a dialog. NOTE: bis-09 says that only INVITE transactions can update the route-set. NOTE: bis-09 says that updating the route-set means: update the contact field only (AND NOT THE ROUTE-SET). This method follow this behaviour. NOTE: This method should be called for each request received for a dialog.

Parameters:
dialogThe element to work on.
inviteThe invite received.

References osip_message::contacts, osip_contact_clone(), osip_contact_free(), osip_list_eol(), osip_list_get(), and osip_dialog::remote_contact_uri.

int osip_dialog_update_tag_as_uac ( osip_dialog_t dialog,
osip_message_t response 
)

Update the tag as UAC of a dialog?. (this could be needed if the 180 does not contains any tag, but the 200 contains one.

Parameters:
dialogThe element to work on.
responseThe response received.

References osip_uri_param::gvalue, osip_to_get_tag, osip_dialog::remote_tag, and osip_message::to.