- Apply patch send by Laurent Etiemble

- Make removeSocket thread-safe
- General bug-fix
This commit is contained in:
bossiel 2010-05-28 10:20:25 +00:00
parent 99ed2542eb
commit 37d50305d6
40 changed files with 249 additions and 247 deletions

View File

@ -714,7 +714,7 @@ tsip_action_handle_t* action_get_config(const opts_L_t* opts)
} }
/* create new action */ /* create new action */
if(!action_config && !(action_config = tsip_action_create(atype_config, if(!action_config && !(action_config = tsip_action_create(tsip_atype_config,
TSIP_ACTION_SET_NULL()))) break; TSIP_ACTION_SET_NULL()))) break;
switch(opt->type){ switch(opt->type){

View File

@ -95,10 +95,9 @@ int options_hack_aor(const tsip_response_t* resp)
if(resp && resp->firstVia){ if(resp && resp->firstVia){
if(resp->firstVia->rport <=0){ if(resp->firstVia->rport <=0){
char* received_port_ext; char* received_port_ext;
const tsk_param_t* param;
/* Ericsson SDS /* Ericsson SDS
==> Via: SIP/2.0/TCP 192.168.0.12:49744;rport;branch=z9hG4bK1273100904048;received_port_ext=49744;received=192.168.0.12 */ ==> Via: SIP/2.0/TCP 192.168.0.12:49744;rport;branch=z9hG4bK1273100904048;received_port_ext=49744;received=192.168.0.12 */
if((received_port_ext = tsip_header_get_param_value(resp->firstVia, "received_port_ext"))){ if((received_port_ext = tsip_header_get_param_value((const tsip_header_t*)resp->firstVia, "received_port_ext"))){
rport = (int32_t)atoi(received_port_ext); rport = (int32_t)atoi(received_port_ext);
TSK_FREE(received_port_ext); TSK_FREE(received_port_ext);
} }

View File

@ -85,22 +85,22 @@ THTTP_BEGIN_DECLS
typedef enum thttp_stack_param_type_e typedef enum thttp_stack_param_type_e
{ {
pname_null = tsk_null, thttp_pname_null = tsk_null,
#define THTTP_STACK_SET_NULL() pname_null #define THTTP_STACK_SET_NULL() thttp_pname_null
/* Network */ /* Network */
pname_local_ip, thttp_pname_local_ip,
pname_local_port, thttp_pname_local_port,
#define THTTP_STACK_SET_LOCAL_IP(IP_STR) pname_local_ip, (const char*)IP_STR #define THTTP_STACK_SET_LOCAL_IP(IP_STR) thttp_pname_local_ip, (const char*)IP_STR
#define THTTP_STACK_SET_LOCAL_PORT(PORT_INT) pname_local_port, (int)PORT_INT #define THTTP_STACK_SET_LOCAL_PORT(PORT_INT) thttp_pname_local_port, (int)PORT_INT
/* TLS */ /* TLS */
pname_tls_certs, thttp_pname_tls_certs,
#define THTTP_STACK_SET_TLS_CERTS(CA_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR) pname_tls_certs, (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR #define THTTP_STACK_SET_TLS_CERTS(CA_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR) thttp_pname_tls_certs, (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR
/* User Data */ /* User Data */
pname_userdata, thttp_pname_userdata,
#define THTTP_STACK_SET_USERDATA(USERDATA_PTR) pname_userdata, (const void*)USERDATA_PTR #define THTTP_STACK_SET_USERDATA(USERDATA_PTR) thttp_pname_userdata, (const void*)USERDATA_PTR
} }
thttp_stack_param_type_t; thttp_stack_param_type_t;

View File

@ -60,26 +60,26 @@ thttp_action_option_t;
typedef enum thttp_action_type_e typedef enum thttp_action_type_e
{ {
/* Outgoing GET, PUT, HEAD, DELETE, .... */ /* Outgoing GET, PUT, HEAD, DELETE, .... */
atype_o_request, thttp_atype_o_request,
/* Incoming message */ /* Incoming message */
atype_i_message, thttp_atype_i_message,
/* common */ /* common */
atype_closed, thttp_thttp_atype_closed,
atype_error, thttp_atype_error,
atype_close, thttp_atype_close,
atype_cancel, thttp_atype_cancel,
} }
thttp_action_type_t; thttp_action_type_t;
typedef enum thttp_action_param_type_e typedef enum thttp_action_param_type_e
{ {
aptype_null = tsk_null, thttp_aptype_null = tsk_null,
aptype_option, thttp_aptype_option,
aptype_header, thttp_aptype_header,
aptype_payload, thttp_aptype_payload,
} }
thttp_action_param_type_t; thttp_action_param_type_t;
@ -133,10 +133,10 @@ thttp_action_PUT(session, "http://www.doubango.org"
* @def THTTP_ACTION_SET_NULL * @def THTTP_ACTION_SET_NULL
* Ends action parameters. Must always be the last one. * Ends action parameters. Must always be the last one.
*/ */
#define THTTP_ACTION_SET_OPTION(ID_ENUM, VALUE_STR) aptype_option, (thttp_action_option_t)ID_ENUM, (const char*)VALUE_STR #define THTTP_ACTION_SET_OPTION(ID_ENUM, VALUE_STR) thttp_aptype_option, (thttp_action_option_t)ID_ENUM, (const char*)VALUE_STR
#define THTTP_ACTION_SET_HEADER(NAME_STR, VALUE_STR) aptype_header, (const char*)NAME_STR, (const char*)VALUE_STR #define THTTP_ACTION_SET_HEADER(NAME_STR, VALUE_STR) thttp_aptype_header, (const char*)NAME_STR, (const char*)VALUE_STR
#define THTTP_ACTION_SET_PAYLOAD(PAY_PTR, PAY_SIZE) aptype_payload, (const void*)PAY_PTR, (tsk_size_t)PAY_SIZE #define THTTP_ACTION_SET_PAYLOAD(PAY_PTR, PAY_SIZE) thttp_aptype_payload, (const void*)PAY_PTR, (tsk_size_t)PAY_SIZE
#define THTTP_ACTION_SET_NULL() aptype_null #define THTTP_ACTION_SET_NULL() thttp_aptype_null
typedef struct thttp_action_s typedef struct thttp_action_s
{ {

View File

@ -221,7 +221,7 @@ TINYHTTP_API int thttp_message_add_headers(thttp_message_t *self, const thttp_he
TINYHTTP_API int thttp_message_add_content(thttp_message_t *self, const char* content_type, const void* content, tsk_size_t size); TINYHTTP_API int thttp_message_add_content(thttp_message_t *self, const char* content_type, const void* content, tsk_size_t size);
TINYHTTP_API int thttp_message_append_content(thttp_message_t *self, const void* content, tsk_size_t size); TINYHTTP_API int thttp_message_append_content(thttp_message_t *self, const void* content, tsk_size_t size);
#if !defined(_MSC_VER) || defined(__GNUC__) #if defined(__SYMBIAN32__) && 0
static void THTTP_MESSAGE_ADD_HEADER(thttp_message_t *self, ...) static void THTTP_MESSAGE_ADD_HEADER(thttp_message_t *self, ...)
{ {
va_list ap; va_list ap;
@ -237,11 +237,11 @@ static void THTTP_MESSAGE_ADD_HEADER(thttp_message_t *self, ...)
tsk_object_unref(header); tsk_object_unref(header);
} }
#else #else
#define THTTP_MESSAGE_ADD_HEADER(self, objdef, ...) \ #define THTTP_MESSAGE_ADD_HEADER(self, objdef, ...) \
{ \ { \
thttp_header_t *header = tsk_object_new(objdef, __VA_ARGS__); \ thttp_header_t *header = (thttp_header_t *)tsk_object_new(objdef, ##__VA_ARGS__); \
thttp_message_add_header(self, header); \ thttp_message_add_header(self, header); \
tsk_object_unref(header); \ tsk_object_unref(header); \
} }
#endif #endif

View File

@ -38,24 +38,24 @@
THTTP_BEGIN_DECLS THTTP_BEGIN_DECLS
#define THTTP_URL_IS_SECURE(url) ((url && url->type==url_https) ? 1 : 0) #define THTTP_URL_IS_SECURE(url) ((url && url->type==thttp_url_https) ? 1 : 0)
/** Url type. /** Url type.
*/ */
typedef enum thttp_url_type_e typedef enum thttp_url_type_e
{ {
url_unknown, thttp_url_unknown,
url_http, thttp_url_http,
url_https, thttp_url_https,
} }
thttp_url_type_t; thttp_url_type_t;
typedef enum thttp_host_type_e typedef enum thttp_host_type_e
{ {
host_unknown, thttp_host_unknown,
host_hostname, thttp_host_hostname,
host_ipv4, thttp_host_ipv4,
host_ipv6 thttp_host_ipv6
} }
thttp_host_type_t; thttp_host_type_t;

View File

@ -66,7 +66,7 @@ thttp_url_t *thttp_url_parse(const char *urlstring, tsk_size_t length)
const char *ts = 0, *te = 0; const char *ts = 0, *te = 0;
int act =0; int act =0;
thttp_url_t *url = thttp_url_create(url_unknown); thttp_url_t *url = thttp_url_create(thttp_url_unknown);
const char *tag_start = 0; const char *tag_start = 0;
@ -364,23 +364,23 @@ _match:
break; break;
case 1: case 1:
/* #line 50 "./ragel/thttp_parser_url.rl" */ /* #line 50 "./ragel/thttp_parser_url.rl" */
{ url->scheme = tsk_strdup("http"), url->type = url_http; } { url->scheme = tsk_strdup("http"), url->type = thttp_url_http; }
break; break;
case 2: case 2:
/* #line 51 "./ragel/thttp_parser_url.rl" */ /* #line 51 "./ragel/thttp_parser_url.rl" */
{ url->scheme = tsk_strdup("https"), url->type = url_https; } { url->scheme = tsk_strdup("https"), url->type = thttp_url_https; }
break; break;
case 3: case 3:
/* #line 54 "./ragel/thttp_parser_url.rl" */ /* #line 54 "./ragel/thttp_parser_url.rl" */
{ url->host_type = url->host_type = host_ipv4; } { url->host_type = url->host_type = thttp_host_ipv4; }
break; break;
case 4: case 4:
/* #line 55 "./ragel/thttp_parser_url.rl" */ /* #line 55 "./ragel/thttp_parser_url.rl" */
{ url->host_type = url->host_type = host_ipv6; } { url->host_type = url->host_type = thttp_host_ipv6; }
break; break;
case 5: case 5:
/* #line 56 "./ragel/thttp_parser_url.rl" */ /* #line 56 "./ragel/thttp_parser_url.rl" */
{ url->host_type = url->host_type = host_hostname; } { url->host_type = url->host_type = thttp_host_hostname; }
break; break;
case 6: case 6:
/* #line 58 "./ragel/thttp_parser_url.rl" */ /* #line 58 "./ragel/thttp_parser_url.rl" */
@ -472,7 +472,7 @@ _again:
TSK_OBJECT_SAFE_FREE(url); TSK_OBJECT_SAFE_FREE(url);
} }
else if(!have_port){ else if(!have_port){
if(url->type == url_https){ if(url->type == thttp_url_https){
url->port = 443; url->port = 443;
} }
else{ else{

View File

@ -372,7 +372,7 @@ static int thttp_transport_layer_stream_cb(const tnet_transport_event_t* e)
/* Alert the operation (FSM) */ /* Alert the operation (FSM) */
if(message){ if(message){
if(have_all_content){ /* only if we have all data */ if(have_all_content){ /* only if we have all data */
ret = thttp_dialog_fsm_act(dialog, atype_i_message, message, tsk_null); ret = thttp_dialog_fsm_act(dialog, thttp_atype_i_message, message, tsk_null);
} }
} }
@ -392,19 +392,19 @@ int __thttp_stack_set(thttp_stack_t *self, va_list* app)
{ {
thttp_stack_param_type_t curr; thttp_stack_param_type_t curr;
while((curr = va_arg(*app, thttp_stack_param_type_t)) != pname_null) while((curr = va_arg(*app, thttp_stack_param_type_t)) != thttp_pname_null)
{ {
switch(curr) switch(curr)
{ {
// //
// Network // Network
// //
case pname_local_ip: case thttp_pname_local_ip:
{ /* STR */ { /* STR */
tsk_strupdate(&self->local_ip, va_arg(*app, const char*)); tsk_strupdate(&self->local_ip, va_arg(*app, const char*));
break; break;
} }
case pname_local_port: case thttp_pname_local_port:
{ /* INT */ { /* INT */
self->local_port = va_arg(*app, int); self->local_port = va_arg(*app, int);
break; break;
@ -413,7 +413,7 @@ int __thttp_stack_set(thttp_stack_t *self, va_list* app)
// //
// TLS // TLS
// //
case pname_tls_certs: case thttp_pname_tls_certs:
{ /* A_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR */ { /* A_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR */
tsk_strupdate(&self->tls.ca, va_arg(*app, const char*)); tsk_strupdate(&self->tls.ca, va_arg(*app, const char*));
tsk_strupdate(&self->tls.pbk, va_arg(*app, const char*)); tsk_strupdate(&self->tls.pbk, va_arg(*app, const char*));
@ -424,7 +424,7 @@ int __thttp_stack_set(thttp_stack_t *self, va_list* app)
// //
// Userdata // Userdata
// //
case pname_userdata: case thttp_pname_userdata:
{ /* (const void*)USERDATA_PTR */ { /* (const void*)USERDATA_PTR */
self->userdata = va_arg(*app, const void*); self->userdata = va_arg(*app, const void*);
break; break;

View File

@ -77,7 +77,7 @@ int thttp_action_perform(thttp_session_handle_t *session, const char* urlstring,
} }
va_start(ap, method); va_start(ap, method);
if((action = thttp_action_create(atype_o_request, urlstring, method, &ap))){ if((action = thttp_action_create(thttp_atype_o_request, urlstring, method, &ap))){
if((dialog = thttp_dialog_new(sess))){ if((dialog = thttp_dialog_new(sess))){
ret = thttp_dialog_fsm_act(dialog, action->type, tsk_null, action); ret = thttp_dialog_fsm_act(dialog, action->type, tsk_null, action);
@ -119,9 +119,9 @@ static tsk_object_t* thttp_action_ctor(tsk_object_t * self, va_list * app)
goto bail; goto bail;
} }
while((curr = va_arg(*app_2, thttp_action_param_type_t)) != aptype_null){ while((curr = va_arg(*app_2, thttp_action_param_type_t)) != thttp_aptype_null){
switch(curr){ switch(curr){
case aptype_option: case thttp_aptype_option:
{ /* (thttp_action_option_t)ID_ENUM, (const char*)VALUE_STR */ { /* (thttp_action_option_t)ID_ENUM, (const char*)VALUE_STR */
thttp_action_option_t id = va_arg(*app_2, thttp_action_option_t); thttp_action_option_t id = va_arg(*app_2, thttp_action_option_t);
const char* value = va_arg(*app_2, const char *); const char* value = va_arg(*app_2, const char *);
@ -129,7 +129,7 @@ static tsk_object_t* thttp_action_ctor(tsk_object_t * self, va_list * app)
break; break;
} }
case aptype_header: case thttp_aptype_header:
{ /* (const char*)NAME_STR, (const char*)VALUE_STR */ { /* (const char*)NAME_STR, (const char*)VALUE_STR */
const char* name = va_arg(*app_2, const char *); const char* name = va_arg(*app_2, const char *);
const char* value = va_arg(*app_2, const char *); const char* value = va_arg(*app_2, const char *);
@ -137,7 +137,7 @@ static tsk_object_t* thttp_action_ctor(tsk_object_t * self, va_list * app)
break; break;
} }
case aptype_payload: case thttp_aptype_payload:
{ /* (const void*)PAY_PTR, (tsk_size_t)PAY_SIZE */ { /* (const void*)PAY_PTR, (tsk_size_t)PAY_SIZE */
const void* payload = va_arg(*app_2, const void *); const void* payload = va_arg(*app_2, const void *);
tsk_size_t size = va_arg(*app_2, tsk_size_t); tsk_size_t size = va_arg(*app_2, tsk_size_t);

View File

@ -75,11 +75,11 @@ tsk_bool_t _fsm_cond_i_1xx(thttp_dialog_t* self, thttp_message_t* message)
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_request = atype_o_request, _fsm_action_request = thttp_atype_o_request,
_fsm_action_close = atype_close, _fsm_action_close = thttp_atype_close,
_fsm_action_message = atype_i_message, _fsm_action_message = thttp_atype_i_message,
_fsm_action_closed = atype_closed, _fsm_action_closed = thttp_thttp_atype_closed,
_fsm_action_error = atype_error, // Transport error and not HTTP message error (e.g. 409) _fsm_action_error = thttp_atype_error, // Transport error and not HTTP message error (e.g. 409)
/* _fsm_action_any_other = 0xFF */ /* _fsm_action_any_other = 0xFF */
} }
@ -338,7 +338,7 @@ int thttp_dialog_send_request(thttp_dialog_t *self)
goto bail; goto bail;
} }
else{ else{
if(request->line.request.url->type == url_https){ if(request->line.request.url->type == thttp_url_https){
TNET_SOCKET_TYPE_SET_TLS(type); TNET_SOCKET_TYPE_SET_TLS(type);
} }
else{ else{

View File

@ -374,7 +374,7 @@ again:
} }
switch(atype){ switch(atype){
case atype_closed: case thttp_thttp_atype_closed:
self->fd = TNET_INVALID_FD; self->fd = TNET_INVALID_FD;
break; break;
default: default:
@ -389,13 +389,13 @@ again:
/** Signals to all dialogs that the connection have been closed. */ /** Signals to all dialogs that the connection have been closed. */
int thttp_session_signal_closed(thttp_session_t *self) int thttp_session_signal_closed(thttp_session_t *self)
{ {
return thttp_session_signal(self, atype_closed); return thttp_session_signal(self, thttp_thttp_atype_closed);
} }
/** Signals to all dialogss that we got an error */ /** Signals to all dialogss that we got an error */
int thttp_session_signal_error(thttp_session_t *self) int thttp_session_signal_error(thttp_session_t *self)
{ {
return thttp_session_signal(self, atype_error); return thttp_session_signal(self, thttp_atype_error);
} }
/** Retrieves a session by fd */ /** Retrieves a session by fd */

View File

@ -133,7 +133,7 @@ static tsk_object_t* thttp_url_ctor(tsk_object_t *self, va_list * app)
thttp_url_t *url = self; thttp_url_t *url = self;
if(url){ if(url){
url->type = va_arg(*app, thttp_url_type_t); url->type = va_arg(*app, thttp_url_type_t);
if(url->type == url_https){ if(url->type == thttp_url_https){
url->port = 443; url->port = 443;
} }
else{ else{

View File

@ -315,8 +315,9 @@ int removeSocket(int index, transport_context_t *context)
{ {
int i; int i;
tsk_safeobj_lock(context);
if(index < (int)context->count){ if(index < (int)context->count){
tsk_safeobj_lock(context);
/* Close the socket if we are the owner. */ /* Close the socket if we are the owner. */
if(context->sockets[index]->owner){ if(context->sockets[index]->owner){
@ -336,9 +337,9 @@ int removeSocket(int index, transport_context_t *context)
context->sockets[context->count-1] = 0; context->sockets[context->count-1] = 0;
context->count--; context->count--;
tsk_safeobj_unlock(context);
} }
tsk_safeobj_unlock(context);
return 0; return 0;
} }

View File

@ -360,9 +360,10 @@ static int removeSocket(int index, transport_context_t *context)
{ {
tsk_size_t i; tsk_size_t i;
tsk_safeobj_lock(context);
if(index < (int)context->count) if(index < (int)context->count)
{ {
tsk_safeobj_lock(context);
/* Close the socket if we are the owner. */ /* Close the socket if we are the owner. */
if(context->sockets[index]->owner){ if(context->sockets[index]->owner){
@ -388,9 +389,10 @@ static int removeSocket(int index, transport_context_t *context)
context->events[context->count-1] = 0; context->events[context->count-1] = 0;
context->count--; context->count--;
tsk_safeobj_unlock(context);
} }
tsk_safeobj_unlock(context);
return 0; return 0;
} }

View File

@ -46,41 +46,41 @@ typedef uint64_t tsip_action_id_t;
typedef enum tsip_action_type_e typedef enum tsip_action_type_e
{ {
//! Used as configuration action //! Used as configuration action
atype_config, tsip_atype_config,
/* === REGISTER == */ /* === REGISTER == */
atype_register, /**< Sends SIP REGISTER request */ tsip_atype_register, /**< Sends SIP REGISTER request */
//! Unregister by sending SIP REGISTER request with expires value equals to zero //! Unregister by sending SIP REGISTER request with expires value equals to zero
#define atype_unregister atype_hangup #define tsip_atype_unregister tsip_atype_hangup
/* === SUBSCRIBE === */ /* === SUBSCRIBE === */
atype_subscribe, /**< Sends SIP SUBSCRIBE request */ tsip_atype_subscribe, /**< Sends SIP SUBSCRIBE request */
//! Unsubsribe by sending SIP SUBSCRIBE request with expires value equals to zero //! Unsubsribe by sending SIP SUBSCRIBE request with expires value equals to zero
#define atype_unsubscribe atype_hangup #define tsip_atype_unsubscribe tsip_atype_hangup
/* === MESSAGE === */ /* === MESSAGE === */
atype_message_send, /**< Sends SIP MESSAGE request */ tsip_atype_message_send, /**< Sends SIP MESSAGE request */
/* === PUBLISH === */ /* === PUBLISH === */
atype_publish, /**< Sends SIP PUBLISH request */ tsip_atype_publish, /**< Sends SIP PUBLISH request */
//! Unpublish by sending SIP PUBLISH request with expires value equals to zero //! Unpublish by sending SIP PUBLISH request with expires value equals to zero
#define atype_unpublish atype_hangup #define tsip_atype_unpublish tsip_atype_hangup
/* === OPTIONS === */ /* === OPTIONS === */
atype_options_send, /**< Sends SIP OPTIONS request */ tsip_atype_options_send, /**< Sends SIP OPTIONS request */
/* === common === */ /* === common === */
//! Accept incoming call (INVITE) or message (SIP MESSAGE) //! Accept incoming call (INVITE) or message (SIP MESSAGE)
atype_accept, tsip_atype_accept,
//! Reject incoming call (INVITE) or message (SIP MESSAGE) //! Reject incoming call (INVITE) or message (SIP MESSAGE)
atype_reject, tsip_atype_reject,
//! Cancel an outgoing request //! Cancel an outgoing request
atype_cancel, tsip_atype_cancel,
//! Hangup any SIP dialog (BYE, unREGISTER, unSUBSCRIBE ...). If the dialog is in early state, then it will be canceled. //! Hangup any SIP dialog (BYE, unREGISTER, unSUBSCRIBE ...). If the dialog is in early state, then it will be canceled.
atype_hangup, tsip_atype_hangup,
//! Shutdown a SIP dialog. Should only be called by the stack. //! Shutdown a SIP dialog. Should only be called by the stack.
atype_shutdown, tsip_atype_shutdown,
} }
tsip_action_type_t; tsip_action_type_t;

View File

@ -236,7 +236,7 @@ TINYSIP_API int tsip_message_add_header(tsip_message_t *self, const tsip_header_
TINYSIP_API int tsip_message_add_headers(tsip_message_t *self, ...); TINYSIP_API int tsip_message_add_headers(tsip_message_t *self, ...);
TINYSIP_API int tsip_message_add_content(tsip_message_t *self, const char* content_type, const void* content, tsk_size_t size); TINYSIP_API int tsip_message_add_content(tsip_message_t *self, const char* content_type, const void* content, tsk_size_t size);
#if !defined(_MSC_VER) || defined(__GNUC__) #if defined(__SYMBIAN32__) && 0
static void TSIP_MESSAGE_ADD_HEADER(tsip_message_t *self, ...) static void TSIP_MESSAGE_ADD_HEADER(tsip_message_t *self, ...)
{ {
va_list ap; va_list ap;
@ -252,11 +252,11 @@ static void TSIP_MESSAGE_ADD_HEADER(tsip_message_t *self, ...)
tsk_object_unref(header); tsk_object_unref(header);
} }
#else #else
#define TSIP_MESSAGE_ADD_HEADER(self, objdef, ...) \ #define TSIP_MESSAGE_ADD_HEADER(self, objdef, ...) \
{ \ { \
tsip_header_t *header = tsk_object_new(objdef, __VA_ARGS__); \ tsip_header_t *header = (tsip_header_t *)tsk_object_new(objdef, ##__VA_ARGS__); \
tsip_message_add_header(self, header); \ tsip_message_add_header(self, header); \
tsk_object_unref(header); \ tsk_object_unref(header); \
} }
#endif #endif

View File

@ -58,40 +58,40 @@ typedef uint8_t operator_id_t[16];
typedef enum tsip_stack_param_type_e typedef enum tsip_stack_param_type_e
{ {
pname_null = tsk_null, tsip_pname_null = tsk_null,
/* === Identity === */ /* === Identity === */
pname_display_name, tsip_pname_display_name,
pname_impu, tsip_pname_impu,
pname_preferred_id, tsip_pname_preferred_id,
pname_impi, tsip_pname_impi,
pname_password, tsip_pname_password,
/* === Network === */ /* === Network === */
pname_realm, tsip_pname_realm,
pname_local_ip, tsip_pname_local_ip,
pname_local_port, tsip_pname_local_port,
pname_aor, tsip_pname_aor,
pname_discovery_naptr, tsip_pname_discovery_naptr,
pname_discovery_dhcp, tsip_pname_discovery_dhcp,
pname_proxy_cscf, tsip_pname_proxy_cscf,
pnale_dnsserver, pnale_dnsserver,
/* === Security === */ /* === Security === */
pname_early_ims, tsip_pname_early_ims,
pname_secagree_ipsec, tsip_pname_secagree_ipsec,
pname_secagree_tls, tsip_pname_secagree_tls,
pname_amf, tsip_pname_amf,
pname_operator_id, tsip_pname_operator_id,
pname_tls_certs, tsip_pname_tls_certs,
pname_ipsec_params, tsip_pname_ipsec_params,
/* === Dummy Headers === */ /* === Dummy Headers === */
pname_header, tsip_pname_header,
/* === User Data === */ /* === User Data === */
pname_userdata tsip_pname_userdata
} }
tsip_stack_param_type_t; tsip_stack_param_type_t;
@ -100,7 +100,7 @@ tsip_stack_param_type_t;
* @def TSIP_STACK_SET_NULL * @def TSIP_STACK_SET_NULL
* Ends the stack parameters. Mandatory and should be the last one. * Ends the stack parameters. Mandatory and should be the last one.
*/ */
#define TSIP_STACK_SET_NULL() pname_null #define TSIP_STACK_SET_NULL() tsip_pname_null
/* === Identity === */ /* === Identity === */
/**@ingroup tsip_stack_group /**@ingroup tsip_stack_group
@ -153,11 +153,11 @@ tsip_stack_param_type_t;
* TSIP_STACK_SET_NULL()); * TSIP_STACK_SET_NULL());
* @endcode * @endcode
*/ */
#define TSIP_STACK_SET_DISPLAY_NAME(NAME_STR) pname_display_name, (const char*)NAME_STR #define TSIP_STACK_SET_DISPLAY_NAME(NAME_STR) tsip_pname_display_name, (const char*)NAME_STR
#define TSIP_STACK_SET_IMPU(URI_STR) pname_impu, (const char*)URI_STR #define TSIP_STACK_SET_IMPU(URI_STR) tsip_pname_impu, (const char*)URI_STR
#define TSIP_STACK_SET_PREFERRED_IDENTITY(URI_STR) pname_preferred_id, (const char*)URI_STR #define TSIP_STACK_SET_PREFERRED_IDENTITY(URI_STR) tsip_pname_preferred_id, (const char*)URI_STR
#define TSIP_STACK_SET_IMPI(IMPI_STR) pname_impi, (const char*)IMPI_STR #define TSIP_STACK_SET_IMPI(IMPI_STR) tsip_pname_impi, (const char*)IMPI_STR
#define TSIP_STACK_SET_PASSWORD(PASSORD_STR) pname_password, (const char*)PASSORD_STR #define TSIP_STACK_SET_PASSWORD(PASSORD_STR) tsip_pname_password, (const char*)PASSORD_STR
/* === Network === */ /* === Network === */
/**@ingroup tsip_stack_group /**@ingroup tsip_stack_group
@ -264,13 +264,13 @@ int ret = tsip_stack_set(stack,
TSIP_STACK_SET_NULL()); TSIP_STACK_SET_NULL());
* @endcode * @endcode
*/ */
#define TSIP_STACK_SET_REALM(URI_STR) pname_realm, (const char*)URI_STR #define TSIP_STACK_SET_REALM(URI_STR) tsip_pname_realm, (const char*)URI_STR
#define TSIP_STACK_SET_LOCAL_IP(IP_STR) pname_local_ip, (const char*)IP_STR #define TSIP_STACK_SET_LOCAL_IP(IP_STR) tsip_pname_local_ip, (const char*)IP_STR
#define TSIP_STACK_SET_LOCAL_PORT(PORT_UINT) pname_local_port, (unsigned)PORT_UINT #define TSIP_STACK_SET_LOCAL_PORT(PORT_UINT) tsip_pname_local_port, (unsigned)PORT_UINT
#define TSIP_STACK_SET_AOR(IP_STR, PORT_UINT) pname_aor, (const char*)IP_STR, (unsigned)PORT_UINT #define TSIP_STACK_SET_AOR(IP_STR, PORT_UINT) tsip_pname_aor, (const char*)IP_STR, (unsigned)PORT_UINT
#define TSIP_STACK_SET_DISCOVERY_NAPTR(ENABLED_BOOL) pname_discovery_naptr, (tsk_bool_t)ENABLED_BOOL #define TSIP_STACK_SET_DISCOVERY_NAPTR(ENABLED_BOOL) tsip_pname_discovery_naptr, (tsk_bool_t)ENABLED_BOOL
#define TSIP_STACK_SET_DISCOVERY_DHCP(ENABLED_BOOL) pname_discovery_dhcp, (tsk_bool_t)ENABLED_BOOL #define TSIP_STACK_SET_DISCOVERY_DHCP(ENABLED_BOOL) tsip_pname_discovery_dhcp, (tsk_bool_t)ENABLED_BOOL
#define TSIP_STACK_SET_PROXY_CSCF(FQDN_STR, PORT_UINT, TRANSPORT_STR, IP_VERSION_STR) pname_proxy_cscf, (const char*)FQDN_STR, (unsigned)PORT_UINT, (const char*)TRANSPORT_STR, (const char*)IP_VERSION_STR #define TSIP_STACK_SET_PROXY_CSCF(FQDN_STR, PORT_UINT, TRANSPORT_STR, IP_VERSION_STR) tsip_pname_proxy_cscf, (const char*)FQDN_STR, (unsigned)PORT_UINT, (const char*)TRANSPORT_STR, (const char*)IP_VERSION_STR
#define TSIP_STACK_SET_DNS_SERVER(IP_STR) pnale_dnsserver, (const char*)IP_STR #define TSIP_STACK_SET_DNS_SERVER(IP_STR) pnale_dnsserver, (const char*)IP_STR
/* === Security === */ /* === Security === */
@ -363,13 +363,13 @@ int ret = tsip_stack_set(stack,
* *
* @sa @ref TSIP_STACK_SET_IPSEC_PARAMS() * @sa @ref TSIP_STACK_SET_IPSEC_PARAMS()
*/ */
#define TSIP_STACK_SET_EARLY_IMS(ENABLED_BOOL) pname_early_ims, (tsk_bool_t)ENABLED_BOOL #define TSIP_STACK_SET_EARLY_IMS(ENABLED_BOOL) tsip_pname_early_ims, (tsk_bool_t)ENABLED_BOOL
#define TSIP_STACK_SET_SECAGREE_IPSEC(ENABLED_BOOL) pname_scagree_ipsec, (tsk_bool_t)ENABLED_BOOL #define TSIP_STACK_SET_SECAGREE_IPSEC(ENABLED_BOOL) tsip_pname_scagree_ipsec, (tsk_bool_t)ENABLED_BOOL
#define TSIP_STACK_SET_SECAGREE_TLS(ENABLED_BOOL) pname_scagree_tls, (tsk_bool_t)ENABLED_BOOL #define TSIP_STACK_SET_SECAGREE_TLS(ENABLED_BOOL) tsip_pname_scagree_tls, (tsk_bool_t)ENABLED_BOOL
#define TSIP_STACK_SET_IMS_AKA_AMF(AMF_UINT16) pname_amf, (uint16_t)AMF_UINT16 #define TSIP_STACK_SET_IMS_AKA_AMF(AMF_UINT16) tsip_pname_amf, (uint16_t)AMF_UINT16
#define TSIP_STACK_SET_IMS_AKA_OPERATOR_ID(OPID_HEX_STR) pname_operator_id, (const char*)OPID_HEX_STR #define TSIP_STACK_SET_IMS_AKA_OPERATOR_ID(OPID_HEX_STR) tsip_pname_operator_id, (const char*)OPID_HEX_STR
#define TSIP_STACK_SET_IPSEC_PARAMS(ALG_STR, EALG_STR, MODE_STR, PROTOCOL_STR) pname_ipsec_params, (const char*)ALG_STR, (const char*)EALG_STR, (const char*)MODE_STR, (const char*)PROTOCOL_STR #define TSIP_STACK_SET_IPSEC_PARAMS(ALG_STR, EALG_STR, MODE_STR, PROTOCOL_STR) tsip_pname_ipsec_params, (const char*)ALG_STR, (const char*)EALG_STR, (const char*)MODE_STR, (const char*)PROTOCOL_STR
#define TSIP_STACK_SET_TLS_CERTS(CA_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR) pname_tls_certs, (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR #define TSIP_STACK_SET_TLS_CERTS(CA_FILE_STR, PUB_FILE_STR, PRIV_FILE_STR) tsip_pname_tls_certs, (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR
/* === Headers === */ /* === Headers === */
@ -401,7 +401,7 @@ int ret = tsip_stack_set(stack,
* *
* @sa @ref TSIP_STACK_SET_HEADER() * @sa @ref TSIP_STACK_SET_HEADER()
*/ */
#define TSIP_STACK_SET_HEADER(NAME_STR, VALUE_STR) pname_header, (const char*)NAME_STR, (const char*)VALUE_STR #define TSIP_STACK_SET_HEADER(NAME_STR, VALUE_STR) tsip_pname_header, (const char*)NAME_STR, (const char*)VALUE_STR
#define TSIP_STACK_UNSET_HEADER(NAME_STR) TSIP_STACK_SET_HEADER(NAME_STR, ((const char*)-1)) #define TSIP_STACK_UNSET_HEADER(NAME_STR) TSIP_STACK_SET_HEADER(NAME_STR, ((const char*)-1))
/* === User Data === */ /* === User Data === */
@ -416,7 +416,7 @@ int ret = tsip_stack_set(stack,
* TSIP_STACK_SET_NULL()); * TSIP_STACK_SET_NULL());
* @endcode * @endcode
*/ */
#define TSIP_STACK_SET_USERDATA(DATA_PTR) pname_userdata, (const void*)DATA_PTR #define TSIP_STACK_SET_USERDATA(DATA_PTR) tsip_pname_userdata, (const void*)DATA_PTR

View File

@ -48,21 +48,21 @@ int _tsip_action_ANY(const tsip_ssession_handle_t *ss, tsip_action_type_t type,
const tsip_ssession_t* _ss; const tsip_ssession_t* _ss;
/* Checks for validity */ /* Checks for validity */
if(!(_ss = ss) || !_ss->stack){ if(!(_ss = ss) || !_ss->stack){
TSK_DEBUG_ERROR("Invalid parameter."); TSK_DEBUG_ERROR("Invalid parameter.");
return ret; return ret;
} }
/* Checks if the stack has been started */ /* Checks if the stack has been started */
if(!TSK_RUNNABLE(_ss->stack)->started){ if(!TSK_RUNNABLE(_ss->stack)->started){
TSK_DEBUG_ERROR("Stack not started."); TSK_DEBUG_ERROR("Stack not started.");
return -2; return -2;
} }
/* execute action */ /* execute action */
if((action = _tsip_action_create(type, app))){ if((action = _tsip_action_create(type, app))){
ret = tsip_ssession_handle(_ss, action); ret = tsip_ssession_handle(_ss, action);
TSK_OBJECT_SAFE_FREE(action); TSK_OBJECT_SAFE_FREE(action);
} }
return ret; return ret;
} }
@ -80,7 +80,7 @@ int tsip_action_REJECT(const tsip_ssession_handle_t *ss, ...)
va_list ap; va_list ap;
va_start(ap, ss); va_start(ap, ss);
if((ret = _tsip_action_ANY(ss, atype_reject, &ap))){ if((ret = _tsip_action_ANY(ss, tsip_atype_reject, &ap))){
TSK_DEBUG_ERROR("Reject() failed."); TSK_DEBUG_ERROR("Reject() failed.");
} }
va_end(ap); va_end(ap);
@ -102,7 +102,7 @@ int tsip_action_HANGUP(const tsip_ssession_handle_t *ss, ...)
va_list ap; va_list ap;
va_start(ap, ss); va_start(ap, ss);
if((ret = _tsip_action_ANY(ss, atype_hangup, &ap))){ if((ret = _tsip_action_ANY(ss, tsip_atype_hangup, &ap))){
TSK_DEBUG_ERROR("Hang-up() failed."); TSK_DEBUG_ERROR("Hang-up() failed.");
} }
va_end(ap); va_end(ap);
@ -123,7 +123,7 @@ int tsip_action_ACCEPT(const tsip_ssession_handle_t *ss, ...)
va_list ap; va_list ap;
va_start(ap, ss); va_start(ap, ss);
if((ret = _tsip_action_ANY(ss, atype_accept, &ap))){ if((ret = _tsip_action_ANY(ss, tsip_atype_accept, &ap))){
TSK_DEBUG_ERROR("Accept() failed."); TSK_DEBUG_ERROR("Accept() failed.");
} }
va_end(ap); va_end(ap);

View File

@ -72,7 +72,7 @@ int tsip_action_MESSAGE(const tsip_ssession_handle_t *ss, ...)
/* action */ /* action */
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_message_send, &ap))){ if((action = _tsip_action_create(tsip_atype_message_send, &ap))){
if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){ if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){
dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_MESSAGE, ss); dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_MESSAGE, ss);
} }

View File

@ -71,7 +71,7 @@ int tsip_action_OPTIONS(const tsip_ssession_handle_t *ss, ...)
} }
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_options_send, &ap))){ if((action = _tsip_action_create(tsip_atype_options_send, &ap))){
if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){ if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){
dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_OPTIONS, ss); dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_OPTIONS, ss);
} }

View File

@ -71,7 +71,7 @@ int tsip_action_PUBLISH(const tsip_ssession_handle_t *ss, ...)
} }
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_publish, &ap))){ if((action = _tsip_action_create(tsip_atype_publish, &ap))){
if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){ if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){
dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_PUBLISH, ss); dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_PUBLISH, ss);
} }
@ -104,7 +104,7 @@ int tsip_action_UNPUBLISH(const tsip_ssession_handle_t *ss, ...)
} }
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_unpublish, &ap))){ if((action = _tsip_action_create(tsip_atype_unpublish, &ap))){
ret = tsip_ssession_handle(ss, action); ret = tsip_ssession_handle(ss, action);
TSK_OBJECT_SAFE_FREE(action); TSK_OBJECT_SAFE_FREE(action);
} }

View File

@ -55,14 +55,14 @@ int tsip_register_event_signal(tsip_register_event_type_t type, tsip_ssession_t*
return 0; return 0;
} }
/**@ingroup tsip_action_group /**@ingroup tsip_action_group
* Sends SIP REGISTER request. If the session is already established, the same dialog will * Sends SIP REGISTER request. If the session is already established, the same dialog will
* be used (refresh). * be used (refresh).
* @param ss The SIP Session managing the REGISTER dialog. * @param ss The SIP Session managing the REGISTER dialog.
* @param ... Any TSIP_ACTION_SET_*() macros. e.g. @ref TSIP_ACTION_SET_HEADER(). * @param ... Any TSIP_ACTION_SET_*() macros. e.g. @ref TSIP_ACTION_SET_HEADER().
* MUST always ends with @ref TSIP_ACTION_SET_NULL(). * MUST always ends with @ref TSIP_ACTION_SET_NULL().
* @retval Zero if succeed and non-zero error code otherwise. * @retval Zero if succeed and non-zero error code otherwise.
* @sa @ref tsip_action_UNREGISTER * @sa @ref tsip_action_UNREGISTER
*/ */
int tsip_action_REGISTER(const tsip_ssession_handle_t *ss, ...) int tsip_action_REGISTER(const tsip_ssession_handle_t *ss, ...)
{ {
@ -85,7 +85,7 @@ int tsip_action_REGISTER(const tsip_ssession_handle_t *ss, ...)
/* performs action */ /* performs action */
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_register, &ap))){ if((action = _tsip_action_create(tsip_atype_register, &ap))){
if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, _ss))){ if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, _ss))){
dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_REGISTER, _ss); dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_REGISTER, _ss);
} }
@ -99,25 +99,25 @@ int tsip_action_REGISTER(const tsip_ssession_handle_t *ss, ...)
return ret; return ret;
} }
/**@ingroup tsip_action_group /**@ingroup tsip_action_group
* Sends SIP unREGISTER request (expires=0). The session should be already established. * Sends SIP unREGISTER request (expires=0). The session should be already established.
* @param ss The SIP Session managing the REGISTER dialog. * @param ss The SIP Session managing the REGISTER dialog.
* @param ... Any TSIP_ACTION_SET_*() macros. e.g. @ref TSIP_ACTION_SET_HEADER(). * @param ... Any TSIP_ACTION_SET_*() macros. e.g. @ref TSIP_ACTION_SET_HEADER().
* MUST always ends with @ref TSIP_ACTION_SET_NULL(). * MUST always ends with @ref TSIP_ACTION_SET_NULL().
* @retval Zero if succeed and non-zero error code otherwise. * @retval Zero if succeed and non-zero error code otherwise.
* @sa @ref tsip_action_REGISTER * @sa @ref tsip_action_REGISTER
*/ */
int tsip_action_UNREGISTER(const tsip_ssession_handle_t *ss, ...) int tsip_action_UNREGISTER(const tsip_ssession_handle_t *ss, ...)
{ {
int ret = -1; int ret = -1;
va_list ap; va_list ap;
va_start(ap, ss); va_start(ap, ss);
if((ret = _tsip_action_ANY(ss, atype_unregister, &ap))){ if((ret = _tsip_action_ANY(ss, tsip_atype_unregister, &ap))){
TSK_DEBUG_ERROR("unREGISTER() failed."); TSK_DEBUG_ERROR("unREGISTER() failed.");
} }
va_end(ap); va_end(ap);
return ret; return ret;
} }

View File

@ -72,7 +72,7 @@ int tsip_action_SUBSCRIBE(const tsip_ssession_handle_t *ss, ...)
} }
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_subscribe, &ap))){ if((action = _tsip_action_create(tsip_atype_subscribe, &ap))){
if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){ if(!(dialog = tsip_dialog_layer_find_by_ss(_ss->stack->layer_dialog, ss))){
dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_SUBSCRIBE, ss); dialog = tsip_dialog_layer_new(_ss->stack->layer_dialog, tsip_dialog_SUBSCRIBE, ss);
} }
@ -105,7 +105,7 @@ int tsip_action_UNSUBSCRIBE(const tsip_ssession_handle_t *ss, ...)
} }
va_start(ap, ss); va_start(ap, ss);
if((action = _tsip_action_create(atype_unsubscribe, &ap))){ if((action = _tsip_action_create(tsip_atype_unsubscribe, &ap))){
ret = tsip_ssession_handle(ss, action); ret = tsip_ssession_handle(ss, action);
TSK_OBJECT_SAFE_FREE(action); TSK_OBJECT_SAFE_FREE(action);
} }

View File

@ -935,10 +935,10 @@ int tsip_dialog_hangup(tsip_dialog_t *self, const tsip_action_t* action)
{ {
if(self){ if(self){
if(self->state == tsip_initial){ if(self->state == tsip_initial){
return tsip_dialog_fsm_act(self, atype_cancel, tsk_null, action); return tsip_dialog_fsm_act(self, tsip_atype_cancel, tsk_null, action);
} }
else{ else{
return tsip_dialog_fsm_act(self, atype_hangup, tsk_null, action); return tsip_dialog_fsm_act(self, tsip_atype_hangup, tsk_null, action);
} }
} }
return -1; return -1;
@ -947,7 +947,7 @@ int tsip_dialog_hangup(tsip_dialog_t *self, const tsip_action_t* action)
int tsip_dialog_shutdown(tsip_dialog_t *self, const tsip_action_t* action) int tsip_dialog_shutdown(tsip_dialog_t *self, const tsip_action_t* action)
{ {
if(self){ if(self){
return tsip_dialog_fsm_act(self, atype_shutdown, tsk_null, action); return tsip_dialog_fsm_act(self, tsip_atype_shutdown, tsk_null, action);
} }
return -1; return -1;
} }

View File

@ -67,11 +67,11 @@ int tsip_dialog_message_Any_2_Terminated_X_Error(va_list *app);
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_sendMESSAGE = atype_message_send, _fsm_action_sendMESSAGE = tsip_atype_message_send,
_fsm_action_accept = atype_accept, _fsm_action_accept = tsip_atype_accept,
_fsm_action_reject = atype_reject, _fsm_action_reject = tsip_atype_reject,
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_shutdown = atype_shutdown, _fsm_action_shutdown = tsip_atype_shutdown,
_fsm_action_receiveMESSAGE = 0xFF, _fsm_action_receiveMESSAGE = 0xFF,
_fsm_action_1xx, _fsm_action_1xx,

View File

@ -68,11 +68,11 @@ int tsip_dialog_options_Any_2_Terminated_X_Error(va_list *app);
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_sendOPTIONS = atype_options_send, _fsm_action_sendOPTIONS = tsip_atype_options_send,
_fsm_action_accept = atype_accept, _fsm_action_accept = tsip_atype_accept,
_fsm_action_reject = atype_reject, _fsm_action_reject = tsip_atype_reject,
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_shutdown = atype_shutdown, _fsm_action_shutdown = tsip_atype_shutdown,
_fsm_action_receiveOPTIONS = 0xFF, _fsm_action_receiveOPTIONS = 0xFF,
_fsm_action_1xx, _fsm_action_1xx,

View File

@ -80,10 +80,10 @@ int _fsm_cond_publishing(tsip_dialog_publish_t* dialog, tsip_message_t* message)
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_publish = atype_publish, _fsm_action_publish = tsip_atype_publish,
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_hangup = atype_unpublish, _fsm_action_hangup = tsip_atype_unpublish,
_fsm_action_shutdown = atype_shutdown, _fsm_action_shutdown = tsip_atype_shutdown,
_fsm_action_1xx = 0xFF, _fsm_action_1xx = 0xFF,
_fsm_action_2xx, _fsm_action_2xx,

View File

@ -86,10 +86,10 @@ int _fsm_cond_registering(tsip_dialog_register_t* dialog, tsip_message_t* messag
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_register = atype_register, _fsm_action_register = tsip_atype_register,
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_hangup = atype_hangup, _fsm_action_hangup = tsip_atype_hangup,
_fsm_action_shutdown = atype_shutdown, _fsm_action_shutdown = tsip_atype_shutdown,
_fsm_action_1xx = 0xFF, _fsm_action_1xx = 0xFF,
_fsm_action_2xx, _fsm_action_2xx,

View File

@ -102,10 +102,10 @@ tsk_bool_t _fsm_cond_notify_not_terminated(tsip_dialog_subscribe_t* dialog, tsip
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_subscribe = atype_subscribe, _fsm_action_subscribe = tsip_atype_subscribe,
_fsm_action_hangup = atype_hangup, _fsm_action_hangup = tsip_atype_hangup,
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_shutdown = atype_shutdown, _fsm_action_shutdown = tsip_atype_shutdown,
_fsm_action_1xx = 0xFF, _fsm_action_1xx = 0xFF,
_fsm_action_2xx, _fsm_action_2xx,

View File

@ -113,7 +113,7 @@ int tsip_transac_ict_Any_2_Terminated_X_cancel(va_list *app); /* doubango-specif
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_send = 0xFF, _fsm_action_send = 0xFF,
_fsm_action_timerA, _fsm_action_timerA,

View File

@ -120,7 +120,7 @@ int tsip_transac_ist_Any_2_Terminated_X_cancel(va_list *app); /* doubango-specif
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_recv_INVITE = 0xFF, _fsm_action_recv_INVITE = 0xFF,
_fsm_action_recv_ACK, _fsm_action_recv_ACK,

View File

@ -122,7 +122,7 @@ int tsip_transac_layer_cancel_by_dialog(tsip_transac_layer_t *self, const struct
again: again:
tsk_list_foreach(item, self->transactions){ tsk_list_foreach(item, self->transactions){
if(tsk_object_cmp(dialog, TSIP_TRANSAC(item->data)->dialog) == 0){ if(tsk_object_cmp(dialog, TSIP_TRANSAC(item->data)->dialog) == 0){
if((ret = tsip_transac_fsm_act(TSIP_TRANSAC(item->data), atype_cancel, tsk_null))){ /* will call tsip_transac_layer_remove() if succeed */ if((ret = tsip_transac_fsm_act(TSIP_TRANSAC(item->data), tsip_atype_cancel, tsk_null))){ /* will call tsip_transac_layer_remove() if succeed */
/* break; */ /* break; */
} }
else{ else{

View File

@ -105,7 +105,7 @@ int tsip_transac_nict_Any_2_Terminated_X_cancel(va_list *app); /* doubango-speci
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_send = 0xFF, _fsm_action_send = 0xFF,
_fsm_action_timerE, _fsm_action_timerE,

View File

@ -106,7 +106,7 @@ int tsip_transac_nist_Any_2_Terminated_X_cancel(va_list *app); /* doubango-speci
/* ======================== actions ======================== */ /* ======================== actions ======================== */
typedef enum _fsm_action_e typedef enum _fsm_action_e
{ {
_fsm_action_cancel = atype_cancel, _fsm_action_cancel = tsip_atype_cancel,
_fsm_action_request = 0xFF, _fsm_action_request = 0xFF,
_fsm_action_send_1xx, _fsm_action_send_1xx,

View File

@ -66,24 +66,24 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
{ {
tsip_stack_param_type_t curr; tsip_stack_param_type_t curr;
while((curr = va_arg(*app, tsip_stack_param_type_t)) != pname_null){ while((curr = va_arg(*app, tsip_stack_param_type_t)) != tsip_pname_null){
switch(curr){ switch(curr){
/* === Identity === */ /* === Identity === */
case pname_display_name: case tsip_pname_display_name:
{ /* (const char*)NAME_STR */ { /* (const char*)NAME_STR */
const char* NAME_STR = va_arg(*app, const char*); const char* NAME_STR = va_arg(*app, const char*);
tsk_strupdate(&self->identity.display_name, NAME_STR); tsk_strupdate(&self->identity.display_name, NAME_STR);
break; break;
} }
case pname_impu: case tsip_pname_impu:
case pname_preferred_id: case tsip_pname_preferred_id:
{ /* (const char*)URI_STR */ { /* (const char*)URI_STR */
const char* URI_STR = va_arg(*app, const char*); const char* URI_STR = va_arg(*app, const char*);
if(!tsk_strnullORempty(URI_STR)){ if(!tsk_strnullORempty(URI_STR)){
tsip_uri_t *uri = tsip_uri_parse(URI_STR, tsk_strlen(URI_STR)); tsip_uri_t *uri = tsip_uri_parse(URI_STR, tsk_strlen(URI_STR));
if(uri){ if(uri){
if(curr == pname_impu){ if(curr == tsip_pname_impu){
TSK_OBJECT_SAFE_FREE(self->identity.impu); TSK_OBJECT_SAFE_FREE(self->identity.impu);
self->identity.impu = uri; self->identity.impu = uri;
} }
@ -94,18 +94,18 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
} }
else{ else{
TSK_DEBUG_ERROR("'%s' is an invalid SIP/TEL URI", URI_STR); TSK_DEBUG_ERROR("'%s' is an invalid SIP/TEL URI", URI_STR);
if(curr == pname_impu){ if(curr == tsip_pname_impu){
return -1; /* IMPU is mandatory but P-Preferred-Identity isn't. */ return -1; /* IMPU is mandatory but P-Preferred-Identity isn't. */
} }
} }
} }
else if(curr == pname_impu){ else if(curr == tsip_pname_impu){
TSK_DEBUG_ERROR("IMPU (IMS Public Identity) is mandatory."); TSK_DEBUG_ERROR("IMPU (IMS Public Identity) is mandatory.");
return -1; return -1;
} }
break; break;
} }
case pname_impi: case tsip_pname_impi:
{ /* (const char*)IMPI_STR */ { /* (const char*)IMPI_STR */
const char* IMPI_STR = va_arg(*app, const char*); const char* IMPI_STR = va_arg(*app, const char*);
if(tsk_strnullORempty(IMPI_STR)){ if(tsk_strnullORempty(IMPI_STR)){
@ -115,7 +115,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
tsk_strupdate(&self->identity.impi, IMPI_STR); tsk_strupdate(&self->identity.impi, IMPI_STR);
break; break;
} }
case pname_password: case tsip_pname_password:
{ /* (const char*)PASSORD_STR */ { /* (const char*)PASSORD_STR */
const char* PASSORD_STR = va_arg(*app, const char*); const char* PASSORD_STR = va_arg(*app, const char*);
tsk_strupdate(&self->identity.password, PASSORD_STR); tsk_strupdate(&self->identity.password, PASSORD_STR);
@ -125,7 +125,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
/* === Network === */ /* === Network === */
case pname_realm: case tsip_pname_realm:
{ /* (const char*)URI_STR */ { /* (const char*)URI_STR */
const char* URI_STR = va_arg(*app, const char*); const char* URI_STR = va_arg(*app, const char*);
tsip_uri_t *uri; tsip_uri_t *uri;
@ -143,18 +143,18 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
} }
break; break;
} }
case pname_local_ip: case tsip_pname_local_ip:
{ /* (const char*)IP_STR */ { /* (const char*)IP_STR */
const char* IP_STR = va_arg(*app, const char*); const char* IP_STR = va_arg(*app, const char*);
tsk_strupdate(&self->network.local_ip, IP_STR); tsk_strupdate(&self->network.local_ip, IP_STR);
break; break;
} }
case pname_local_port: case tsip_pname_local_port:
{ /* (unsigned)PORT_UINT */ { /* (unsigned)PORT_UINT */
self->network.local_port = (tnet_port_t)va_arg(*app, unsigned); self->network.local_port = (tnet_port_t)va_arg(*app, unsigned);
break; break;
} }
case pname_aor: case tsip_pname_aor:
{ /* (const char*)IP_STR, (unsigned)PORT_UINT */ { /* (const char*)IP_STR, (unsigned)PORT_UINT */
const char* IP_STR = va_arg(*app, const char*); const char* IP_STR = va_arg(*app, const char*);
tnet_port_t PORT_UINT = (tnet_port_t)va_arg(*app, unsigned); tnet_port_t PORT_UINT = (tnet_port_t)va_arg(*app, unsigned);
@ -167,17 +167,17 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
break; break;
} }
case pname_discovery_naptr: case tsip_pname_discovery_naptr:
{ /* (tsk_bool_t)ENABLED_BOOL */ { /* (tsk_bool_t)ENABLED_BOOL */
self->network.discovery_naptr = va_arg(*app, tsk_bool_t); self->network.discovery_naptr = va_arg(*app, tsk_bool_t);
break; break;
} }
case pname_discovery_dhcp: case tsip_pname_discovery_dhcp:
{ /* (tsk_bool_t)ENABLED_BOOL */ { /* (tsk_bool_t)ENABLED_BOOL */
self->network.discovery_dhcp = va_arg(*app, tsk_bool_t); self->network.discovery_dhcp = va_arg(*app, tsk_bool_t);
break; break;
} }
case pname_proxy_cscf: case tsip_pname_proxy_cscf:
{ /* (const char*)FQDN_STR, (unsigned)PORT_UINT, (const char*)TRANSPORT_STR, (const char*)IP_VERSION_STR */ { /* (const char*)FQDN_STR, (unsigned)PORT_UINT, (const char*)TRANSPORT_STR, (const char*)IP_VERSION_STR */
const char* FQDN_STR = va_arg(*app, const char*); const char* FQDN_STR = va_arg(*app, const char*);
tnet_port_t PORT_UINT = va_arg(*app, unsigned); tnet_port_t PORT_UINT = va_arg(*app, unsigned);
@ -232,33 +232,33 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
/* === Security === */ /* === Security === */
case pname_early_ims: case tsip_pname_early_ims:
{ /* (tsk_bool_t)ENABLED_BOOL */ { /* (tsk_bool_t)ENABLED_BOOL */
self->security.earlyIMS = va_arg(*app, tsk_bool_t); self->security.earlyIMS = va_arg(*app, tsk_bool_t);
break; break;
} }
case pname_secagree_ipsec: case tsip_pname_secagree_ipsec:
{ /* (tsk_bool_t)ENABLED_BOOL */ { /* (tsk_bool_t)ENABLED_BOOL */
if((self->security.enable_secagree_ipsec = va_arg(*app, tsk_bool_t))){ if((self->security.enable_secagree_ipsec = va_arg(*app, tsk_bool_t))){
tsk_strupdate(&self->security.secagree_mech, "ipsec-3gpp"); tsk_strupdate(&self->security.secagree_mech, "ipsec-3gpp");
} }
break; break;
} }
case pname_secagree_tls: case tsip_pname_secagree_tls:
{ /* (tsk_bool_t)ENABLED_BOOL */ { /* (tsk_bool_t)ENABLED_BOOL */
if((self->security.enable_secagree_tls = va_arg(*app, tsk_bool_t))){ if((self->security.enable_secagree_tls = va_arg(*app, tsk_bool_t))){
tsk_strupdate(&self->security.secagree_mech, "tls"); tsk_strupdate(&self->security.secagree_mech, "tls");
} }
break; break;
} }
case pname_amf: case tsip_pname_amf:
{ /* (uint16_t)AMF_UINT16 */ { /* (uint16_t)AMF_UINT16 */
unsigned amf = va_arg(*app, unsigned); unsigned amf = va_arg(*app, unsigned);
self->security.amf[0] = (amf >> 8); self->security.amf[0] = (amf >> 8);
self->security.amf[1] = (amf & 0xFF); self->security.amf[1] = (amf & 0xFF);
break; break;
} }
case pname_operator_id: case tsip_pname_operator_id:
{ /* (const char*)OPID_HEX_STR */ { /* (const char*)OPID_HEX_STR */
const char* hexstr = va_arg(*app, const char*); const char* hexstr = va_arg(*app, const char*);
tsk_size_t len = tsk_strlen(hexstr); tsk_size_t len = tsk_strlen(hexstr);
@ -284,7 +284,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
} }
break; break;
} }
case pname_ipsec_params: case tsip_pname_ipsec_params:
{ /* (const char*)ALG_STR, (const char*)EALG_STR, (const char*)MODE_STR, (const char*)PROTOCOL_STR*/ { /* (const char*)ALG_STR, (const char*)EALG_STR, (const char*)MODE_STR, (const char*)PROTOCOL_STR*/
tsk_strupdate(&self->security.ipsec.alg, va_arg(*app, const char*)); tsk_strupdate(&self->security.ipsec.alg, va_arg(*app, const char*));
tsk_strupdate(&self->security.ipsec.ealg, va_arg(*app, const char*)); tsk_strupdate(&self->security.ipsec.ealg, va_arg(*app, const char*));
@ -292,7 +292,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
tsk_strupdate(&self->security.ipsec.protocol, va_arg(*app, const char*)); tsk_strupdate(&self->security.ipsec.protocol, va_arg(*app, const char*));
break; break;
} }
case pname_tls_certs: case tsip_pname_tls_certs:
{ /* (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR */ { /* (const char*)CA_FILE_STR, (const char*)PUB_FILE_STR, (const char*)PRIV_FILE_STR */
tsk_strupdate(&self->security.tls.ca, va_arg(*app, const char*)); tsk_strupdate(&self->security.tls.ca, va_arg(*app, const char*));
tsk_strupdate(&self->security.tls.pbk, va_arg(*app, const char*)); tsk_strupdate(&self->security.tls.pbk, va_arg(*app, const char*));
@ -302,7 +302,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
/* === Dummy Headers === */ /* === Dummy Headers === */
case pname_header: case tsip_pname_header:
{ /* (const char*)NAME_STR, (const char*)VALUE_STR */ { /* (const char*)NAME_STR, (const char*)VALUE_STR */
const char* NAME_STR = va_arg(*app, const char*); const char* NAME_STR = va_arg(*app, const char*);
const char* VALUE_STR = va_arg(*app, const char*); const char* VALUE_STR = va_arg(*app, const char*);
@ -316,7 +316,7 @@ int __tsip_stack_set(tsip_stack_t *self, va_list* app)
} }
/* === User Data === */ /* === User Data === */
case pname_userdata: case tsip_pname_userdata:
{ /* (const void*)DATA_PTR */ { /* (const void*)DATA_PTR */
self->userdata = va_arg(*app, const void*); self->userdata = va_arg(*app, const void*);
break; break;
@ -702,7 +702,7 @@ tsip_uri_t* tsip_stack_get_pcscf_uri(const tsip_stack_t *stack, tsk_bool_t lr)
transport->protocol); transport->protocol);
if(uristring){ if(uristring){
if((uri = tsip_uri_parse(uristring, tsk_strlen(uristring)))){ if((uri = tsip_uri_parse(uristring, tsk_strlen(uristring)))){
//uri->host_type = ipv6 ? host_ipv6 : host_ipv4; //uri->host_type = ipv6 ? thttp_host_ipv6 : thttp_host_ipv4;
} }
TSK_FREE(uristring); TSK_FREE(uristring);
} }

View File

@ -46,7 +46,7 @@ int _tsip_action_set(tsip_action_handle_t* self, va_list* app);
* *
* @code * @code
tsip_action_handle_t* handle; tsip_action_handle_t* handle;
handle = tsip_action_create(atype_config, handle = tsip_action_create(tsip_atype_config,
TSIP_ACTION_SET_HEADER("User-Agent", "IM-client/OMA1.0 doubango/v1.0.0"), TSIP_ACTION_SET_HEADER("User-Agent", "IM-client/OMA1.0 doubango/v1.0.0"),
TSIP_ACTION_SET_HEADER("Supported", "precondition"), TSIP_ACTION_SET_HEADER("Supported", "precondition"),
TSIP_ACTION_SET_PAYLOAD("my payload", strlen("my payload")), TSIP_ACTION_SET_PAYLOAD("my payload", strlen("my payload")),
@ -133,7 +133,7 @@ int _tsip_action_set(tsip_action_handle_t* self, va_list* app)
case aptype_config: case aptype_config:
{ /* (const tsip_action_handle_t*)ACTION_CONFIG_HANDLE */ { /* (const tsip_action_handle_t*)ACTION_CONFIG_HANDLE */
const tsip_action_t* handle = va_arg(*app, const tsip_action_handle_t *); const tsip_action_t* handle = va_arg(*app, const tsip_action_handle_t *);
if(handle && handle->type == atype_config){ if(handle && handle->type == tsip_atype_config){
if(!TSK_LIST_IS_EMPTY(handle->headers)){ /* Copy headers */ if(!TSK_LIST_IS_EMPTY(handle->headers)){ /* Copy headers */
tsk_list_pushback_list(action->headers, handle->headers); tsk_list_pushback_list(action->headers, handle->headers);
} }

View File

@ -370,7 +370,7 @@ int tsip_ssession_handle(const tsip_ssession_t *self, const struct tsip_action_s
if((dialog = tsip_dialog_layer_find_by_ss(self->stack->layer_dialog, self))){ if((dialog = tsip_dialog_layer_find_by_ss(self->stack->layer_dialog, self))){
switch(action->type){ switch(action->type){
case atype_hangup: case tsip_atype_hangup:
{ /* hang-up is an special case (==> hangup/cancel/nothing) */ { /* hang-up is an special case (==> hangup/cancel/nothing) */
ret = tsip_dialog_hangup(dialog, action); ret = tsip_dialog_hangup(dialog, action);
break; break;

View File

@ -63,7 +63,7 @@ typedef enum txcap_stack_param_type_e
xcapp_option, xcapp_option,
xcapp_header, xcapp_header,
xcapp_context, xcapp_userdata,
xcapp_auid, xcapp_auid,
} }
txcap_stack_param_type_t; txcap_stack_param_type_t;
@ -168,7 +168,7 @@ int ret = txcap_stack_set(stack,
#define TXCAP_STACK_SET_PASSWORD(PASSWORD_STR) TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_PASSWORD, PASSWORD_STR) #define TXCAP_STACK_SET_PASSWORD(PASSWORD_STR) TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_PASSWORD, PASSWORD_STR)
#define TXCAP_STACK_SET_XUI(XUI_STR) TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_XUI, XUI_STR) #define TXCAP_STACK_SET_XUI(XUI_STR) TXCAP_STACK_SET_OPTION(TXCAP_STACK_OPTION_XUI, XUI_STR)
#define TXCAP_STACK_SET_HEADER(NAME_STR, VALUE_STR) xcapp_header, (const char*)NAME_STR, (const char*)VALUE_STR #define TXCAP_STACK_SET_HEADER(NAME_STR, VALUE_STR) xcapp_header, (const char*)NAME_STR, (const char*)VALUE_STR
#define TXCAP_STACK_SET_CONTEXT(CTX_PTR) xcapp_context, (const void*)CTX_PTR #define TXCAP_STACK_SET_USERDATA(CTX_PTR) xcapp_userdata, (const void*)CTX_PTR
#define TXCAP_STACK_SET_AUID(ID_STR, MIME_TYPE_STR, NS_STR, DOC_NAME_STR, IS_GLOBAL_BOOL) xcapp_auid, (const char*)ID_STR, (const char*)MIME_TYPE_STR, (const char*)NS_STR, (const char*)DOC_NAME_STR, (tsk_bool_t)IS_GLOBAL_BOOL #define TXCAP_STACK_SET_AUID(ID_STR, MIME_TYPE_STR, NS_STR, DOC_NAME_STR, IS_GLOBAL_BOOL) xcapp_auid, (const char*)ID_STR, (const char*)MIME_TYPE_STR, (const char*)NS_STR, (const char*)DOC_NAME_STR, (tsk_bool_t)IS_GLOBAL_BOOL
#define TXCAP_STACK_SET_NULL() xcapp_null #define TXCAP_STACK_SET_NULL() xcapp_null

View File

@ -782,10 +782,10 @@ int __txcap_stack_set(txcap_stack_t* self, va_list *app)
break; break;
} }
case xcapp_context: case xcapp_userdata:
{ /* (const void*)CTX_PTR */ { /* (const void*)CTX_PTR */
const void* CTX_PTR = va_arg(*app, const void*); const void* CTX_PTR = va_arg(*app, const void*);
((thttp_session_t*)self->http_session)->context = CTX_PTR; ((thttp_session_t*)self->http_session)->userdata = CTX_PTR;
break; break;
} }

View File

@ -161,7 +161,7 @@ done:
} }
/* HTTP action */ /* HTTP action */
if((action = thttp_action_create(atype_o_request, urlstring, method, tsk_null))){ if((action = thttp_action_create(thttp_atype_o_request, urlstring, method, tsk_null))){
const tsk_list_item_t* item; const tsk_list_item_t* item;
if((dialog = thttp_dialog_new(xcap_stack->http_session))){ if((dialog = thttp_dialog_new(xcap_stack->http_session))){
/* copy options */ /* copy options */