From: <svn...@op...> - 2009-10-02 13:23:50
|
Author: bellmich Date: Fri Oct 2 15:23:37 2009 New Revision: 1308 URL: http://libsyncml.opensync.org/changeset/1308 Log: - disconnectDone was not set on disconnect - disconnect is not safe against two or more calls Modified: trunk/libsyncml/transports/http_client.c Modified: trunk/libsyncml/transports/http_client.c ============================================================================== --- trunk/libsyncml/transports/http_client.c Fri Oct 2 14:25:02 2009 (r1307) +++ trunk/libsyncml/transports/http_client.c Fri Oct 2 15:23:37 2009 (r1308) @@ -521,6 +521,12 @@ smlAssert(env); smlAssert(env->tsp); + if (env->disconnectDone) + { + smlTrace(TRACE_EXIT, "%s - ignoring because already disconnect", __func__); + return; + } + if (!env->connectDone && !env->session) { /* The client is not connected. */ @@ -544,7 +550,7 @@ env->session = NULL; /* Make a new disconnect object */ - env->disconnectDone = FALSE; + env->disconnectDone = TRUE; smlTransportReceiveEvent(env->tsp, NULL, SML_TRANSPORT_EVENT_DISCONNECT_DONE, NULL, NULL); smlTrace(TRACE_EXIT, "%s", __func__); |