From bb779271ae052726551f8d59b014ed609386c06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 29 May 2014 16:49:50 +0200 Subject: [PATCH] relay: don't send signals "buffer_clear" and "buffer_line_added" for relay raw/list buffers to clients (weechat protocol) --- .../relay/weechat/relay-weechat-protocol.c | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/relay/weechat/relay-weechat-protocol.c b/src/plugins/relay/weechat/relay-weechat-protocol.c index 863a9b018..dc553cd8d 100644 --- a/src/plugins/relay/weechat/relay-weechat-protocol.c +++ b/src/plugins/relay/weechat/relay-weechat-protocol.c @@ -29,11 +29,27 @@ #include "relay-weechat-protocol.h" #include "relay-weechat-msg.h" #include "relay-weechat-nicklist.h" +#include "../relay-buffer.h" #include "../relay-client.h" #include "../relay-config.h" #include "../relay-raw.h" +/* + * Checks if the buffer pointer is a relay buffer (relay raw/list). + * + * Returns: + * 1: buffer is a relay buffer (raw/list) + * 0: buffer is NOT a relay buffer + */ + +int +relay_weechat_is_relay_buffer (struct t_gui_buffer *buffer) +{ + return ((relay_raw_buffer && (buffer == relay_raw_buffer)) + || (relay_buffer && (buffer == relay_buffer))) ? 1 : 0; +} + /* * Gets buffer pointer with argument from a command. * @@ -626,7 +642,7 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal, else if (strcmp (signal, "buffer_cleared") == 0) { ptr_buffer = (struct t_gui_buffer *)signal_data; - if (!ptr_buffer) + if (!ptr_buffer || relay_weechat_is_relay_buffer (ptr_buffer)) return WEECHAT_RC_OK; /* send signal only if sync with flag "buffer" */ @@ -687,7 +703,7 @@ relay_weechat_protocol_signal_buffer_cb (void *data, const char *signal, ptr_buffer = weechat_hdata_pointer (ptr_hdata_line_data, ptr_line_data, "buffer"); - if (!ptr_buffer || (relay_raw_buffer && (ptr_buffer == relay_raw_buffer))) + if (!ptr_buffer || relay_weechat_is_relay_buffer (ptr_buffer)) return WEECHAT_RC_OK; /* send signal only if sync with flag "buffer" */