diff --git a/libs/libdingaling/.update b/libs/libdingaling/.update index b5c0a1c0d9..5463956efa 100644 --- a/libs/libdingaling/.update +++ b/libs/libdingaling/.update @@ -1 +1 @@ -Fri Dec 1 21:13:04 EST 2006 +Tue Dec 12 11:55:02 EST 2006 diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c index c4ebf900e3..433939d72c 100644 --- a/libs/libdingaling/src/libdingaling.c +++ b/libs/libdingaling/src/libdingaling.c @@ -701,6 +701,8 @@ static int on_presence(void *user_data, ikspak *pak) if (type && !strcasecmp(type, "unavailable")) { signal = LDL_SIGNAL_PRESENCE_OUT; + } else if (type && !strcasecmp(type, "probe")) { + signal = LDL_SIGNAL_PRESENCE_PROBE; } else { signal = LDL_SIGNAL_PRESENCE_IN; } @@ -725,20 +727,15 @@ static int on_presence(void *user_data, ikspak *pak) } - if (resource && strstr(resource, "talk") && (buffer = apr_hash_get(handle->probe_hash, id, APR_HASH_KEY_STRING))) { apr_cpystrn(buffer->buf, from, buffer->len); fflush(stderr); buffer->hit = 1; } - if (!type || (type && strcasecmp(type, "probe"))) { - - if (handle->session_callback) { - handle->session_callback(handle, NULL, signal, to, id, status ? status : "n/a", show ? show : "n/a"); - } - } - + if (handle->session_callback) { + handle->session_callback(handle, NULL, signal, to, id, status ? status : "n/a", show ? show : "n/a"); + } return IKS_FILTER_EAT; } diff --git a/libs/libdingaling/src/libdingaling.h b/libs/libdingaling/src/libdingaling.h index 2793b7fb08..c74c8b5b00 100644 --- a/libs/libdingaling/src/libdingaling.h +++ b/libs/libdingaling/src/libdingaling.h @@ -125,6 +125,7 @@ typedef enum { LDL_SIGNAL_MSG, LDL_SIGNAL_PRESENCE_IN, LDL_SIGNAL_PRESENCE_OUT, + LDL_SIGNAL_PRESENCE_PROBE, LDL_SIGNAL_ROSTER, LDL_SIGNAL_SUBSCRIBE, LDL_SIGNAL_UNSUBSCRIBE, diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c index 546aba7393..2b2958a286 100644 --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c @@ -2107,7 +2107,7 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi } if (is_special(to)) { - ldl_handle_send_presence(profile->handle, to, from, NULL, "unknown", "Click To Call"); + ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call"); } #if 0 @@ -2116,7 +2116,7 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi switch_event_add_header(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "login", "%s", profile->login); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "from", "%s", to); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); + //switch_event_add_header(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "status", "Click To Call"); switch_event_fire(&event); } @@ -2130,6 +2130,11 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi switch_event_fire(&event); } break; + case LDL_SIGNAL_PRESENCE_PROBE: + if (is_special(to)) { + ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call"); + } + break; case LDL_SIGNAL_PRESENCE_IN: if ((sql = switch_mprintf("update subscriptions set show='%q', status='%q' where sub_from='%q'", msg, subject, from))) { @@ -2148,7 +2153,7 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi if (is_special(to)) { - ldl_handle_send_presence(profile->handle, to, from, NULL, "unknown", "Click To Call"); + ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call"); } #if 0 if (is_special(to)) { @@ -2156,13 +2161,14 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi switch_event_add_header(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "login", "%s", profile->login); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "from", "%s", to); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); + //switch_event_add_header(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "status", "Click To Call"); switch_event_fire(&event); } } break; #endif + case LDL_SIGNAL_PRESENCE_OUT: if ((sql = switch_mprintf("update subscriptions set show='%q', status='%q' where sub_from='%q'", msg, subject, from))) {