FS-6865 #resolve add XMPP priority to dingaling

This commit is contained in:
Brian West 2014-10-01 10:40:57 -05:00
parent a39db86863
commit 8e408e9abe
3 changed files with 21 additions and 2 deletions

View File

@ -127,6 +127,7 @@ struct ldl_handle {
char *password;
char *server;
char *status_msg;
char *priority;
uint16_t port;
int features;
int counter;
@ -1470,7 +1471,7 @@ static int on_commands(void *user_data, ikspak *pak)
static int on_result(void *user_data, ikspak *pak)
{
ldl_handle_t *handle = user_data;
iks *msg, *ctag;
iks *msg, *ctag, *tag;
if ((msg = iks_make_pres (IKS_SHOW_AVAILABLE, handle->status_msg))) {
ctag = iks_insert(msg, "c");
@ -1480,6 +1481,11 @@ static int on_result(void *user_data, ikspak *pak)
iks_insert_attrib(ctag, "client", "libdingaling");
iks_insert_attrib(ctag, "xmlns", "http://jabber.org/protocol/caps");
if (handle->priority && strlen(handle->priority)) {
tag = iks_insert (msg, "priority");
iks_insert_cdata(tag, handle->priority, 0);
}
apr_queue_push(handle->queue, msg);
msg = NULL;
}
@ -3117,6 +3123,7 @@ ldl_status ldl_handle_init(ldl_handle_t **handle,
char *server,
ldl_user_flag_t flags,
char *status_msg,
char *priority,
ldl_loop_callback_t loop_callback,
ldl_session_callback_t session_callback,
ldl_response_callback_t response_callback,
@ -3162,6 +3169,10 @@ ldl_status ldl_handle_init(ldl_handle_t **handle,
new_handle->status_msg = apr_pstrdup(pool, status_msg);
}
if (priority) {
new_handle->priority = apr_pstrdup(pool, priority);
}
if (loop_callback) {
new_handle->loop_callback = loop_callback;
}

View File

@ -666,6 +666,7 @@ ldl_status ldl_handle_init(ldl_handle_t **handle,
char *server,
ldl_user_flag_t flags,
char *status_msg,
char *priority,
ldl_loop_callback_t loop_callback,
ldl_session_callback_t session_callback,
ldl_response_callback_t response_callback,

View File

@ -124,6 +124,7 @@ struct mdl_profile {
char *login;
char *password;
char *message;
char *priority;
#ifdef AUTO_REPLY
char *auto_reply;
#endif
@ -2844,7 +2845,7 @@ static switch_status_t init_profile(mdl_profile_t *profile, uint8_t login)
profile->login,
profile->password,
profile->server,
profile->user_flags, profile->message, handle_loop, handle_signalling, handle_response, profile) == LDL_STATUS_SUCCESS) {
profile->user_flags, profile->message, profile->priority, handle_loop, handle_signalling, handle_response, profile) == LDL_STATUS_SUCCESS) {
profile->purge = SWITCH_FALSE;
switch_thread_rwlock_create(&profile->rwlock, module_pool);
@ -2923,6 +2924,8 @@ static void set_profile_val(mdl_profile_t *profile, char *var, char *val)
profile->name = switch_core_strdup(module_pool, val);
} else if (!strcasecmp(var, "message") && !zstr(val)) {
profile->message = switch_core_strdup(module_pool, val);
} else if (!strcasecmp(var, "priority") && !zstr(val)) {
profile->priority = switch_core_strdup(module_pool, val);
} else if (!strcasecmp(var, "local-network-acl") && !zstr(val)) {
profile->local_network = switch_core_strdup(module_pool, val);
} else if (!strcasecmp(var, "rtp-ip")) {
@ -3189,6 +3192,8 @@ static switch_bool_t match_profile(mdl_profile_t *profile, mdl_profile_t *new_pr
(new_profile->password && profile->password && !strcasecmp(new_profile->password, profile->password))) &&
((!new_profile->message && !profile->message) ||
(new_profile->message && profile->message && !strcasecmp(new_profile->message, profile->message))) &&
((!new_profile->priority && !profile->priority) ||
(new_profile->priority && profile->priority && !strcasecmp(new_profile->priority, profile->priority))) &&
((!new_profile->avatar && !profile->avatar) || (new_profile->avatar && profile->avatar && !strcasecmp(new_profile->avatar, profile->avatar))) &&
#ifdef AUTO_REPLY
((!new_profile->auto_reply && !profile->auto_reply) ||
@ -3310,6 +3315,7 @@ static switch_status_t soft_reload(void)
switch_set_flag(profile, TFLAG_AUTO);
profile->message = "";
profile->priority = "";
profile->user_flags |= LDL_FLAG_COMPONENT;
switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, module_pool);
switch_snprintf(dbname, sizeof(dbname), "dingaling_%s", profile->name);
@ -3440,6 +3446,7 @@ static switch_status_t load_config(void)
switch_set_flag(profile, TFLAG_AUTO);
profile->message = "";
profile->priority = "";
profile->user_flags |= LDL_FLAG_COMPONENT;
switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, module_pool);
switch_snprintf(dbname, sizeof(dbname), "dingaling_%s", profile->name);