On Fri, 26 Aug 2011 08:17:00 -0400
Adam Stokes <ajs(a)redhat.com> wrote:
On Fri, 26 Aug 2011 07:41:34 -0400
Russell Bryant <rbryant(a)redhat.com> wrote:
> On 08/25/2011 11:51 PM, Adam Stokes wrote:
> > - qmf/qpid doesn't allow null as an acceptable return argument
> > so raising an exception to alert end user of possible status
> > conflicts
> > resolves rhbz 733384, 733451
>
> > } else if (methodName == "is_configured") {
> > status =
> > mh_sysconfig_is_configured(args["key"].asString().c_str());
> > + if (!status) {
> > + goto bail;
> > + }
>
> What does a NULL return from mh_sysconfig_is_configured() really
> mean? Is it just that a configuration request with this key hasn't
> been attempted? I don't think we should raise an exception on these
> cases. I think we should just handle it gracefully.
>
> addReturnArgument("status", status ? status : "unknown");
>
I did try this but an exception was still occuring telling me null is
not valid.
_______________________________________________
Matahari mailing list
Matahari(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/matahari
Here is the error with the above implemented:
terminate called after throwing an instance of 'qmf::QmfException'
what(): Output argument is unknown or the type is incompatible
(gdb) bt
#0 0x00000034688352d5 in __GI_raise (sig=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x0000003468836beb in __GI_abort () at abort.c:93
#2 0x000000346e8bbffd in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib64/libstdc++.so.6
#3 0x000000346e8ba1b6 in ?? () from /usr/lib64/libstdc++.so.6
#4 0x000000346e8ba1e3 in std::terminate() () from /usr/lib64/libstdc++.so.6
#5 0x000000346e8ba2de in __cxa_throw () from /usr/lib64/libstdc++.so.6
#6 0x000000346dc2c5c0 in qmf::AgentEventImpl::addReturnArgument(std::string const&,
qpid::types::Variant const&, std::string const&) () from /usr/lib64/libqmf2.so.1
#7 0x000000000040436b in ConfigAgent::invoke (this=<optimized out>, session=...,
event=...,
user_data=<optimized out>)
at /home/akimbo/hacking/projects/matahari/src/sysconfig/sysconfig-qmf.cpp:115
#8 0x00007fe7d8c7226a in mh_qpid_callback (session=..., event=...,
user_data=0x7fff8e08bb40)
at /home/akimbo/hacking/projects/matahari/src/lib/mh_agent.cpp:128
#9 0x00007fe7d8c72091 in mainloop_qmf_dispatch (source=0x20a1000, callback=<optimized
out>,
userdata=<optimized out>) at
/home/akimbo/hacking/projects/matahari/src/lib/mh_agent.cpp:580
#10 0x000000346a8427ed in g_main_dispatch (context=0x20a0b10) at gmain.c:2441
#11 g_main_context_dispatch (context=0x20a0b10) at gmain.c:3014
#12 0x000000346a842fc8 in g_main_context_iterate (context=0x20a0b10, block=<optimized
out>,
dispatch=1, self=<optimized out>) at gmain.c:3092
#13 0x000000346a84360d in g_main_loop_run (loop=0x2098b20) at gmain.c:3300
#14 0x00000000004027d3 in main (argc=3, argv=<optimized out>)
at /home/akimbo/hacking/projects/matahari/src/sysconfig/sysconfig-qmf.cpp:59
(gdb) f 7
#7 0x000000000040436b in ConfigAgent::invoke (this=<optimized out>, session=...,
event=...,
user_data=<optimized out>)
at /home/akimbo/hacking/projects/matahari/src/sysconfig/sysconfig-qmf.cpp:115
115 event.addReturnArgument("query", data ? data :
"unknown");
(gdb) l
110 } else if (methodName == "query") {
111 const char *data = NULL;
112 data = mh_sysconfig_query(args["query"].asString().c_str(),
113 args["flags"].asUint32(),
114 args["scheme"].asString().c_str());
115 event.addReturnArgument("query", data ? data :
"unknown");
116 } else if (methodName == "is_configured") {
117 status =
mh_sysconfig_is_configured(args["key"].asString().c_str());
118 if (!status) {
119 goto bail;