summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/res_pjsip/config_transport.c12
-rw-r--r--res/res_pjsip/location.c7
-rw-r--r--res/res_pjsip/pjsip_configuration.c34
-rw-r--r--res/res_pjsip_endpoint_identifier_ip.c4
4 files changed, 43 insertions, 14 deletions
diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c
index 0a56b9263..9996ddd08 100644
--- a/res/res_pjsip/config_transport.c
+++ b/res/res_pjsip/config_transport.c
@@ -349,7 +349,7 @@ static int transport_tls_method_handler(const struct aco_option *opt, struct ast
{
struct ast_sip_transport *transport = obj;
- if (!strcasecmp(var->value, "default")) {
+ if (ast_strlen_zero(var->value) || !strcasecmp(var->value, "default")) {
transport->tls.method = PJSIP_SSL_DEFAULT_METHOD;
} else if (!strcasecmp(var->value, "unspecified")) {
transport->tls.method = PJSIP_SSL_UNSPECIFIED_METHOD;
@@ -416,6 +416,10 @@ static int transport_tls_cipher_handler(const struct aco_option *opt, struct ast
struct ast_sip_transport *transport = obj;
pj_ssl_cipher cipher;
+ if (ast_strlen_zero(var->value)) {
+ return 0;
+ }
+
if (transport->tls.ciphers_num == (SIP_TLS_MAX_CIPHERS - 1)) {
return -1;
}
@@ -468,6 +472,12 @@ static int transport_localnet_handler(const struct aco_option *opt, struct ast_v
struct ast_sip_transport *transport = obj;
int error = 0;
+ if (ast_strlen_zero(var->value)) {
+ ast_free_ha(transport->localnet);
+ transport->localnet = NULL;
+ return 0;
+ }
+
if (!(transport->localnet = ast_append_ha("d", var->value, transport->localnet, &error))) {
return -1;
}
diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c
index d6015c758..d036ffa15 100644
--- a/res/res_pjsip/location.c
+++ b/res/res_pjsip/location.c
@@ -290,9 +290,14 @@ static int permanent_uri_handler(const struct aco_option *opt, struct ast_variab
{
struct ast_sip_aor *aor = obj;
const char *aor_id = ast_sorcery_object_get_id(aor);
- char *contacts = ast_strdupa(var->value);
+ char *contacts;
char *contact_uri;
+ if (ast_strlen_zero(var->value)) {
+ return 0;
+ }
+
+ contacts = ast_strdupa(var->value);
while ((contact_uri = strsep(&contacts, ","))) {
struct ast_sip_contact *contact;
char contact_id[strlen(aor_id) + strlen(contact_uri) + 2 + 1];
diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c
index 9166d3f33..a5fec8643 100644
--- a/res/res_pjsip/pjsip_configuration.c
+++ b/res/res_pjsip/pjsip_configuration.c
@@ -559,13 +559,9 @@ static int group_handler(const struct aco_option *opt,
struct ast_sip_endpoint *endpoint = obj;
if (!strncmp(var->name, "call_group", 10)) {
- if (!(endpoint->pickup.callgroup = ast_get_group(var->value))) {
- return -1;
- }
+ endpoint->pickup.callgroup = ast_get_group(var->value);
} else if (!strncmp(var->name, "pickup_group", 12)) {
- if (!(endpoint->pickup.pickupgroup = ast_get_group(var->value))) {
- return -1;
- }
+ endpoint->pickup.pickupgroup = ast_get_group(var->value);
} else {
return -1;
}
@@ -603,12 +599,18 @@ static int named_groups_handler(const struct aco_option *opt,
struct ast_sip_endpoint *endpoint = obj;
if (!strncmp(var->name, "named_call_group", 16)) {
- if (!(endpoint->pickup.named_callgroups =
+ if (ast_strlen_zero(var->value)) {
+ endpoint->pickup.named_callgroups =
+ ast_unref_namedgroups(endpoint->pickup.named_callgroups);
+ } else if (!(endpoint->pickup.named_callgroups =
ast_get_namedgroups(var->value))) {
return -1;
}
} else if (!strncmp(var->name, "named_pickup_group", 18)) {
- if (!(endpoint->pickup.named_pickupgroups =
+ if (ast_strlen_zero(var->value)) {
+ endpoint->pickup.named_pickupgroups =
+ ast_unref_namedgroups(endpoint->pickup.named_pickupgroups);
+ } else if (!(endpoint->pickup.named_pickupgroups =
ast_get_namedgroups(var->value))) {
return -1;
}
@@ -808,7 +810,15 @@ static int set_var_handler(const struct aco_option *opt,
{
struct ast_sip_endpoint *endpoint = obj;
struct ast_variable *new_var;
- char *name = ast_strdupa(var->value), *val = strchr(name, '=');
+ char *name;
+ char *val;
+
+ if (ast_strlen_zero(var->value)) {
+ return 0;
+ }
+
+ name = ast_strdupa(var->value);
+ val = strchr(name, '=');
if (!val) {
return -1;
@@ -1677,7 +1687,7 @@ int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_mod
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "direct_media_glare_mitigation", "none", direct_media_glare_mitigation_handler, direct_media_glare_mitigation_to_str, NULL, 0, 0);
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "disable_direct_media_on_nat", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, media.direct_media.disable_on_nat));
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "callerid", "", caller_id_handler, caller_id_to_str, NULL, 0, 0);
- ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "callerid_privacy", "", caller_id_privacy_handler, caller_id_privacy_to_str, NULL, 0, 0);
+ ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "callerid_privacy", "allowed", caller_id_privacy_handler, caller_id_privacy_to_str, NULL, 0, 0);
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "callerid_tag", "", caller_id_tag_handler, caller_id_tag_to_str, NULL, 0, 0);
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "trust_id_inbound", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, id.trust_inbound));
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "trust_id_outbound", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, id.trust_outbound));
@@ -1720,8 +1730,8 @@ int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_mod
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "from_domain", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, fromdomain));
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "mwi_from_user", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, subscription.mwi.fromuser));
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "rtp_engine", "asterisk", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, media.rtp.engine));
- ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_verify", "", dtls_handler, dtlsverify_to_str, NULL, 0, 0);
- ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_rekey", "", dtls_handler, dtlsrekey_to_str, NULL, 0, 0);
+ ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_verify", "no", dtls_handler, dtlsverify_to_str, NULL, 0, 0);
+ ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_rekey", "0", dtls_handler, dtlsrekey_to_str, NULL, 0, 0);
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_cert_file", "", dtls_handler, dtlscertfile_to_str, NULL, 0, 0);
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_private_key", "", dtls_handler, dtlsprivatekey_to_str, NULL, 0, 0);
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_cipher", "", dtls_handler, dtlscipher_to_str, NULL, 0, 0);
diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c
index 607e45402..43f1318a8 100644
--- a/res/res_pjsip_endpoint_identifier_ip.c
+++ b/res/res_pjsip_endpoint_identifier_ip.c
@@ -160,6 +160,10 @@ static int ip_identify_match_handler(const struct aco_option *opt, struct ast_va
char *input_string = ast_strdupa(var->value);
char *current_string;
+ if (ast_strlen_zero(var->value)) {
+ return 0;
+ }
+
while ((current_string = strsep(&input_string, ","))) {
struct ast_sockaddr *addrs;
int num_addrs = 0, error = 0, i;