-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2007 Craig Edwards <craigedwards@brainbox.cc>
*
- * InspIRCd: (C) 2002-2010 InspIRCd Development Team
- * See: http://wiki.inspircd.org/Credits
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
*
- * This program is free but copyrighted software; see
- * the file COPYING for details.
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
*
- * ---------------------------------------------------
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __TREESOCKET_H__
-#define __TREESOCKET_H__
+
+#ifndef M_SPANNINGTREE_TREESOCKET_H
+#define M_SPANNINGTREE_TREESOCKET_H
#include "socket.h"
#include "inspircd.h"
int capab_phase; /* Have sent CAPAB already */
bool auth_fingerprint; /* Did we auth using SSL fingerprint */
bool auth_challenge; /* Did we auth using challenge/response */
+
+ // Data saved from incoming SERVER command, for later use when our credentials have been accepted by the other party
+ std::string description;
+ std::string sid;
+ std::string name;
+ bool hidden;
};
/** Every SERVER connection inbound or outbound is represented by an object of
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 */
+
+ static const unsigned int FMODE_MAX_LENGTH = 350;
+
+ /** Checks if the given servername and sid are both free
+ */
+ bool CheckDuplicate(const std::string& servername, const std::string& sid);
+
public:
time_t age;
* If the length of a single line is more than 480-NICKMAX
* in length, it is split over multiple lines.
*/
- void SendFJoins(TreeServer* Current, Channel* c);
+ void SendFJoins(Channel* c);
/** Send G, Q, Z and E lines */
- void SendXLines(TreeServer* Current);
+ void SendXLines();
/** Send channel modes and topics */
- void SendChannelModes(TreeServer* Current);
+ void SendChannelModes();
/** send all users and their oper state/modes */
- void SendUsers(TreeServer* Current);
+ void SendUsers();
/** This function is called when we want to send a netburst to a local
* server. There is a set order we must do this, because for example
/** Handle server quit on close
*/
virtual void Close();
+
+ /** Returns true if this server was introduced to the rest of the network
+ */
+ bool Introduced();
};
#endif