equal
deleted
inserted
replaced
141 xmpp_send_s10n(cleanjid, LM_MESSAGE_SUB_TYPE_SUBSCRIBE); |
141 xmpp_send_s10n(cleanjid, LM_MESSAGE_SUB_TYPE_SUBSCRIBE); |
142 |
142 |
143 roster_add_user(cleanjid, name, group, ROSTER_TYPE_USER, sub_pending, -1); |
143 roster_add_user(cleanjid, name, group, ROSTER_TYPE_USER, sub_pending, -1); |
144 g_free(cleanjid); |
144 g_free(cleanjid); |
145 buddylist_defer_build(); |
145 buddylist_defer_build(); |
146 |
146 scr_update_roster(); |
147 update_roster = TRUE; |
|
148 } |
147 } |
149 |
148 |
150 void xmpp_updatebuddy(const char *bjid, const char *name, const char *group) |
149 void xmpp_updatebuddy(const char *bjid, const char *name, const char *group) |
151 { |
150 { |
152 LmMessage *iq; |
151 LmMessage *iq; |
229 |
228 |
230 roster_del_user(cleanjid); |
229 roster_del_user(cleanjid); |
231 g_free(cleanjid); |
230 g_free(cleanjid); |
232 buddylist_defer_build(); |
231 buddylist_defer_build(); |
233 |
232 |
234 update_roster = TRUE; |
233 scr_update_roster(); |
235 } |
234 } |
236 |
235 |
237 void xmpp_request(const char *fjid, enum iqreq_type reqtype) |
236 void xmpp_request(const char *fjid, enum iqreq_type reqtype) |
238 { |
237 { |
239 GSList *resources, *p_res; |
238 GSList *resources, *p_res; |
875 lm_message_node_unref(rosternotes); |
874 lm_message_node_unref(rosternotes); |
876 rosternotes = NULL; |
875 rosternotes = NULL; |
877 // Reset carbons |
876 // Reset carbons |
878 carbons_reset(); |
877 carbons_reset(); |
879 // Update display |
878 // Update display |
880 update_roster = TRUE; |
879 scr_update_roster(); |
881 scr_update_buddy_window(); |
880 scr_update_buddy_window(); |
882 |
881 |
883 if (!reason) |
882 if (!reason) |
884 scr_LogPrint(LPRINT_LOGNORM, "Disconnected."); |
883 scr_LogPrint(LPRINT_LOGNORM, "Disconnected."); |
885 else |
884 else |
925 } else if (!strcmp(state_ns->name, "gone")) { |
924 } else if (!strcmp(state_ns->name, "gone")) { |
926 xep85->last_state_rcvd = ROSTER_EVENT_GONE; |
925 xep85->last_state_rcvd = ROSTER_EVENT_GONE; |
927 } |
926 } |
928 |
927 |
929 buddy_resource_setevents(sl_buddy->data, resource, xep85->last_state_rcvd); |
928 buddy_resource_setevents(sl_buddy->data, resource, xep85->last_state_rcvd); |
930 update_roster = TRUE; |
929 scr_update_roster(); |
931 #endif |
930 #endif |
932 } |
931 } |
933 |
932 |
934 static void gotmessage(LmMessageSubType type, const char *from, |
933 static void gotmessage(LmMessageSubType type, const char *from, |
935 const char *body, const char *enc, |
934 const char *body, const char *enc, |
985 } else { |
984 } else { |
986 buddy_settype(room_elt->data, ROSTER_TYPE_ROOM); |
985 buddy_settype(room_elt->data, ROSTER_TYPE_ROOM); |
987 } |
986 } |
988 |
987 |
989 buddylist_defer_build(); |
988 buddylist_defer_build(); |
990 scr_draw_roster(); |
989 scr_update_roster(); |
991 goto gotmessage_return; |
990 goto gotmessage_return; |
992 } |
991 } |
993 |
992 |
994 // We don't call the message_in hook if 'block_unsubscribed' is true and |
993 // We don't call the message_in hook if 'block_unsubscribed' is true and |
995 // this is a regular message from an unsubscribed user. |
994 // this is a regular message from an unsubscribed user. |
1692 g_free(buf); |
1691 g_free(buf); |
1693 } else if (mstype == LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED) { |
1692 } else if (mstype == LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED) { |
1694 /* The subscription request has been denied or a previously-granted |
1693 /* The subscription request has been denied or a previously-granted |
1695 subscription has been cancelled */ |
1694 subscription has been cancelled */ |
1696 roster_unsubscribed(from); |
1695 roster_unsubscribed(from); |
1697 update_roster = TRUE; |
1696 scr_update_roster(); |
1698 buf = g_strdup_printf("<%s> has cancelled your subscription to " |
1697 buf = g_strdup_printf("<%s> has cancelled your subscription to " |
1699 "their presence updates", from); |
1698 "their presence updates", from); |
1700 scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0); |
1699 scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO, 0); |
1701 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
1700 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
1702 g_free(buf); |
1701 g_free(buf); |
1704 g_free(r); |
1703 g_free(r); |
1705 return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
1704 return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
1706 } |
1705 } |
1707 |
1706 |
1708 if (newbuddy) |
1707 if (newbuddy) |
1709 update_roster = TRUE; |
1708 scr_update_roster(); |
1710 g_free(r); |
1709 g_free(r); |
1711 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
1710 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
1712 } |
1711 } |
1713 |
1712 |
1714 // TODO: Use the enum of loudmouth, when it's included in the header... |
1713 // TODO: Use the enum of loudmouth, when it's included in the header... |
2065 |
2064 |
2066 if (isonline || !st) { |
2065 if (isonline || !st) { |
2067 // We'll have to update the roster if we switch to/from offline because |
2066 // We'll have to update the roster if we switch to/from offline because |
2068 // we don't know the presences of buddies when offline... |
2067 // we don't know the presences of buddies when offline... |
2069 if (mystatus == offline || st == offline) |
2068 if (mystatus == offline || st == offline) |
2070 update_roster = TRUE; |
2069 scr_update_roster(); |
2071 |
2070 |
2072 if (isonline || mystatus || st) |
2071 if (isonline || mystatus || st) |
2073 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
2072 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
2074 hk_mystatuschange(0, mystatus, st, (st != invisible ? msg : "")); |
2073 hk_mystatuschange(0, mystatus, st, (st != invisible ? msg : "")); |
2075 #else |
2074 #else |