diff -Nru pidgin-mtn.orig/libpurple/conversation.c pidgin-mtn/libpurple/conversation.c --- pidgin-mtn.orig/libpurple/conversation.c 2007-05-17 03:52:42.000000000 +0200 +++ pidgin-mtn/libpurple/conversation.c 2007-05-17 04:16:29.000000000 +0200 @@ -2081,6 +2081,13 @@ PURPLE_SUBTYPE_CONVERSATION), purple_value_new(PURPLE_TYPE_UINT)); + purple_signal_register(handle, "blocked-im-msg", + purple_marshal_VOID__POINTER_POINTER, + NULL, 2, + purple_value_new(PURPLE_TYPE_SUBTYPE, + PURPLE_SUBTYPE_ACCOUNT), + purple_value_new_outgoing(PURPLE_TYPE_STRING)); + purple_signal_register(handle, "writing-chat-msg", purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, purple_value_new(PURPLE_TYPE_BOOLEAN), 5, diff -Nru pidgin-mtn.orig/libpurple/server.c pidgin-mtn/libpurple/server.c --- pidgin-mtn.orig/libpurple/server.c 2007-05-17 03:52:44.000000000 +0200 +++ pidgin-mtn/libpurple/server.c 2007-05-17 04:18:35.000000000 +0200 @@ -437,8 +437,11 @@ if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->set_permit_deny == NULL) { /* protocol does not support privacy, handle it ourselves */ - if (!purple_privacy_check(account, who)) + if (!purple_privacy_check(account, who)) { + purple_signal_emit(purple_conversations_get_handle(), + "blocked-im-msg", account, &who); return; + } } /* @@ -660,8 +663,11 @@ account = purple_connection_get_account(gc); if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->set_permit_deny == NULL) { /* protocol does not support privacy, handle it ourselves */ - if (!purple_privacy_check(account, who)) + if (!purple_privacy_check(account, who)) { + purple_signal_emit(purple_conversations_get_handle(), + "blocked-im-msg", account, &who); return; + } } plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(