Bug 57292

Summary: D-Bus Introspection XML file not matching
Product: SyncEvolution Reporter: Eugenio Parodi <eugenio.parodi>
Component: SyncEvolutionAssignee: Patrick Ohly <patrick.ohly>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: high CC: syncevolution-issues
Version: 1.3.99.1   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Eugenio Parodi 2012-11-19 20:18:54 UTC
Trying to retrieve the "D-Bus Introspection XML file" with this command:

  dbus-send --session \
            --dest=org._01.pim.contacts \
            --print-reply=literal \
            /org/01/pim/contacts \
            org.freedesktop.DBus.Introspectable.Introspect

I noticed that some of the functions seems incomplete
(some return values are not shown as expected):

1)   GetSortOrder
     <method name="GetSortOrder"/>
Should be
     <method name="GetSortOrder">                                         
          <arg type="s" direction="out"/>
     </method>

2)   GetAllPeers
     <method name="GetAllPeers"/>
Should be (I think)
     <method name="GetAllPeers">
          <arg type="as" direction="out"/>
     </method>

3)   Search
The return object seems missing.
Comment 1 Patrick Ohly 2012-11-21 19:05:43 UTC
The problem is in the C++ D-Bus binding. If the method that gets bound to D-Bus returns a value, that value is ignored in the signature:
 int foo() => no out parameter

It works when the method is declared as having a retval:
 void foo (int &result) => integer out parameter

This problem exists for both the libdbus and the GIO D-Bus bindings. In SyncEvolution it affects methods like GetVersions().

I have patches ready.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.