diff options
Diffstat (limited to 'test/navigation/patches/bustle_filter.patch')
-rw-r--r-- | test/navigation/patches/bustle_filter.patch | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/test/navigation/patches/bustle_filter.patch b/test/navigation/patches/bustle_filter.patch deleted file mode 100644 index 9208abe..0000000 --- a/test/navigation/patches/bustle_filter.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff -cr bustle-0.4.0/c-sources/pcap-monitor.c bustle-0.4.0.work/c-sources/pcap-monitor.c -*** bustle-0.4.0/c-sources/pcap-monitor.c Wed Jan 18 11:32:49 2012 ---- bustle-0.4.0.work/c-sources/pcap-monitor.c Thu Apr 19 13:59:23 2012 -*************** -*** 20,27 **** ---- 20,31 ---- - #include "pcap-monitor.h" - - #include <string.h> -+ #include <stdlib.h> - #include <pcap/pcap.h> - -+ const char *filter_str; -+ GHashTable *filter_hash; -+ - typedef struct { - struct timeval ts; - GByteArray *blob; -*************** -*** 230,235 **** ---- 234,240 ---- - - /* The cast is necessary because libpcap is weird. */ - pcap_dump ((u_char *) td->dumper, &hdr, message->blob->data); -+ pcap_dump_flush(td->dumper); - g_byte_array_unref (message->blob); - g_slice_free (Message, message); - } -*************** -*** 260,266 **** - } - - GDBusMessage * -! filter ( - GDBusConnection *connection, - GDBusMessage *message, - gboolean is_incoming, ---- 265,271 ---- - } - - GDBusMessage * -! filter_ok ( - GDBusConnection *connection, - GDBusMessage *message, - gboolean is_incoming, -*************** -*** 318,323 **** ---- 323,399 ---- - } - } - -+ gboolean -+ filter_match(GDBusMessage *message) -+ { -+ const char *method=g_strdup_printf("%s.%s",g_dbus_message_get_interface(message),g_dbus_message_get_member(message)); -+ const char *filter=filter_str; -+ gboolean match=FALSE; -+ while (*filter) { -+ int flen; -+ gboolean part_match=TRUE; -+ if (*filter=='-') { -+ filter++; -+ part_match=FALSE; -+ } -+ flen=strcspn(filter,","); -+ if (!strncmp(method, filter, flen)) -+ match=part_match; -+ filter+=flen; -+ if (*filter==',') -+ filter++; -+ } -+ g_free((gpointer)method); -+ return match; -+ } -+ -+ GDBusMessage * -+ filter( -+ GDBusConnection *connection, -+ GDBusMessage *message, -+ gboolean is_incoming, -+ gpointer user_data) -+ { -+ char *id, *reply_id, *found; -+ const gchar *dest; -+ if (!filter_str) -+ return filter_ok(connection, message, is_incoming, user_data); -+ dest = g_dbus_message_get_destination (message); -+ if (!is_incoming || g_strcmp0 (dest, g_dbus_connection_get_unique_name (connection)) == 0) -+ return message; -+ switch(g_dbus_message_get_message_type(message)) { -+ case G_DBUS_MESSAGE_TYPE_METHOD_CALL: -+ if (!filter_match(message)) { -+ g_clear_object (&message); -+ return NULL; -+ } -+ id=g_strdup_printf("%s:%u",g_dbus_message_get_sender(message), g_dbus_message_get_serial(message)); -+ g_hash_table_insert(filter_hash, id, id); -+ return filter_ok(connection, message, is_incoming, user_data); -+ case G_DBUS_MESSAGE_TYPE_SIGNAL: -+ if (!filter_match(message)) { -+ g_clear_object (&message); -+ return NULL; -+ } -+ case G_DBUS_MESSAGE_TYPE_INVALID: -+ return filter_ok(connection, message, is_incoming, user_data); -+ case G_DBUS_MESSAGE_TYPE_METHOD_RETURN: -+ case G_DBUS_MESSAGE_TYPE_ERROR: -+ reply_id=g_strdup_printf("%s:%u",g_dbus_message_get_destination(message), g_dbus_message_get_reply_serial(message)); -+ found=g_hash_table_lookup(filter_hash, reply_id); -+ g_free(reply_id); -+ if (found) { -+ g_hash_table_remove(filter_hash, found); -+ g_free(found); -+ return filter_ok(connection, message, is_incoming, user_data); -+ } -+ g_clear_object (&message); -+ return NULL; -+ } -+ g_clear_object (&message); -+ return NULL; -+ } -+ - static gboolean - match_everything ( - GDBusProxy *bus, -*************** -*** 565,570 **** ---- 641,649 ---- - const gchar *filename, - GError **error) - { -+ filter_str=getenv("BUSTLE_FILTER"); -+ if (!filter_hash) -+ filter_hash=g_hash_table_new(g_str_hash, g_str_equal); - return g_initable_new ( - BUSTLE_TYPE_PCAP_MONITOR, NULL, error, - "bus-type", bus_type, -Only in bustle-0.4.0.work: dist |