diff -urN dnsmasq-2.46.orig/src/dbus.c dnsmasq-2.46/src/dbus.c --- dnsmasq-2.46.orig/src/dbus.c 2008-11-14 21:02:08.000000000 +0100 +++ dnsmasq-2.46/src/dbus.c 2008-12-15 10:45:48.000000000 +0100 @@ -21,6 +21,42 @@ #define DBUS_API_SUBJECT_TO_CHANGE #include +const char* introspection_xml = +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n"; + struct watch { DBusWatch *watch; struct watch *next; @@ -229,7 +265,15 @@ { char *method = (char *)dbus_message_get_member(message); - if (strcmp(method, "GetVersion") == 0) + if (dbus_message_is_method_call(message, DBUS_INTERFACE_INTROSPECTABLE, "Introspect")) + { + DBusMessage *reply = dbus_message_new_method_return(message); + + dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection_xml, DBUS_TYPE_INVALID); + dbus_connection_send (connection, reply, NULL); + dbus_message_unref (reply); + } + else if (strcmp(method, "GetVersion") == 0) { char *v = VERSION; DBusMessage *reply = dbus_message_new_method_return(message);