Ticket #1142 (new defect)

Opened 5 years ago

Last modified 4 years ago

syncml-obex-client: Missing Nodes

Reported by: meteosat Owned by: dgollub
Priority: normal Milestone:
Component: Plugin: syncml-client Version: 0.22
Severity: normal Keywords:
Cc: mkl, opensync@…, krf@…

Description

Hi, for my new nokia 5800 I want to sync between Kontact and the handy. I'm using multisync-gui 0.91 and these two plugins: kdepim-sync without configuration syncml-obex-client with this:

<?xml version="1.0"?>
<config>
  <!-- (Only for bluetooth) The bluetooth address if the bluetooth mode is selected -->
  <bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
  
  <!-- (Only for bluetooth) The bluetooth channel to use. `sdptool browse $MAC` to search for the correct channel -->
  <bluetooth_channel>7</bluetooth_channel>
  
  <!-- (Only for USB) The usb interface number of the SYNCML-SYNC target. use syncml-obex-client -u (you will need access to the USB raw device) to find it. -->
  <interface>0</interface>
  
  <!-- The string that the plugin will use to identify itself. Some devices need a special string here. -->
  <identifier>PC Suite</identifier>
  
  <!-- The syncml version to use: 0 for 1.0, 1 for 1.1 and 2 for 1.2 -->
  <version>1</version>
  
  <!-- if the plugin should use wbxml -->
  <wbxml>1</wbxml>
  
  <!-- The username to use. Leave empty to not require a username -->
  <username></username>
  
  <!-- the password for the username -->
  <password></password>
  
  <!-- sets the connection type to use. 5 means obex over usb, 2 means obex over bluetooth -->
  <type>2</type>
  
  <!-- If wbxml is enabled, defines wether the wbxml should use string tables -->
  <usestringtable>1</usestringtable>
  
  <!-- Never send ADD command, but send REPLACE (not needed normally) -->
  <onlyreplace>0</onlyreplace>

  <!-- Workaround around for mobile phones which only use local timestamps and _no_ UTC timestamps! -->
  <onlyLocaltime>0</onlyLocaltime>
  
  <!-- Sets the maximum allowed size in bytes of incoming messages (some device need this option set). Example: 10000 -->
  <recvLimit>50000</recvLimit>
  
  <maxObjSize>0</maxObjSize>
  
  <!-- The name of the contacts db. Must be the same as the phones sends -->
  <contact_db>Contacts</contact_db>
  
  <!-- The name of the calendar db. Must be the same as the phones sends -->
  <calendar_db>Calendar</calendar_db>
  
  <!-- The name of the note db. Must be the same as the phones sends -->
  <note_db>Notes</note_db>
</config>

The result:

The previous synchronization was unclean. Slow-syncing                                                     
Member 1 of type evo2-sync just connected                                                                  
received event dsession                                                                                    
received contact dsession                                                                                  
received note dsession                                                                                     
Member 2 of type syncml-obex-client just connected                                                         
All clients connected or error                                                                             
Received an entry pas-id-42A848AB00000014 with data of size 4 from member 1. Changetype ADDED    
...........
Received an entry pas-id-42A848B6000002A2 with data of size 4 from member 1. Changetype ADDED
Member 1 of type evo2-sync just sent all changes
Received an entry 4 with data of size 4 from member 2. Changetype ADDED
Received an entry 5 with data of size 4 from member 2. Changetype ADDED
Received an entry 6 with data of size 4 from member 2. Changetype ADDED
Received an entry 7 with data of size 4 from member 2. Changetype ADDED
Member 2 of type syncml-obex-client had an error while getting changes: Missing nodes
Member 1 of type evo2-sync just disconnected

I was not able to find the meaning of "Missing Nodes". Do you have any solution? Thank you, Dieter

Change History

comment:1 Changed 5 years ago by megandy

Same is here using the mobile phone Nokia E75. At my side the error occurs when I try to sync the calendar. By changing the following, at least the sync of the contacts works:

<!-- The name of the calendar db. Must be the same as the phones sends --> <calendar_db>Calendar</calendar_db>

Removing (or changing) the name of the DB:

<!-- The name of the calendar db. Must be the same as the phones sends --> <calendar_db></calendar_db>

