Fixed error when creating TLS transport in pjsua-lib (the TLS type was misidentified was UDP)
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@1618 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
19b29373fe
commit
b247714f40
|
@ -91,6 +91,8 @@ static struct app_config
|
||||||
static pjsua_call_id current_call = PJSUA_INVALID_ID;
|
static pjsua_call_id current_call = PJSUA_INVALID_ID;
|
||||||
static pj_str_t uri_arg;
|
static pj_str_t uri_arg;
|
||||||
|
|
||||||
|
static pjsua_transport_id tls_id;
|
||||||
|
|
||||||
#ifdef STEREO_DEMO
|
#ifdef STEREO_DEMO
|
||||||
static void stereo_demo();
|
static void stereo_demo();
|
||||||
#endif
|
#endif
|
||||||
|
@ -567,8 +569,8 @@ static pj_status_t parse_args(int argc, char *argv[],
|
||||||
|
|
||||||
case OPT_NO_UDP: /* no-udp */
|
case OPT_NO_UDP: /* no-udp */
|
||||||
if (cfg->no_tcp) {
|
if (cfg->no_tcp) {
|
||||||
PJ_LOG(1,(THIS_FILE,"Error: can not disable both TCP and UDP"));
|
//PJ_LOG(1,(THIS_FILE,"Error: cannot disable both TCP and UDP"));
|
||||||
return PJ_EINVAL;
|
//return PJ_EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg->no_udp = PJ_TRUE;
|
cfg->no_udp = PJ_TRUE;
|
||||||
|
@ -580,8 +582,8 @@ static pj_status_t parse_args(int argc, char *argv[],
|
||||||
|
|
||||||
case OPT_NO_TCP: /* no-tcp */
|
case OPT_NO_TCP: /* no-tcp */
|
||||||
if (cfg->no_udp) {
|
if (cfg->no_udp) {
|
||||||
PJ_LOG(1,(THIS_FILE,"Error: can not disable both TCP and UDP"));
|
//PJ_LOG(1,(THIS_FILE,"Error: cannot disable both TCP and UDP"));
|
||||||
return PJ_EINVAL;
|
//return PJ_EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg->no_tcp = PJ_TRUE;
|
cfg->no_tcp = PJ_TRUE;
|
||||||
|
@ -2216,12 +2218,15 @@ static void send_request(char *cstr_method, const pj_str_t *dst_uri)
|
||||||
pjsip_method_init_np(&method, &str_method);
|
pjsip_method_init_np(&method, &str_method);
|
||||||
|
|
||||||
status = pjsua_acc_create_request(current_acc, &method, dst_uri, &tdata);
|
status = pjsua_acc_create_request(current_acc, &method, dst_uri, &tdata);
|
||||||
|
if (status == PJ_SUCCESS) {
|
||||||
status = pjsip_endpt_send_request(endpt, tdata, -1, NULL, NULL);
|
status = pjsip_endpt_send_request(endpt, tdata, -1, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (status != PJ_SUCCESS) {
|
if (status != PJ_SUCCESS) {
|
||||||
pjsua_perror(THIS_FILE, "Unable to send request", status);
|
pjsua_perror(THIS_FILE, "Unable to create/send request", status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3424,6 +3429,34 @@ pj_status_t app_init(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Add IPv6 UDP */
|
||||||
|
#if 0 && defined(PJ_HAS_IPV6) && PJ_HAS_IPV6
|
||||||
|
if (1) {
|
||||||
|
pjsua_acc_id aid;
|
||||||
|
|
||||||
|
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP6,
|
||||||
|
&app_config.udp_cfg,
|
||||||
|
&transport_id);
|
||||||
|
if (status != PJ_SUCCESS)
|
||||||
|
goto on_error;
|
||||||
|
|
||||||
|
/* Add local account */
|
||||||
|
pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
|
||||||
|
//pjsua_acc_set_transport(aid, transport_id);
|
||||||
|
pjsua_acc_set_online_status(current_acc, PJ_TRUE);
|
||||||
|
|
||||||
|
if (app_config.udp_cfg.port == 0) {
|
||||||
|
pjsua_transport_info ti;
|
||||||
|
pj_sockaddr_in *a;
|
||||||
|
|
||||||
|
pjsua_transport_get_info(transport_id, &ti);
|
||||||
|
a = (pj_sockaddr_in*)&ti.local_addr;
|
||||||
|
|
||||||
|
tcp_cfg.port = pj_ntohs(a->sin_port);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* PJ_HAS_IPV6 */
|
||||||
|
|
||||||
/* Add TCP transport unless it's disabled */
|
/* Add TCP transport unless it's disabled */
|
||||||
if (!app_config.no_tcp) {
|
if (!app_config.no_tcp) {
|
||||||
status = pjsua_transport_create(PJSIP_TRANSPORT_TCP,
|
status = pjsua_transport_create(PJSIP_TRANSPORT_TCP,
|
||||||
|
@ -3454,6 +3487,8 @@ pj_status_t app_init(int argc, char *argv[])
|
||||||
if (status != PJ_SUCCESS)
|
if (status != PJ_SUCCESS)
|
||||||
goto on_error;
|
goto on_error;
|
||||||
|
|
||||||
|
tls_id = transport_id;
|
||||||
|
|
||||||
/* Add local account */
|
/* Add local account */
|
||||||
pjsua_acc_add_local(transport_id, PJ_FALSE, &acc_id);
|
pjsua_acc_add_local(transport_id, PJ_FALSE, &acc_id);
|
||||||
pjsua_acc_set_online_status(acc_id, PJ_TRUE);
|
pjsua_acc_set_online_status(acc_id, PJ_TRUE);
|
||||||
|
@ -3556,6 +3591,8 @@ pj_status_t app_destroy(void)
|
||||||
app_config.pool = NULL;
|
app_config.pool = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pjsua_transport_close(tls_id, 0);
|
||||||
|
|
||||||
status = pjsua_destroy();
|
status = pjsua_destroy();
|
||||||
|
|
||||||
pj_bzero(&app_config, sizeof(app_config));
|
pj_bzero(&app_config, sizeof(app_config));
|
||||||
|
|
|
@ -28,8 +28,60 @@
|
||||||
* #include "playfile.c"
|
* #include "playfile.c"
|
||||||
*/
|
*/
|
||||||
//#include "aectest.c"
|
//#include "aectest.c"
|
||||||
#include <pjlib.h>
|
//#include "strerror.c"
|
||||||
|
|
||||||
|
#include <pjlib.h>
|
||||||
|
#include <pjlib-util.h>
|
||||||
|
|
||||||
|
#define THIS_FILE "test.c"
|
||||||
|
|
||||||
|
void check_error(const char *func, pj_status_t status)
|
||||||
|
{
|
||||||
|
if (status != PJ_SUCCESS) {
|
||||||
|
char errmsg[PJ_ERR_MSG_SIZE];
|
||||||
|
pj_strerror(status, errmsg, sizeof(errmsg));
|
||||||
|
PJ_LOG(1,(THIS_FILE, "%s error: %s", func, errmsg));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DO(func) status = func; check_error(#func, status);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
pj_sock_t sock;
|
||||||
|
pj_sockaddr_in addr;
|
||||||
|
pj_str_t stun_srv = pj_str("stun.fwdnet.net");
|
||||||
|
pj_caching_pool cp;
|
||||||
|
pj_status_t status;
|
||||||
|
|
||||||
|
DO( pj_init() );
|
||||||
|
|
||||||
|
pj_caching_pool_init(&cp, NULL, 0);
|
||||||
|
|
||||||
|
DO( pjlib_util_init() );
|
||||||
|
DO( pj_sock_socket(pj_AF_INET(), pj_SOCK_DGRAM(), 0, &sock) );
|
||||||
|
DO( pj_sock_bind_in(sock, 0, 0) );
|
||||||
|
|
||||||
|
DO( pjstun_get_mapped_addr(&cp.factory, 1, &sock,
|
||||||
|
&stun_srv, 3478,
|
||||||
|
&stun_srv, 3478,
|
||||||
|
&addr) );
|
||||||
|
|
||||||
|
PJ_LOG(3,(THIS_FILE, "Mapped address is %s:%d",
|
||||||
|
pj_inet_ntoa(addr.sin_addr),
|
||||||
|
(int)pj_ntohs(addr.sin_port)));
|
||||||
|
|
||||||
|
DO( pj_sock_close(sock) );
|
||||||
|
pj_caching_pool_destroy(&cp);
|
||||||
|
pj_shutdown();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#include <pjlib.h>
|
||||||
|
|
||||||
static void on_accept_complete(pj_ioqueue_key_t *key,
|
static void on_accept_complete(pj_ioqueue_key_t *key,
|
||||||
pj_ioqueue_op_key_t *op_key,
|
pj_ioqueue_op_key_t *op_key,
|
||||||
|
@ -87,3 +139,4 @@ int main()
|
||||||
PJ_ASSERT_RETURN(status==PJ_EPENDING, 1);
|
PJ_ASSERT_RETURN(status==PJ_EPENDING, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1346,7 +1346,7 @@ PJ_DEF(pj_status_t) pjsua_transport_create( pjsip_transport_type_e type,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the transport */
|
/* Create the transport */
|
||||||
if (type & PJSIP_TRANSPORT_UDP) {
|
if (type==PJSIP_TRANSPORT_UDP || type==PJSIP_TRANSPORT_UDP6) {
|
||||||
/*
|
/*
|
||||||
* Create UDP transport (IPv4 or IPv6).
|
* Create UDP transport (IPv4 or IPv6).
|
||||||
*/
|
*/
|
||||||
|
@ -1407,7 +1407,7 @@ PJ_DEF(pj_status_t) pjsua_transport_create( pjsip_transport_type_e type,
|
||||||
|
|
||||||
#if defined(PJ_HAS_TCP) && PJ_HAS_TCP!=0
|
#if defined(PJ_HAS_TCP) && PJ_HAS_TCP!=0
|
||||||
|
|
||||||
} else if (type == PJSIP_TRANSPORT_TCP) {
|
} else if (type == PJSIP_TRANSPORT_TCP || type == PJSIP_TRANSPORT_TCP6) {
|
||||||
/*
|
/*
|
||||||
* Create TCP transport.
|
* Create TCP transport.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue