annotate mcabber/src/xmpp_s10n.c @ 1598:a087125d8fc8

Replace libjabber with loudmouth
author franky
date Sun, 11 Oct 2009 15:38:32 +0200
parents mcabber/src/jabglue.c@1802b926e3fa
children dcd5d4c75199
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1 /* See xmpp.c file for copyright and license details. */
1363
32077249de77 Warn if a MUC room without bookmark is renamed
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3 // xmpp_send_s10n(jid, subtype)
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
4 // Send a s10n message with the passed subtype
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
5 void xmpp_send_s10n(const char *bjid, LmMessageSubType type)
1384
f762805b3f42 Split function handle_presence_muc()
Mikael Berthe <mikael@lilotux.net>
parents: 1383
diff changeset
6 {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
7 LmMessage *x = lm_message_new_with_sub_type(bjid,
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
8 LM_MESSAGE_TYPE_PRESENCE,
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
9 type);
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
10 lm_connection_send(lconnection, x, NULL);
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
11 lm_message_unref(x);
986
ed697234bd39 Chat states receival (Alexis Hildebrandt)
Mikael Berthe <mikael@lilotux.net>
parents: 977
diff changeset
12 }
ed697234bd39 Chat states receival (Alexis Hildebrandt)
Mikael Berthe <mikael@lilotux.net>
parents: 977
diff changeset
13
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
14 static int evscallback_subscription(eviqs *evp, guint evcontext)
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
15 {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
16 char *barejid;
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
17 char *buf;
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
18
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
19 if (evcontext == EVS_CONTEXT_TIMEOUT) {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
20 scr_LogPrint(LPRINT_LOGNORM, "Event %s timed out, cancelled.",
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
21 evp->id);
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
22 return 0;
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
23 }
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
24 if (evcontext == EVS_CONTEXT_CANCEL) {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
25 scr_LogPrint(LPRINT_LOGNORM, "Event %s cancelled.", evp->id);
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
26 return 0;
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
27 }
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
28 if (!(evcontext & EVS_CONTEXT_USER))
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
29 return 0;
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
30
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
31 // Sanity check
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
32 if (!evp->data) {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
33 // Shouldn't happen, data should be set to the barejid.
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
34 scr_LogPrint(LPRINT_LOGNORM, "Error in evs callback.");
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
35 return 0;
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
36 }
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
37
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
38 // Ok, let's work now.
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
39 // evcontext: 0, 1 == reject, accept
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
40
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
41 barejid = evp->data;
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
42
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
43 if (evcontext & ~EVS_CONTEXT_USER) {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
44 // Accept subscription request
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
45 xmpp_send_s10n(barejid, LM_MESSAGE_SUB_TYPE_SUBSCRIBED);
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
46 buf = g_strdup_printf("<%s> is allowed to receive your presence updates",
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
47 barejid);
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
48 } else {
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
49 // Reject subscription request
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
50 xmpp_send_s10n(barejid, LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED);
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
51 buf = g_strdup_printf("<%s> won't receive your presence updates", barejid);
823
19c615fd071e New option "delete_on_reject"
Mikael Berthe <mikael@lilotux.net>
parents: 819
diff changeset
52 if (settings_opt_get_int("delete_on_reject")) {
19c615fd071e New option "delete_on_reject"
Mikael Berthe <mikael@lilotux.net>
parents: 819
diff changeset
53 // Remove the buddy from the roster if there is no current subscription
19c615fd071e New option "delete_on_reject"
Mikael Berthe <mikael@lilotux.net>
parents: 819
diff changeset
54 if (roster_getsubscription(barejid) == sub_none)
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
55 xmpp_delbuddy(barejid);
823
19c615fd071e New option "delete_on_reject"
Mikael Berthe <mikael@lilotux.net>
parents: 819
diff changeset
56 }
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
57 }
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1282
diff changeset
58 scr_WriteIncomingMessage(barejid, buf, 0, HBB_PREFIX_INFO, 0);
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
59 scr_LogPrint(LPRINT_LOGNORM, "%s", buf);
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
60 g_free(buf);
1213
4a7db2870685 Improve Private Storage detection.
Mikael Berthe <mikael@lilotux.net>
parents: 1212
diff changeset
61 return 0;
749
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
62 }
6c633adaae10 Use events system for subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 745
diff changeset
63