If some additional infos are needed to fix this problem, I would willingly provide them.

My configuration of the obex-client is

<?xml version="1.0"?>
<config>
  <!-- (Only for bluetooth) The bluetooth address if the bluetooth mode is selected -->
<bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
  
  <!-- (Only for bluetooth) The bluetooth channel to use. `sdptool browse $MAC` to search for the correct channel -->
  <bluetooth_channel>5</bluetooth_channel>
  
  <!-- (Only for USB) The usb interface number of the SYNCML-SYNC target. use syncml-obex-client -u (you will need access to the USB raw device) to find it. -->
  <interface>0</interface>
  
  <!-- The string that the plugin will use to identify itself. Some devices need a special string here. -->
  <identifier>PC Suite</identifier>
  
  <!-- The syncml version to use: 0 for 1.0, 1 for 1.1 and 2 for 1.2 -->
  <version>1</version>
  
  <!-- if the plugin should use wbxml -->
  <wbxml>1</wbxml>
  
  <!-- The username to use. Leave empty to not require a username -->
  <username></username>
  
  <!-- the password for the username -->
  <password></password>
  
  <!-- sets the connection type to use. 5 means obex over usb, 2 means obex over bluetooth -->
  <type>2</type>
  
  <!-- If wbxml is enabled, defines wether the wbxml should use string tables -->
  <usestringtable>1</usestringtable>
  
  <!-- Never send ADD command, but send REPLACE (not needed normally) -->
  <onlyreplace>0</onlyreplace>

  <!-- Workaround around for mobile phones which only use local timestamps and _no_ UTC timestamps! -->
  <onlyLocaltime>0</onlyLocaltime>
  
  <!-- Sets the maximum allowed size in bytes of incoming messages (some device need this option set). Example: 10000 -->
  <recvLimit>0</recvLimit>
  
  <maxObjSize>0</maxObjSize>
  
  <!-- The name of the contacts db. Must be the same as the phones sends -->
  <contact_db>Contacts</contact_db>
  
  <!-- The name of the calendar db. Must be the same as the phones sends -->
  <calendar_db>Calendar</calendar_db>
  
  <!-- The name of the note db. Must be the same as the phones sends -->
  <note_db>Notes</note_db>
</config>

comment:2 Changed 5 years ago by megandy

OS: Ubuntu 8.04-3 2nd peer: Evolution

output of

syncml-obex-client -b 00:1E:3A:4E:39:F1 5 --slow-sync text/x-vcalendar Calendar --identifier "PC Suite" --wbxml --dumpinfo --useStringTable

Man: Nokia
Mod: E75-1
FirmwareVersion: 
SoftwareVersion: 110.48.125
HardwareVersion: 

ReceiveLimit: 0
MaxObjSize: 0
Connection used: OBEX Client
Identifier: PC Suite

Databases:
DB Locations: Calendar
DB Type: text/x-vcalendar
DB Slow: 1

Bluetooth: Yes
Wbxml: Yes
SyncML Version: 1.1
SupportsNumberofChanges: Yes
SupportsLargeObjects: Yes

Using a usb connection leads to same results with the error reported.

comment:3 Changed 5 years ago by mkl

  • Cc mkl added

I have a similar effect with a Nokia E65: I try to synchronize with files for a start.

The mobile delivers 80 of 164 calendar entries, then I see on the PC console: ... Received an entry 929 with data of size 4 from member 1 (syncml-obex-client). Changetype ADDED Member 1 of type syncml-obex-client had an error while getting changes: Missing nodes Member 2 of type file-sync just disconnected

If I remove

<calendar_db>Calendar</calendar_db>

from syncml-obex-client.conf, then I can download all contacts at least.

This is Ubuntu 9.04

comment:4 Changed 5 years ago by bellmich

  • Owner changed from bellmich to dgollub

I do not handle the support for 0.22.

comment:5 Changed 5 years ago by dgollub

I'll have a look as soon when time permits ...

comment:6 Changed 5 years ago by settel

  • Cc opensync@… added

Last week, I got the same error message when I try to sync events from Nokia 5800 to whatever (tried evo2-sync and file-sync).

