From ed243e777256e21b82f197600e4ed6905e39e617 Mon Sep 17 00:00:00 2001 From: Stephane Bortzmeyer Date: Wed, 16 Jun 2004 09:47:37 +0000 Subject: [PATCH] * Proper parsing (see test-domquery.c) * Debugging code (segfaults only when dlopened) --- SRC/contrib/adamsnames/domquery.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/SRC/contrib/adamsnames/domquery.c b/SRC/contrib/adamsnames/domquery.c index 150e06d..4f15365 100644 --- a/SRC/contrib/adamsnames/domquery.c +++ b/SRC/contrib/adamsnames/domquery.c @@ -55,7 +55,7 @@ init (int argc, char **argv) } hostname = (char *) poptGetArg (poptcon); /* Not used */ domain = (char *) poptGetArg (poptcon); - if (domain == NULL) + if (domain == NULL || !strcmp(domain, "")) domquery_usage ("Mandatory request missing"); return NULL; @@ -70,6 +70,8 @@ start_raw() { /* Initialize our error-handling environment. */ xmlrpc_env_init (&env); + printf ("env initialized\n"); + } int @@ -77,19 +79,23 @@ execute () { xmlrpc_value *result; xmlrpc_value *domain_h; - xmlrpc_bool found; + xmlrpc_int32 found; xmlrpc_value *error; - char *dst; - dst = HTAnchor_findAddress(ENDPOINT); + /* char *dst; + dst = HTAnchor_findAddress(ENDPOINT); */ + printf ("Ready to call\n"); /* Call the server */ result = xmlrpc_client_call (&env, ENDPOINT, "domquery", "(s)", domain); die_if_fault_occurred (&env); + printf ("Call done, now parsing\n"); - xmlrpc_parse_value (&env, result, "{{},b,[]*}", "domain", domain_h, "found", &found, "error", error); + xmlrpc_parse_value (&env, result, "{s:i,*}", "found", &found); die_if_fault_occurred (&env); if (found) { printf ("%s is there\n", domain); + xmlrpc_parse_value (&env, result, "{s:S,i,s:A,*}", "domain", &domain_h, "found", &found, "error", &error); + die_if_fault_occurred (&env); } /* Dispose of our result value. */ xmlrpc_DECREF (result);