summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2021-03-20 16:11:06 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2021-03-20 16:11:06 +0100
commitada147349f673e5459cc80696c9c071a7aa08b27 (patch)
treec825467d200163753f360cb45904ebc89da45dad
parentd8977d4fd4361306809afa6da1c02faa10b6e114 (diff)
Add option to change User-Agent tag
-rw-r--r--src/sip/main.c9
-rw-r--r--src/sip/sip.c3
-rw-r--r--src/sip/sip.h2
3 files changed, 11 insertions, 3 deletions
diff --git a/src/sip/main.c b/src/sip/main.c
index de528f4..8b470be 100644
--- a/src/sip/main.c
+++ b/src/sip/main.c
@@ -35,6 +35,7 @@ int sofia_debug = 0;
int send_no_ringing_after_progress = 0;
int receive_no_ringing_after_progress = 0;
const char *name = "sip";
+const char *user_agent = "osmo-cc-sip-endpoint";
const char *local_user = NULL;
const char *local_peer = NULL;
const char *remote_user = NULL;
@@ -128,6 +129,8 @@ static void print_help()
printf(" --stun-interval <seconds> (default = %d seconds)\n", stun_interval);
printf(" --expires <seconds> | 0 (default = %d seconds)\n", expires);
printf(" Alter intervals, if needed.\n");
+ printf(" -U --user-endpoint <string>\n");
+ printf(" Any string that is used as user agent. (default = '%s')\n", user_agent);
printf(" -C --cc \"<osmo-cc arg>\" [--cc ...]\n");
printf(" Pass arguments to Osmo-CC endpoint. Use '-cc help' for description.\n");
}
@@ -166,6 +169,7 @@ static void add_options(void)
option_add(OPT_OPT_INTER, "options-interval", 1);
option_add(OPT_STUN_INTER, "stun-interval", 1);
option_add(OPT_EXPIRES, "expires", 1);
+ option_add('U', "user-agent", 1);
option_add('C', "cc", 1);
}
@@ -266,6 +270,9 @@ static int handle_options(int short_option, int argi, char **argv)
case OPT_EXPIRES:
expires = atoi(argv[argi]);
break;
+ case 'U':
+ user_agent = options_strdup(argv[argi]);
+ break;
case 'C':
if (!strcasecmp(argv[argi], "help")) {
osmo_cc_help();
@@ -328,7 +335,7 @@ int main(int argc, char *argv[])
}
if (!cc_argc || !!strncasecmp(cc_argv[0], "help", 4)) {
- sip_ep = sip_endpoint_create(send_no_ringing_after_progress, receive_no_ringing_after_progress, name, local_user, local_peer, remote_user, remote_peer, asserted_id, local_register, remote_register, register_user, register_peer, local_auth, remote_auth, auth_user, auth_password, auth_realm, public_ip, stun_server, register_interval, options_interval, stun_interval, expires);
+ sip_ep = sip_endpoint_create(user_agent, send_no_ringing_after_progress, receive_no_ringing_after_progress, name, local_user, local_peer, remote_user, remote_peer, asserted_id, local_register, remote_register, register_user, register_peer, local_auth, remote_auth, auth_user, auth_password, auth_realm, public_ip, stun_server, register_interval, options_interval, stun_interval, expires);
if (!sip_ep) {
PDEBUG(DSIP, DEBUG_ERROR, "SIP initializing failed!\n");
goto error;
diff --git a/src/sip/sip.c b/src/sip/sip.c
index e18c423..bda9261 100644
--- a/src/sip/sip.c
+++ b/src/sip/sip.c
@@ -1657,7 +1657,7 @@ static void register_option_timeout(struct timer *timer)
TAG_END());
}
-sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires)
+sip_endpoint_t *sip_endpoint_create(const char *user_agent, int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires)
{
sip_endpoint_t *sip_ep;
char local[256];
@@ -1721,6 +1721,7 @@ sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int rece
goto error;
}
nua_set_params(sip_ep->nua,
+ SIPTAG_USER_AGENT_STR(user_agent),
SIPTAG_ALLOW_STR("REGISTER,INVITE,ACK,BYE,CANCEL,OPTIONS,NOTIFY,INFO"),
NUTAG_APPL_METHOD("REGISTER"),
NUTAG_APPL_METHOD("INVITE"),
diff --git a/src/sip/sip.h b/src/sip/sip.h
index a1ca7bb..823b91e 100644
--- a/src/sip/sip.h
+++ b/src/sip/sip.h
@@ -108,7 +108,7 @@ typedef struct sip_call {
} call_t;
void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg);
-sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires);
+sip_endpoint_t *sip_endpoint_create(const char *user_agent, int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires);
void sip_endpoint_destroy(sip_endpoint_t *sip_ep);
int sip_init(int debug_level);
void sip_exit(void);