The events that triggered the error all have in common that the start date is "$DATE 00:00" and end date is "($DATE - 1) 23:59" (I inherited those events from my Palm Tungsten T2, they usually denote special events like christmas, new year's eve, start of spring/summer/...). After I purged them from Nokia 5800, sync went smooth.

Unfortunally, now I've got the same error again but I don't know what events now cause the trouble this time:

 ~/ $ syncml-obex-client -u 0 --identifier "PC Suite" --wbxml  --slow-sync text/x-vcalendar Calendar --useStringTable
connection with device succeeded
Received an Alert for the DS Server at Calendar: Type: 200, Last 20091003T231518Z, Next 20091004T180438Z
Slowsyncing
Just received a new session with ID 1
Session 1 reported final. flushing
Received an reply to our Alert
Going to receive 50 changes
There was an error in the session 1: Missing nodes

comment:7 Changed 5 years ago by settel

I stand corrected, the error seems to be caused by an invalid character inside the XML CDATA block of a vcalendar item.

With help of the SYNCML_LOG environment variable, I've been able to dump the communication and the received XML file indeed contains a ^H (ASCII 0x08) at the end of one of the lines inside a CDATA section

 ~ $ export SYNCML_LOG=/tmp/syncml.log
 ~ $ mkdir "$SYNCML_LOG"
 ~ $ msynctool --sync nokia-file
[...]
Received an entry 130 with data of size 4 from member 1 (syncml-obex-client). Changetype ADDED
Received an entry 131 with data of size 4 from member 1 (syncml-obex-client). Changetype ADDED
Member 1 of type syncml-obex-client had an error while getting changes: No node at all
Member 2 of type file-sync just disconnected
 ~ $ xmllint received-1.xml
received-1.xml:1059: parser error : CData section not finished
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID;ENCOD
UID;ENCODING=QUOTED-PRINTABLE:09102009003017189500
                                                  ^
received-1.xml:1059: parser error : PCDATA invalid Char value 8
UID;ENCODING=QUOTED-PRINTABLE:09102009003017189500
                                                  ^
received-1.xml:1068: parser error : Sequence ']]>' not allowed in content
END:VCALENDAR
             ^
[...]

 ~ $ grep ENCODING=QUOTED-PRINTABLE:09102009003017189500 /tmp/syncml.log/received-1.xml | xxd
0000000: 5549 443b 454e 434f 4449 4e47 3d51 554f  UID;ENCODING=QUO
0000010: 5445 442d 5052 494e 5441 424c 453a 3039  TED-PRINTABLE:09
0000020: 3130 3230 3039 3030 3330 3137 3138 3935  1020090030171895
0000030: 3030 080d 0a                             00...

comment:8 Changed 5 years ago by megandy

when I repeated the steps proposed by settel, I encountered a problem with German umlauts:

~$ xmllint /tmp/syncml.log/received-4.xml
/tmp/syncml.log/received-4.xml:11: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xF6 0x72 0x65 0x72
S ACTION;RSVP=NO;EXPECT=FYI;X-ROLE=REQ-PARTICIPANT;X-STATUS=NEEDS-ACTION;X-CN=M
                                                                              ^
~$ grep 'S ACTION;RSVP=NO;EXPECT=FYI;X-ROLE=REQ-PARTICIPANT;X-STATUS=NEEDS-ACTION;X-CN=Sp' /tmp/syncml.log/received-4.xml 
ATTENDEE;ROLE=ATTENDEE;STATUS=NEEDS ACTION;RSVP=NO;EXPECT=FYI;X-ROLE=REQ-PARTICIPANT;X-STATUS=NEEDS-ACTION;X-CN=M�rer, Stephan;ENCODING=QUOTED-PRINTABLE:=

The character after the parse error is a German 'ö'. It seems to be a enconding problem

comment:9 Changed 4 years ago by krf

  • Cc krf@… added

Bump: Still happening. How to solve this?

comment:10 Changed 4 years ago by krf

FYI: Just "solved" this by deleting all entries in the phone calender. Syncing works now.

comment:11 Changed 4 years ago by sim

Last edited 4 years ago by ianmartin (previous) (diff)
Note: See TracTickets for help on using tickets.