summaryrefslogtreecommitdiffstats
path: root/src/sip/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sip/main.c')
-rw-r--r--src/sip/main.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/sip/main.c b/src/sip/main.c
index f0a6e4d..4270eb6 100644
--- a/src/sip/main.c
+++ b/src/sip/main.c
@@ -197,32 +197,32 @@ static int handle_options(int short_option, int argi, char **argv)
receive_no_ringing_after_progress = 1;
break;
case 'n':
- name = strdup(argv[argi]);
+ name = options_strdup(argv[argi]);
break;
case 'l':
if ((p = strchr(argv[argi], '@'))) {
- local_user = strdup(argv[argi]);
+ local_user = options_strdup(argv[argi]);
*strchr(local_user, '@') = '\0';
- local_peer = strdup(p + 1);
+ local_peer = options_strdup(p + 1);
} else
- local_peer = strdup(argv[argi]);
+ local_peer = options_strdup(argv[argi]);
break;
case 'r':
if ((p = strchr(argv[argi], '@'))) {
- remote_user = strdup(argv[argi]);
+ remote_user = options_strdup(argv[argi]);
*strchr(remote_user, '@') = '\0';
- remote_peer = strdup(p + 1);
+ remote_peer = options_strdup(p + 1);
} else
- remote_peer = strdup(argv[argi]);
+ remote_peer = options_strdup(argv[argi]);
break;
case 'a':
- asserted_id = strdup(argv[argi]);
+ asserted_id = options_strdup(argv[argi]);
break;
case 'R':
if ((p = strchr(argv[argi], '@'))) {
- register_user = strdup(argv[argi]);
+ register_user = options_strdup(argv[argi]);
*strchr(register_user, '@') = '\0';
- register_peer = strdup(p + 1);
+ register_peer = options_strdup(p + 1);
} else {
fprintf(stderr, "Missing '@' sign in given registrar!\n");
return -EINVAL;
@@ -235,9 +235,9 @@ static int handle_options(int short_option, int argi, char **argv)
remote_register = 1;
break;
case 'A':
- auth_user = strdup(argv[argi]);
- auth_password = strdup(argv[argi + 1]);
- auth_realm = strdup(argv[argi + 2]);
+ auth_user = options_strdup(argv[argi]);
+ auth_password = options_strdup(argv[argi + 1]);
+ auth_realm = options_strdup(argv[argi + 2]);
break;
case OPT_LOCAL_AUTH:
local_auth = 1;
@@ -246,10 +246,10 @@ static int handle_options(int short_option, int argi, char **argv)
remote_auth = 1;
break;
case 'P':
- public_ip = strdup(argv[argi]);
+ public_ip = options_strdup(argv[argi]);
break;
case 'S':
- stun_server = strdup(argv[argi]);
+ stun_server = options_strdup(argv[argi]);
break;
case OPT_REG_INTER:
register_interval = atoi(argv[argi]);
@@ -272,7 +272,7 @@ static int handle_options(int short_option, int argi, char **argv)
fprintf(stderr, "Too many osmo-cc args!\n");
break;
}
- cc_argv[cc_argc++] = strdup(argv[argi]);
+ cc_argv[cc_argc++] = options_strdup(argv[argi]);
break;
default:
return -EINVAL;
@@ -295,7 +295,7 @@ int main(int argc, char *argv[])
{
int argi, rc;
- cc_argv[cc_argc++] = strdup("remote auto");
+ cc_argv[cc_argc++] = options_strdup("remote auto");
/* handle options / config file */
add_options();
@@ -316,12 +316,12 @@ int main(int argc, char *argv[])
if (!local_peer) {
PDEBUG(DSIP, DEBUG_ERROR, "You must specify local SIP peer!\n");
- return -EINVAL;
+ goto error;
}
if (!remote_peer) {
PDEBUG(DSIP, DEBUG_ERROR, "You must specify remote SIP peer!\n");
- return -EINVAL;
+ goto error;
}
if (!cc_argc || !!strncasecmp(cc_argv[0], "help", 4)) {
@@ -366,6 +366,8 @@ error:
sip_exit();
+ options_free();
+
return 0;
}