diff --git a/conf/directory/default/skinny-example.xml b/conf/directory/default/skinny-example.xml index 2f19710136..8a61ae5be5 100644 --- a/conf/directory/default/skinny-example.xml +++ b/conf/directory/default/skinny-example.xml @@ -3,6 +3,7 @@ diff --git a/src/mod/endpoints/mod_skinny/mod_skinny.h b/src/mod/endpoints/mod_skinny/mod_skinny.h index 99b52b6fb8..3dec3e9abb 100644 --- a/src/mod/endpoints/mod_skinny/mod_skinny.h +++ b/src/mod/endpoints/mod_skinny/mod_skinny.h @@ -135,6 +135,7 @@ struct listener { uint32_t device_type; char firmware_version[16]; + char *default_soft_key_set_set; switch_socket_t *sock; switch_memory_pool_t *pool; diff --git a/src/mod/endpoints/mod_skinny/skinny_server.c b/src/mod/endpoints/mod_skinny/skinny_server.c index de4fdbd1cc..7325a6cb5f 100644 --- a/src/mod/endpoints/mod_skinny/skinny_server.c +++ b/src/mod/endpoints/mod_skinny/skinny_server.c @@ -999,6 +999,8 @@ switch_status_t skinny_handle_register(listener_t *listener, skinny_message_t *r const char *value = switch_xml_attr_soft(xparam, "value"); if (!strcasecmp(name, "skinny-firmware-version")) { strncpy(listener->firmware_version, value, 16); + } else if (!strcasecmp(name, "skinny-default-soft-key-set-set")) { + listener->default_soft_key_set_set = switch_core_strdup(profile->pool, value); } } } @@ -1693,14 +1695,19 @@ end: switch_status_t skinny_handle_soft_key_set_request(listener_t *listener, skinny_message_t *request) { - skinny_message_t *message; + skinny_message_t *message = NULL; - message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, "default"); + if (listener->default_soft_key_set_set) { + message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, listener->default_soft_key_set_set); + } + if (!message) { + message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, "default"); + } if (message) { skinny_send_reply(listener, message); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "Profile %s doesn't have a default . Profile ignored.\n", listener->profile->name); + "Profile %s doesn't have a default .\n", listener->profile->name); } /* Init the states */