summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/pjsua/pjsua_app.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip-apps/src/pjsua/pjsua_app.c')
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index 641c32cc..5b2d649d 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -485,7 +485,7 @@ static pj_status_t parse_args(int argc, char *argv[],
case OPT_LOCAL_PORT: /* local-port */
lval = pj_strtoul(pj_cstr(&tmp, pj_optarg));
- if (lval < 1 || lval > 65535) {
+ if (lval < 0 || lval > 65535) {
PJ_LOG(1,(THIS_FILE,
"Error: expecting integer value for "
"--local-port"));
@@ -2891,6 +2891,7 @@ on_exit:
pj_status_t app_init(int argc, char *argv[])
{
pjsua_transport_id transport_id = -1;
+ pjsua_transport_config tcp_cfg;
unsigned i;
pj_status_t status;
@@ -2995,6 +2996,8 @@ pj_status_t app_init(int argc, char *argv[])
app_config.rec_port = pjsua_recorder_get_conf_port(app_config.rec_id);
}
+ pj_memcpy(&tcp_cfg, &app_config.udp_cfg, sizeof(tcp_cfg));
+
/* Add UDP transport unless it's disabled. */
if (!app_config.no_udp) {
pjsua_acc_id aid;
@@ -3009,12 +3012,22 @@ pj_status_t app_init(int argc, char *argv[])
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);
+ }
}
/* Add TCP transport unless it's disabled */
if (!app_config.no_tcp) {
status = pjsua_transport_create(PJSIP_TRANSPORT_TCP,
- &app_config.udp_cfg,
+ &tcp_cfg,
&transport_id);
if (status != PJ_SUCCESS)
goto on_error;