]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treesocket.h
Allow the maximum length of a chanfilter message to be configured.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treesocket.h
index 9dbc212a1a50b02f59a5595d65041cbe7ee51855..3571f28169c107a5f1cdf32eb82a1375add35824 100644 (file)
@@ -95,10 +95,13 @@ class TreeSocket : public BufferedSocket
        ServerState LinkState;                  /* Link state */
        CapabData* capab;                       /* Link setup data (held until burst is sent) */
        TreeServer* MyRoot;                     /* The server we are talking to */
-       time_t NextPing;                        /* Time when we are due to ping this server */
-       bool LastPingWasGood;                   /* Responded to last ping we sent? */
        int proto_version;                      /* Remote protocol version */
-       bool ConnectionFailureShown; /* Set to true if a connection failure message was shown */
+
+       /** True if we've sent our burst.
+        * This only changes the behavior of message translation for 1202 protocol servers and it can be
+        * removed once 1202 support is dropped.
+        */
+       bool burstsent;
 
        /** Checks if the given servername and sid are both free
         */
@@ -139,6 +142,20 @@ class TreeSocket : public BufferedSocket
         */
        void FinishAuth(const std::string& remotename, const std::string& remotesid, const std::string& remotedesc, bool hidden);
 
+       /** Authenticate the remote server.
+        * Validate the parameters and find the link block that matches the remote server. In case of an error,
+        * an appropriate snotice is generated, an ERROR message is sent and the connection is closed.
+        * Failing to find a matching link block counts as an error.
+        * @param params Parameters they sent in the SERVER command
+        * @return Link block for the remote server, or NULL if an error occurred
+        */
+       Link* AuthRemote(const parameterlist& params);
+
+       /** Write a line on this socket with a new line character appended, skipping all translation for old protocols
+        * @param line Line to write without a new line character at the end
+        */
+       void WriteLineNoCompat(const std::string& line);
+
  public:
        const time_t age;
 
@@ -157,7 +174,7 @@ class TreeSocket : public BufferedSocket
 
        /** Get link state
         */
-       ServerState GetLinkState();
+       ServerState GetLinkState() const { return LinkState; }
 
        /** Get challenge set in our CAPAB for challenge/response
         */
@@ -183,7 +200,7 @@ class TreeSocket : public BufferedSocket
         */
        void CleanNegotiationInfo();
 
-       CullResult cull();
+       CullResult cull() CXX11_OVERRIDE;
        /** Destructor
         */
        ~TreeSocket();
@@ -199,7 +216,7 @@ class TreeSocket : public BufferedSocket
         * to server docs on the inspircd.org site, the other side
         * will then send back its own server string.
         */
-       void OnConnected();
+       void OnConnected() CXX11_OVERRIDE;
 
        /** Handle socket error event
         */
@@ -231,20 +248,6 @@ class TreeSocket : public BufferedSocket
 
        bool Capab(const parameterlist &params);
 
-       /** This function forces this server to quit, removing this server
-        * and any users on it (and servers and users below that, etc etc).
-        * It's very slow and pretty clunky, but luckily unless your network
-        * is having a REAL bad hair day, this function shouldnt be called
-        * too many times a month ;-)
-        */
-       void SquitServer(std::string &from, TreeServer* Current, int& num_lost_servers, int& num_lost_users);
-
-       /** This is a wrapper function for SquitServer above, which
-        * does some validation first and passes on the SQUIT to all
-        * other remaining servers.
-        */
-       void Squit(TreeServer* Current, const std::string &reason);
-
        /** Send one or more FJOINs for a channel of users.
         * If the length of a single line is more than 480-NICKMAX
         * in length, it is split over multiple lines.
@@ -267,7 +270,7 @@ class TreeSocket : public BufferedSocket
        /** This function is called when we receive data from a remote
         * server.
         */
-       void OnDataReady();
+       void OnDataReady() CXX11_OVERRIDE;
 
        /** Send one or more complete lines down the socket
         */
@@ -296,14 +299,10 @@ class TreeSocket : public BufferedSocket
 
        /** Handle socket timeout from connect()
         */
-       void OnTimeout();
+       void OnTimeout() CXX11_OVERRIDE;
        /** Handle server quit on close
         */
-       void Close();
-
-       /** Returns true if this server was introduced to the rest of the network
-        */
-       bool Introduced();
+       void Close() CXX11_OVERRIDE;
 
        /** Fixes messages coming from old servers so the new command handlers understand them
         */