oSIP dialog Handling


Classes

struct  osip_dialog
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:
dialog The osip dialog
instance The application instance

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

Link osip dialog to application

Parameters:
dialog The osip dialog
instance The application instance


Typedef Documentation

osip_dialog_t

Structure for referencing a dialog.


Function Documentation

void osip_dialog_free ( osip_dialog_t dialog  ) 

Free all resource in a osip_dialog_t element.

Parameters:
dialog The element to free.

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:
dialog The element to allocate.
response The response containing the informations.

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.

Parameters:
dialog The element to allocate.
next_request The response containing the informations.
local_cseq The local cseq

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:
dialog The element to allocate.
invite The INVITE request containing some informations.
response The response containing other informations.

int osip_dialog_match_as_uac ( osip_dialog_t dialog,
osip_message_t response 
)

Match a response received with a dialog.

Parameters:
dialog The element to work on.
response The response received.

int osip_dialog_match_as_uas ( osip_dialog_t dialog,
osip_message_t request 
)

Match a request (response sent?) received with a dialog.

Parameters:
dialog The element to work on.
request The request received.

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:
dialog The element to work on.
type The type of dialog (CALLEE or CALLER).

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:
dialog The element to work on.
request The request received.

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:
dialog The element to work on.
response The response received.

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:
dialog The element to work on.
invite The invite received.

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:
dialog The element to work on.
response The response received.


Generated on Wed Feb 13 01:03:29 2008 for libosip by  doxygen 1.5.4