Ticket #714 (closed defect: fixed)

Opened 6 years ago

Last modified 4 years ago

SyncML-Plugin seems to hang in endless-loop relating missing (but not required) Status

Reported by: cc Owned by: bellmich
Priority: high Milestone:
Component: Plugin: syncml Version: 0.36
Severity: critical Keywords: syncml funambol 0.36 Status 0.22
Cc:

Description

While trying to synchronize a Contact-Database via syncml, the client sends the two-way-sync-alert message but the server does not react. Instead it seems that the parsing or generating (I'm actually not sure about that) of the Status element of syncml fails.

roles: syncml-client: funambol outlook plugin V6.5.7 syncml-server: syncml-http-server

2nd sync-member is a file-sync-plugin member which works perfectly with other file-sync or evolution

here are the trace-logs of the syncml-plugin (that of osync are omitted)

versions: I testet that scenario as well with the standard debian/lenny opensync 0.22 with libsyncml 0.4.6 sensing the same behaviour. however, I have no log files of that.

here are the currently used versions (built from source):

  • libsyncml-0.4.6
  • libopensync-0.36
  • libopensync-plugin-evolution2-0.36
  • libopensync-plugin-file-0.36
  • libopensync-plugin-syncml-0.36
  • libopensync-plugin-vformat-0.36
  • msynctool-0.36

and the pre-built debian additional packages:

  • libxml2-dev 2.6.31.dfs
  • libxml2 2.6.31.dfs
  • libwbxml2-dev 0.9.2-4
  • libwbxml2-0 0.9.2-4

any ideas? solutions?

thanks and regards cc

Attachments

Thread2970991504-18805.log (97.2 KB) - added by cc 6 years ago.
thread log 1
Thread2979384208-18805.log (244.0 KB) - added by cc 6 years ago.
thread log 2
Thread3004562320-18805.log (77.3 KB) - added by cc 6 years ago.
thread log 3
syncml-http-server.conf (1.4 KB) - added by cc 6 years ago.
syncml-http-server config file

Change History

Changed 6 years ago by cc

thread log 1

Changed 6 years ago by cc

thread log 2

Changed 6 years ago by cc

thread log 3

Changed 6 years ago by cc

syncml-http-server config file

comment:1 Changed 6 years ago by bellmich

Do you have a wireshark dump of the communication?

I did some testing and patching to get libsyncml and the OpenSync? syncml plugin working with funambol servers. Especially v6.5 and SyncML 1.1 are problematic. Funambol server v6.5 does only work together with OpenSync? if SyncML 1.2 is used. Perhaps the Funambol client has the same problem.

comment:2 Changed 6 years ago by cc

Hey,

thanks for your reply. I did some tcpdump logging while doing my tests. Even I don't have the related logs anymore there was only that one syncml-message sent by funambol which is also included in one of the Thread logs (and therefore correctly fetched by the syncml-http-server). The open sync server did not reply to that message at all. So there are no logs ;-) The Server just waited there with that open connection sitting back and popping all these status messages out to the log-file (every 4 ms by the way) boring the funambol client until death... But that one not even died, no it just socialized and waited there endlessly in hope for one simple reply ;-)

Concerning the Funambol Client: The SyncML message created and submitted by the Funambol Client seems actually perfectly correct to me. Unfortunately I can't tell the Funambol Client to use SyncML 1.2. What did you do to get that stuff working? Did you only success with 1.2? Or is there another version of the Funambol stuff that works too?

Best regards cc

comment:3 Changed 6 years ago by bellmich

  • Owner changed from dgollub to bellmich

I downloaded and installed v6.5.14 on my machine. I will test it on Monday or Tuesday. The message in your logfiles looks good but there are no OpenSync? traces (OSYNC_TRACE=...).

comment:4 Changed 6 years ago by cc

Hey,

thank you very much for your efforts. If the Osync trace files are relevant, I would like to make another try and log them as well. But since the synchronization works with other plugins like evolution, I did't think they were. By the way, I would also like to assist you in bug fixing that may be necessary.

Regards, cc

comment:5 Changed 6 years ago by bellmich

Hi,

I just found the bug. msynctool reports on my system (syncml-http-server together with Funambol demo client) the following error:

Status already added

I thought that this is a mistake of libsyncml but during reading the traces I discovered that a status for the alert/command 1 was added twice which is forbidden. After following the traces upwards I discovered that Funambol sends all (2) alerts with the same command ID 1 within the same message. This is wrong and a bug of Funambol.

So I continue to search your problem but the first discovered thing is a bug of Funambol :(

comment:6 Changed 6 years ago by bellmich

Hi,

I just tried to synchronize one datastore with Funambol demo client and this does not work too. The interprets the content of status/item/data as the error code but the error code must be in status/data whilst status/item/data must contain the next anchor.

So testing with Funambol demo client is wasted time because the client is simply non standard compliant.

comment:7 Changed 6 years ago by bellmich

Ups, I think I wasted yours and my time :(

I read your config a little bit more carefully and discovered that you configured your syncml-http-plugin to synchronize three database (contacts, events, notes) but your Funambol client sends only one datastore which should be synchronized. If you only want to synchronize your contacts then you have to configure only one database in your plugin configuration. Actually we do not check this at the serverside.

So please re-configure your plugin. I added all the stuff which I discovered about the demo client in the wiki.

comment:8 Changed 6 years ago by cc

Hi there,

within the 2nd thread logfile I posted there is only one message from funambol (MsgID 1) that contains one Alert (CmdID 1) and one Put (CmdID 2) command. Therefore here the funambol seems to conform to the standard concerning the cmdid's. The error reported within that file is related to a "string that is already set" (maybe the status in your traces).

I adjusted my config file and removed the two redundant database-entries but the behaviour stands exactly the same. So it seems that is neither the problem.

I just don't know where exactly the error lies, but to me it seems there is one left in the syncml-http-server, even if the funambol stuff is not standard conform in all terms... Maybe the error is related to the DevInf? Format within the Put command? I don't know the exact format of the DevInf?-stuff...

I'm as well available via IRC for further discussing, if you'd like I would appreciate..

regards

cc

comment:9 Changed 6 years ago by bellmich

The problem is that more than one Rx is set and libsyncml only supports one Rx, Tx, Rx-Pref and Tx-Pref. I'm reading the spec to understand what's correct.

BTW I'm on IRC too (... but not always ..).

comment:10 Changed 6 years ago by bellmich

  • Status changed from new to closed
  • Resolution set to fixed

This bug is fixed. libsyncml and syncml plugin support now multiple Rx and Tx specs.

There is a new bug #719.

comment:11 Changed 4 years ago by sim

decoration Changed 1 year ago by admin

bathtub Changed 1 year ago by admin

solar system Changed 1 year ago by admin

stair parts Changed 1 year ago by admin

solar supply Changed 1 year ago by admin

Note: See TracTickets for help on using tickets.