fixed object reference leakage
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 13 Jan 2014 17:24:33 +0000 (19:24 +0200)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 13 Jan 2014 17:24:33 +0000 (19:24 +0200)
include/netxms_isc.h
src/server/core/isc.cpp
src/server/core/session.cpp
src/server/libnxsrv/isc.cpp

index fc3dc2a..0a14cb4 100644 (file)
 #ifndef _netxms_isc_h_
 #define _netxms_isc_h_
 
-
-//
-// Default port number
-//
-
+/**
+ * Default ISC port number
+ */
 #define NETXMS_ISC_PORT        4702
 
-
-//
-// Well-known ISC services
-//
-
+/**
+ * Well-known ISC services
+ */
 #define ISC_SERVICE_EVENT_FORWARDER    ((UINT32)1)
 #define ISC_SERVICE_OBJECT_SYNC        ((UINT32)2)
 #define ISC_SERVICE_LICENSE_SERVER     ((UINT32)3)
 
 #define ISC_SERVICE_CUSTOM_1           ((UINT32)100000)
 
-
-//
-// ISC error codes
-//
-
-
+/**
+ * ISC error codes
+ */
 #define ISC_ERR_SUCCESS                ((UINT32)0)
 #define ISC_ERR_UNKNOWN_SERVICE        ((UINT32)1)
 #define ISC_ERR_REQUEST_OUT_OF_STATE   ((UINT32)2)
 #define ISC_ERR_OBJECT_NOT_FOUND       ((UINT32)17)
 #define ISC_ERR_POST_EVENT_FAILED      ((UINT32)18)
 
-
-//
-// ISC session
-//
-
+/**
+ * ISC session
+ */
 class ISCSession
 {
 private:
@@ -94,11 +85,9 @@ public:
        void *GetUserData() { return m_userData; }
 };
 
-
-//
-// ISC service definition
-//
-
+/**
+ * ISC service definition
+ */
 typedef struct
 {
        UINT32 id;                                                              // Service ID
index 2e564fd..33a9d51 100644 (file)
 #define ISC_STATE_INIT        0
 #define ISC_STATE_CONNECTED   1
 
-
-//
-// Externals
-//
-
+/**
+ * Service handlers
+ */
 BOOL EF_SetupSession(ISCSession *, CSCPMessage *);
 void EF_CloseSession(ISCSession *);
 BOOL EF_ProcessMessage(ISCSession *, CSCPMessage *, CSCPMessage *);
 
-
-//
-// Well-known service list
-//
-
+/**
+ * Well-known service list
+ */
 static ISC_SERVICE m_serviceList[] = 
 {
        { ISC_SERVICE_EVENT_FORWARDER, _T("EventForwarder"),
@@ -53,11 +49,9 @@ static ISC_SERVICE m_serviceList[] =
        { 0, NULL, NULL }
 };
 
-
-//
-// Request processing thread
-//
-
+/**
+ * Request processing thread
+ */
 static THREAD_RESULT THREAD_CALL ProcessingThread(void *arg)
 {
        ISCSession *session = (ISCSession *)arg;
@@ -201,11 +195,9 @@ static THREAD_RESULT THREAD_CALL ProcessingThread(void *arg)
    return THREAD_OK;
 }
 
-
-//
-// Local administrative interface listener thread
-//
-
+/**
+ * ISC listener thread
+ */
 THREAD_RESULT THREAD_CALL ISCListener(void *pArg)
 {
    SOCKET sock, sockClient;
index e2f0f0d..8fa1ee5 100644 (file)
@@ -2051,8 +2051,8 @@ void ClientSession::sendAllObjects(CSCPMessage *pRequest)
             object->commentsToMessage(&msg);
          sendMessage(&msg);
          msg.deleteAllVariables();
-         object->decRefCount();
       }
+      object->decRefCount();
        }
        delete objects;
 
index 72696e3..cee0a1f 100644 (file)
@@ -135,12 +135,10 @@ ISC::~ISC()
        MutexDestroy(m_socketLock);
 }
 
-
-//
-// Print message. This function is virtual and can be overrided in
-// derived classes. Default implementation will print message to stdout.
-//
-
+/**
+ * Print message. This function is virtual and can be overrided in
+ * derived classes. Default implementation will print message to stdout.
+ */
 void ISC::PrintMsg(const TCHAR *format, ...)
 {
    va_list args;