Bug ID 91485
Summary OBEX does not wait for final packet to be sent to client
Product SyncEvolution
Version unspecified
Hardware Other
OS Linux (All)
Status NEW
Severity major
Priority medium
Component SyncEvolution
Assignee syncevolution-issues@syncevolution.org
Reporter james-freedesktop@laird-wah.net
CC syncevolution-issues@syncevolution.org

Hello,
I'm using SyncEvolution 1.5.1 with libsynthesis 
libsynthesis_3.4.0.47+syncevolution-1-5-1 on a Gentoo machine, with OpenObex
1.7.1.
I'm attempting to sync calendar+todo, contacts and memo with a Nokia 208
(Series 40) running their latest firmware.
Sync appears to work (SyncEvolution completes successfully), but the device
always requests a slow sync and gives a zero LastAnchor. In the on-device sync
log, it claims that the sync failed (with the helpful message "Status: Data
transfer not possible. Check data connection.")

Investigating with Wireshark shows that the last message (acknowledgement) from
SyncEvolution does not go over the OBEX link before the disconnection.
The following patch ensures the last packet goes out, and sync succeeds at the
device end; incremental syncing starts to work. I'm pretty sure this isn't the
correct way to handle this case, but I can't quite wrap my head around the
session state machine, sorry!

I can't sanitise the session log but am happy to provide it privately if
necessary.

--- a/src/syncevo/ObexTransportAgent.cpp
+++ b/src/syncevo/ObexTransportAgent.cpp
@@ -325,6 +325,7 @@ void ObexTransportAgent::send(const char *data, size_t len)
{
     m_sock = sockObj;
     m_channel = channel;
     m_obexEvent = obexEventSource;
+    OBEX_HandleInput(m_handle, 1000);
 }

 /*


You are receiving this mail because: