diff options
Diffstat (limited to 'src/sip/main.c')
-rw-r--r-- | src/sip/main.c | 40 |
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; } |