From: <svn...@op...> - 2009-04-15 15:05:31
|
Author: bellmich Date: Wed Apr 15 17:05:26 2009 New Revision: 1047 URL: http://libsyncml.opensync.org/changeset/1047 Log: abort more carefully depending on the internal state Modified: trunk/libsyncml/data_sync_api/data_sync_abort.c Modified: trunk/libsyncml/data_sync_api/data_sync_abort.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_abort.c Wed Apr 15 17:02:28 2009 (r1046) +++ trunk/libsyncml/data_sync_api/data_sync_abort.c Wed Apr 15 17:05:26 2009 (r1047) @@ -56,15 +56,22 @@ /* stop transport */ WORKAROUND: smlTrace(TRACE_INTERNAL, "%s: A hard abort is required.", __func__); - SmlLink *link_ = smlManagerSessionGetLink( - dsObject->manager, - dsObject->session, - error); - if (!link_ && *error) - goto error; - if (!smlTransportDisconnect(dsObject->tsp, link_, error)) - goto error; + if (SML_DATA_SYNC_STATE_CONNECTED <= dsObject->internalState && + dsObject->internalState < SML_DATA_SYNC_STATE_DISCONNECT_IN_PROGRESS) + { + dsObject->internalState = SML_DATA_SYNC_STATE_DISCONNECT_IN_PROGRESS; + + SmlLink *link_ = smlManagerSessionGetLink( + dsObject->manager, + dsObject->session, + error); + if (!link_ && *error) + goto error; + + if (!smlTransportDisconnect(dsObject->tsp, link_, error)) + goto error; + } } smlTrace(TRACE_EXIT, "%s", __func__); |