fixed bug in connection through tunneled proxy if proxy agent authentication is on
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 20 Apr 2017 17:03:47 +0000 (20:03 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 20 Apr 2017 17:03:47 +0000 (20:03 +0300)
src/server/core/agent.cpp
src/server/core/node.cpp
src/server/include/nms_objects.h
src/server/include/nxsrvapi.h
src/server/libnxsrv/agent.cpp

index 8d6164f..3dba971 100644 (file)
@@ -90,14 +90,14 @@ void AgentConnectionEx::setTunnel(AgentTunnel *tunnel)
 /**
  * Set proxy tunnel to use
  */
-void AgentConnectionEx::setProxy(AgentTunnel *tunnel)
+void AgentConnectionEx::setProxy(AgentTunnel *tunnel, int authMethod, const TCHAR *secret)
 {
    if (m_proxyTunnel != NULL)
       m_proxyTunnel->decRefCount();
    m_proxyTunnel = tunnel;
    if (m_proxyTunnel != NULL)
       m_proxyTunnel->incRefCount();
-   setProxyMode();
+   setProxy(InetAddress::INVALID, 0, authMethod, secret);
 }
 
 /**
index 18e933f..4af123e 100644 (file)
@@ -5906,7 +5906,7 @@ bool Node::setAgentProxy(AgentConnectionEx *conn)
    AgentTunnel *tunnel = GetTunnelForNode(proxyNode);
    if (tunnel != NULL)
    {
-      conn->setProxy(tunnel);
+      conn->setProxy(tunnel, node->m_agentAuthMethod, node->m_szSharedSecret);
       tunnel->decRefCount();
    }
    else
index f576e71..e9de052 100644 (file)
@@ -152,7 +152,7 @@ public:
    void setTunnel(AgentTunnel *tunnel);
 
    using AgentConnection::setProxy;
-   void setProxy(AgentTunnel *tunnel);
+   void setProxy(AgentTunnel *tunnel, int authMethod, const TCHAR *secret);
 };
 
 /**
index bddac98..367c15d 100644 (file)
@@ -539,9 +539,6 @@ protected:
 
    UINT32 waitForRCC(UINT32 dwRqId, UINT32 dwTimeOut);
 
-   void setProxyMode() { m_useProxy = true; }
-   bool isProxyMode() { return m_useProxy; }
-
    void incInternalRefCount() { InterlockedIncrement(&m_internalRefCount); }
    void decInternalRefCount() { if (InterlockedDecrement(&m_internalRefCount) == 0) delete this; }
 
@@ -554,6 +551,7 @@ public:
    bool connect(RSA *pServerKey = NULL, UINT32 *pdwError = NULL, UINT32 *pdwSocketError = NULL, UINT64 serverId = 0);
    void disconnect();
    bool isConnected() const { return m_isConnected; }
+   bool isProxyMode() { return m_useProxy; }
        int getProtocolVersion() const { return m_nProtocolVersion; }
        bool isCompressionAllowed() const { return m_allowCompression && (m_nProtocolVersion >= 4); }
 
index 291d389..9711bfc 100644 (file)
@@ -1913,7 +1913,7 @@ void AgentConnection::setProxy(InetAddress addr, WORD wPort, int iAuthMethod, co
    {
       m_szProxySecret[0] = 0;
    }
-   setProxyMode();
+   m_useProxy = true;
 }
 
 /**