switch_mutex_unlock(globals.mutex);
}
+static int flush_listener_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
+ char *profile_name = argv[0];
+ char *value = argv[1];
+ char *domain_name = argv[2];
+ char *device_name = argv[3];
+ char *device_instance = argv[4];
+
+ char *token = switch_mprintf("skinny/%q/%q/%q:%q", profile_name, value, device_name, device_instance);
+ switch_core_del_registration(value, domain_name, token);
+ switch_safe_free(token);
+
+ return 0;
+}
+
static void flush_listener(listener_t *listener)
{
skinny_profile_t *profile = listener->profile;
char *sql;
+ if ((sql = switch_mprintf(
+ "SELECT '%q', value, '%q', '%q', '%d' "
+ "FROM skinny_lines "
+ "WHERE device_name='%s' AND device_instance=%d "
+ "ORDER BY position",
+ profile->name, profile->domain, listener->device_name, listener->device_instance,
+ listener->device_name, listener->device_instance
+ ))) {
+ skinny_execute_sql_callback(profile, profile->sql_mutex, sql, flush_listener_callback, NULL);
+ switch_safe_free(sql);
+ }
+
if ((sql = switch_mprintf(
"DELETE FROM skinny_devices "
"WHERE name='%s' and instance=%d",
}
if ((xbuttons = switch_xml_child(xskinny, "buttons"))) {
uint32_t line_instance = 1;
+ char *network_ip = inet_ntoa(request->data.reg.ip);
+ int network_port = 0;
+ char network_port_c[6];
+ snprintf(network_port_c, sizeof(network_port_c), "%d", network_port);
for (xbutton = switch_xml_child(xbuttons, "button"); xbutton; xbutton = xbutton->next) {
uint32_t position = atoi(switch_xml_attr_soft(xbutton, "position"));
uint32_t type = skinny_str2button(switch_xml_attr_soft(xbutton, "type"));
label, value, caller_name,
ring_on_idle, ring_on_active, busy_trigger,
forward_all, forward_busy, forward_noanswer, noanswer_duration))) {
+ char *token, *url;
skinny_execute_sql(profile, sql, profile->sql_mutex);
switch_safe_free(sql);
+ token = switch_mprintf("skinny/%q/%q/%q:%d", profile->name, value, request->data.reg.device_name, request->data.reg.instance);
+ url = switch_mprintf("skinny/%q/%q", profile->name, value);
+ switch_core_add_registration(value, profile->domain, token, url, 0, network_ip, network_port_c, "tcp");
+ switch_safe_free(token);
+ switch_safe_free(url);
}
if (line_instance == 1) {
switch_event_t *message_query_event = NULL;