diff --git a/src/dfuzzer-test-server.c b/src/dfuzzer-test-server.c index c722110..4060df5 100644 --- a/src/dfuzzer-test-server.c +++ b/src/dfuzzer-test-server.c @@ -61,6 +61,14 @@ static const gchar introspection_xml[] = " " " " " " +" " +" " +" " +" " +" " +" " +" " +" " " " ""; @@ -71,10 +79,11 @@ static void handle_method_call( const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { + _cleanup_(g_freep) gchar *response = NULL; + g_printf("->[handle_method_call]\n"); if (g_strcmp0(method_name, "df_hello") == 0) { - _cleanup_(g_freep) gchar *response = NULL; gchar *msg; int n; @@ -99,6 +108,22 @@ static void handle_method_call( pause(); else if (g_strcmp0(method_name, "df_noreply") == 0) return; + else if (g_strcmp0(method_name, "df_complex_sig_1") == 0) { + gchar *str = NULL; + unsigned u; + int i; + + g_variant_get(parameters, "(iu&s@a{ss}@a(uiyo))", &i, &u, &str, NULL, NULL); + if (strlen(str) <= 0) { + g_printf("Got unexpected data for method %s\n", method_name); + abort(); + } + + g_printf("%s: string size: %zu\n", method_name, strlen(str)); + + response = g_strdup_printf("%s", str); + g_dbus_method_invocation_return_value(invocation, g_variant_new("(s)", response)); + } } // Virtual table for handling properties and method calls for a D-Bus interface.