mcabber/mcabber/xmpp.c
changeset 2292 f181418db215
parent 2291 0d350e979bde
child 2294 2a9569fd7644
equal deleted inserted replaced
2291:0d350e979bde 2292:f181418db215
   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