From: <svn...@op...> - 2009-03-18 17:40:56
|
Author: bellmich Date: Wed Mar 18 18:40:51 2009 New Revision: 999 URL: http://libsyncml.opensync.org/changeset/999 Log: use new SAN callback which provides the session too which avoids race conditions (alternatively you can block the thread until the event SESSION_NEW will be dispatched) Modified: trunk/libsyncml/data_sync_api/data_sync_client.c Modified: trunk/libsyncml/data_sync_api/data_sync_client.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_client.c Wed Mar 18 18:38:50 2009 (r998) +++ trunk/libsyncml/data_sync_api/data_sync_client.c Wed Mar 18 18:40:51 2009 (r999) @@ -250,15 +250,22 @@ static SmlErrorType smlDataSyncSanCallback( SmlDsServer *server, + SmlSession *session, SmlAlertType type, void *userdata) { - smlTrace(TRACE_ENTRY, "%s(%p, %d, %p)", __func__, server, type, userdata); + smlTrace(TRACE_ENTRY, "%s(%p, %p, %d, %p)", __func__, server, session, type, userdata); SmlDataSyncDatastore *datastore = userdata; SmlDataSyncObject *dsObject = datastore->dsObject; SmlError *error = NULL; SmlErrorType ret = SML_NO_ERROR; + /* soemtimes the event manager thread is too slow */ + if (!dsObject->session) { + dsObject->session = session; + smlSessionRef(session); + } + if (!smlDataSyncClientSendAlert(datastore, type, &error)) { if (!error) ret = SML_ERROR_REQUIRE_REFRESH; @@ -324,7 +331,7 @@ smlDataSyncDatastoreConnectCallback, datastore); - smlDsServerSetSanCallback( + smlDsServerSetSanSessionCallback( datastore->server, smlDataSyncSanCallback, datastore); |