Mercurial > pidgin.yaz
diff src/server.c @ 8562:e3c059c3d92d
[gaim-migrate @ 9306]
" This patch adds a call-back slot to the
GaimPluginProtocolInfo structure which allows a prpl to
receive notification when a chat invitation has been
rejected by the local user.
The patch modifies server.c to trigger the call-back,
and adds NULL entries into the existing protocols to
make them match the updated ABI.
This is necessary for a protocol plugin which I have
written, as the protocol needs to take action in the
event of a conference rejection. It is my understanding
that the Yahoo prpl may also benefit from this patch
(it's supposed to be sending the rejection upstream to
the server too, as I understand it)" --Christopher (siege) O'Brien
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 02 Apr 2004 06:54:52 +0000 |
parents | f5b0e1a4b0c7 |
children | 88988327a4e0 |
line wrap: on
line diff
--- a/src/server.c Fri Apr 02 06:18:14 2004 +0000 +++ b/src/server.c Fri Apr 02 06:54:52 2004 +0000 @@ -714,6 +714,18 @@ prpl_info->join_chat(g, data); } + +void serv_reject_chat(GaimConnection *g, GHashTable *data) +{ + GaimPluginProtocolInfo *prpl_info = NULL; + + if (g != NULL && g->prpl != NULL) + prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); + + if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->reject_chat) + prpl_info->reject_chat(g, data); +} + void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) { GaimPluginProtocolInfo *prpl_info = NULL; @@ -1323,10 +1335,17 @@ g_free(cid); } + +static void chat_invite_reject(struct chat_invite_data *cid) +{ + serv_reject_chat(cid->gc, cid->components); + chat_invite_data_free(cid); +} + + static void chat_invite_accept(struct chat_invite_data *cid) { serv_join_chat(cid->gc, cid->components); - chat_invite_data_free(cid); } @@ -1359,7 +1378,7 @@ gaim_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), buf2, 0, cid, G_CALLBACK(chat_invite_accept), - G_CALLBACK(chat_invite_data_free)); + G_CALLBACK(chat_invite_reject)); } GaimConversation *serv_got_joined_chat(GaimConnection *gc,