From: <svn...@op...> - 2009-07-03 14:55:22
|
Author: bellmich Date: Fri Jul 3 16:55:04 2009 New Revision: 1152 URL: http://libsyncml.opensync.org/changeset/1152 Log: - session IDs are always unsigned integer - message and command IDs are always unsigned integer - gsize is the maximum unsigned integer type which can be used for IDs Modified: trunk/libsyncml/sml_elements.c trunk/libsyncml/sml_elements_internals.h trunk/libsyncml/sml_manager.c trunk/libsyncml/sml_manager.h trunk/libsyncml/sml_notification.c trunk/libsyncml/sml_session.c trunk/libsyncml/sml_session.h trunk/libsyncml/sml_session_internals.h Modified: trunk/libsyncml/sml_elements.c ============================================================================== --- trunk/libsyncml/sml_elements.c Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_elements.c Fri Jul 3 16:55:04 2009 (r1152) @@ -71,9 +71,6 @@ { smlTrace(TRACE_ENTRY, "%s(%p)", __func__, header); - if (header->sessionID) - smlSafeCFree(&(header->sessionID)); - if (header->emi) smlSafeCFree(&(header->emi)); Modified: trunk/libsyncml/sml_elements_internals.h ============================================================================== --- trunk/libsyncml/sml_elements_internals.h Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_elements_internals.h Fri Jul 3 16:55:04 2009 (r1152) @@ -63,7 +63,7 @@ }; struct SmlHeader { - gchar *sessionID; + gsize sessionID; SmlProtocolVersion version; SmlProtocolType protocol; SmlLocation *source; Modified: trunk/libsyncml/sml_manager.c ============================================================================== --- trunk/libsyncml/sml_manager.c Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_manager.c Fri Jul 3 16:55:04 2009 (r1152) @@ -661,13 +661,13 @@ SmlSession* smlManagerSessionFind (SmlManager *manager, - const gchar *sessionID) + gsize sessionID) { - smlTrace(TRACE_ENTRY, "%s(%p, %s)", __func__, manager, VA_STRING(sessionID)); + smlTrace(TRACE_ENTRY, "%s(%p, %uld)", __func__, manager, sessionID); GList *s = NULL; for (s = manager->sessions; s; s = s->next) { managerSession *session = s->data; - if (!strcmp(smlSessionGetSessionID(session->session), sessionID)) { + if (smlSessionGetSessionID(session->session) == sessionID) { smlTrace(TRACE_EXIT, "%s: FOUND %p", __func__, session); return session->session; } @@ -825,9 +825,7 @@ goto error; } } else { - char *lastid = smlManagerGetNewSessionID(manager); - smlSessionSetSessionID(session, lastid); - smlSafeCFree(&lastid); + smlSessionSetSessionID(session, smlManagerGetNewSessionID(manager)); } managerSession *sess = smlTryMalloc0(sizeof(managerSession), error); @@ -1425,25 +1423,24 @@ manager->localMaxObjSize = size; } -gchar* +gsize smlManagerGetNewSessionID (SmlManager *manager) { smlTrace(TRACE_ENTRY, "%s(%p)", __func__, manager); smlAssertMsg(manager, "The manager is required to avoid duplicated session IDs."); - char *sessionString = NULL; - while (sessionString == NULL) + gsize sessionID = 0; + while (sessionID == 0) { - /* WARNING: only 4 byte session IDs are theoretically allowed !!! */ + /* WARNING: only 4 digit session IDs are theoretically allowed !!! */ /* create random session ID - glib only supports 32 bit random numbers */ - unsigned int sessionID = (unsigned int) g_random_int_range (0, 0xFFFF); - sessionString = g_strdup_printf("%u", sessionID); - smlTrace(TRACE_INTERNAL, "%s: new potential session ID is %lu.", __func__, sessionID); - if (smlManagerSessionFind(manager, sessionString)) - smlSafeCFree(&sessionString); + sessionID = (gsize) g_random_int_range (0, 9999); + smlTrace(TRACE_INTERNAL, "%s: new potential session ID is %ud.", __func__, sessionID); + if (smlManagerSessionFind(manager, sessionID)) + sessionID = 0; } - smlTrace(TRACE_EXIT, "%s - %s", __func__, VA_STRING(sessionString)); - return sessionString; + smlTrace(TRACE_EXIT, "%s - %ud", __func__, sessionID); + return sessionID; } SmlLink* @@ -1458,7 +1455,7 @@ if (!_msession) { g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, - "The session %s is not registered at the manager.", + "The session %ulld is not registered at the manager.", smlSessionGetSessionID(session)); goto error; } Modified: trunk/libsyncml/sml_manager.h ============================================================================== --- trunk/libsyncml/sml_manager.h Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_manager.h Fri Jul 3 16:55:04 2009 (r1152) @@ -53,7 +53,7 @@ gboolean smlManagerReceive (SmlManager *manager, GError **error); void smlManagerSetEventCallback (SmlManager *manager, SmlManagerEventCb callback, void *userdata); -SmlSession* smlManagerSessionFind (SmlManager *manager, const gchar *sessionID); +SmlSession* smlManagerSessionFind (SmlManager *manager, gsize sessionID); gboolean smlManagerSessionAdd (SmlManager *manager, SmlSession *session, SmlLink *link, GError **error); void smlManagerSessionRemove (SmlManager *manager, SmlSession *session); @@ -77,7 +77,7 @@ void smlManagerSetLocalMaxMsgSize (SmlManager *manager, gsize size); void smlManagerSetLocalMaxObjSize (SmlManager *manager, gsize size); -gchar* smlManagerGetNewSessionID (SmlManager *manager); +gsize smlManagerGetNewSessionID (SmlManager *manager); #endif //_SML_MANAGER_H Modified: trunk/libsyncml/sml_notification.c ============================================================================== --- trunk/libsyncml/sml_notification.c Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_notification.c Fri Jul 3 16:55:04 2009 (r1152) @@ -376,14 +376,11 @@ if (!source) goto error; - char *sessionString = smlManagerGetNewSessionID(san->manager); - session = smlSessionNew(san->sessionType, san->type, version, SML_PROTOCOL_SYNCML, san->target, source, sessionString, 0, error); + session = smlSessionNew(san->sessionType, san->type, version, SML_PROTOCOL_SYNCML, san->target, source, smlManagerGetNewSessionID(san->manager), 0, error); if (!session) { - smlSafeCFree(&sessionString); g_object_unref(source); goto error; } - smlSafeCFree(&sessionString); smlManagerSessionAdd(san->manager, session, NULL, error); assm = smlAssemblerNew(san->type, 0, error); Modified: trunk/libsyncml/sml_session.c ============================================================================== --- trunk/libsyncml/sml_session.c Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_session.c Fri Jul 3 16:55:04 2009 (r1152) @@ -1803,7 +1803,7 @@ smlTrace(TRACE_EXIT, "%s", __func__); } -const gchar* +gsize smlSessionGetSessionID (SmlSession *session) { smlAssert(session); @@ -1813,13 +1813,10 @@ void smlSessionSetSessionID (SmlSession *session, - const gchar *sessionID) + gsize sessionID) { smlAssert(session); - - if (session->sessionID) - smlSafeCFree(&(session->sessionID)); - session->sessionID = g_strdup(sessionID); + session->sessionID = sessionID; } SmlProtocolVersion @@ -1906,11 +1903,11 @@ SmlProtocolType protocol, SmlLocation *target, SmlLocation *source, - const gchar *sessionID, - guint messageID, + gsize sessionID, + gsize messageID, GError **error) { - smlTrace(TRACE_ENTRY, "%s(%i, %i, %i, %i, %p, %p, %s, %i, %p)", __func__, sessionType, mimetype, version, protocol, target, source, VA_STRING(sessionID), messageID, error); + smlTrace(TRACE_ENTRY, "%s(%i, %i, %i, %i, %p, %p, %u, %i, %p)", __func__, sessionType, mimetype, version, protocol, target, source, sessionID, messageID, error); CHECK_ERROR_REF /* Initialize GLib thread system. */ @@ -1927,7 +1924,7 @@ session->version = version; session->protocol = protocol; session->type = mimetype; - session->sessionID = g_strdup(sessionID); + session->sessionID = sessionID; if (messageID) session->lastMessageID = messageID; else @@ -2021,9 +2018,6 @@ if (session->chal) smlChalUnref(session->chal); - if (session->sessionID) - smlSafeCFree(&(session->sessionID)); - if (session->command_queue) { SmlSessionCommand *sesscmd = NULL; while ((sesscmd = smlQueueTryPop(session->command_queue))) @@ -2240,7 +2234,7 @@ CHECK_ERROR_REF if (session->responseURI) { - g_warning("The response URI (%s) of a session (%s) should never be overwritten (%s).", + g_warning("The response URI (%s) of a session (%u) should never be overwritten (%s).", session->responseURI, session->sessionID, responseURI); smlSafeCFree(&(session->responseURI)); } Modified: trunk/libsyncml/sml_session.h ============================================================================== --- trunk/libsyncml/sml_session.h Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_session.h Fri Jul 3 16:55:04 2009 (r1152) @@ -44,7 +44,7 @@ typedef void (* SmlSessionDataCallback) (SmlSession *session, SmlTransportData *data, void *userdata); /* Session Management */ -SmlSession* smlSessionNew (SmlSessionType sessionType, SmlMimeType mimetype, SmlProtocolVersion version, SmlProtocolType protocol, SmlLocation *target, SmlLocation *source, const gchar *sessionID, guint messageID, GError **error); +SmlSession* smlSessionNew (SmlSessionType sessionType, SmlMimeType mimetype, SmlProtocolVersion version, SmlProtocolType protocol, SmlLocation *target, SmlLocation *source, const gsize sessionID, gsize messageID, GError **error); SmlSession* smlSessionRef (SmlSession *session); void smlSessionUnref (SmlSession *session); void smlSessionSetEventCallback (SmlSession *session, SmlSessionEventCallback callback, void *userdata); @@ -68,8 +68,8 @@ gsize smlSessionGetLocalMaxObjSize (SmlSession *session); gsize smlSessionGetRemoteMaxObjSize (SmlSession *session); -const gchar* smlSessionGetSessionID (SmlSession *session); -void smlSessionSetSessionID (SmlSession *session, const gchar *sessionID); +gsize smlSessionGetSessionID (SmlSession *session); +void smlSessionSetSessionID (SmlSession *session, gsize sessionID); SmlProtocolVersion smlSessionGetVersion (SmlSession *session); void smlSessionDispatchEvent (SmlSession *session, SmlSessionEventType type, SmlCommand *cmd, SmlCommand *parent, SmlStatus *headerreply, const GError *error); SmlLocation* smlSessionGetSource (SmlSession *session); Modified: trunk/libsyncml/sml_session_internals.h ============================================================================== --- trunk/libsyncml/sml_session_internals.h Fri Jul 3 16:29:48 2009 (r1151) +++ trunk/libsyncml/sml_session_internals.h Fri Jul 3 16:55:04 2009 (r1152) @@ -38,7 +38,7 @@ SmlSessionDataCallback dataCallback; void *dataCallbackUserdata; - gchar *sessionID; + gsize sessionID; SmlLocation *target; SmlLocation *orgTarget; @@ -56,9 +56,9 @@ GList *pendingReplies; - guint lastMessageID; - guint lastReceivedMessageID; - guint lastCommandID; + gsize lastMessageID; + gsize lastReceivedMessageID; + gsize lastCommandID; GList *commands; gboolean final; @@ -97,8 +97,8 @@ }; struct SmlPendingStatus { - guint cmdID; - guint msgID; + gsize cmdID; + gsize msgID; SmlStatusReplyCb callback; void *userdata; }; |