#include "socket.h"
#include "inspircd.h"
#include "xline.h"
-#include "../transport.h"
#include "utils.h"
-#include "handshaketimer.h"
/*
* The server list in InspIRCd is maintained as two structures
bool auth_challenge; /* Did we auth using challenge/response */
int proto_version; /* Remote protocol version */
public:
- HandshakeTimer* hstimer; /* Handshake timer, needed to work around I/O hook buffering */
reference<Autoconnect> myautoconnect; /* Autoconnect used to cause this connection, if any */
time_t age;
* most of the action, and append a few of our own values
* to it.
*/
- TreeSocket(SpanningTreeUtilities* Util, std::string host, int port, unsigned long maxtime, const std::string &ServerName, const std::string &bindto, Autoconnect* myac, Module* HookMod = NULL);
+ TreeSocket(SpanningTreeUtilities* Util, const std::string& host, int port, unsigned long maxtime, const std::string &ServerName, const std::string &bindto, Autoconnect* myac, const std::string& Hook);
/** When a listening socket gives us a new file descriptor,
* we must associate it with a socket without creating a new
* connection. This constructor is used for this purpose.
*/
- TreeSocket(SpanningTreeUtilities* Util, int newfd, char* ip, Autoconnect* myac, Module* HookMod = NULL);
+ TreeSocket(SpanningTreeUtilities* Util, int newfd, ListenSocket* via, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server);
/** Get link state
*/
*/
void CleanNegotiationInfo();
+ CullResult cull();
/** Destructor
*/
~TreeSocket();
void Squit(TreeServer* Current, const std::string &reason);
/** FMODE command - server mode with timestamp checks */
- bool ForceMode(const std::string &source, parameterlist ¶ms);
+ void ForceMode(User* who, parameterlist ¶ms);
/** FTOPIC command */
bool ForceTopic(const std::string &source, parameterlist ¶ms);
/** FJOIN, similar to TS6 SJOIN, but not quite. */
- bool ForceJoin(const std::string &source, parameterlist ¶ms);
+ void ForceJoin(User* who, parameterlist ¶ms);
/* Used on nick collision ... XXX ugly function HACK */
int DoCollision(User *u, time_t remotets, const std::string &remoteident, const std::string &remoteip, const std::string &remoteuid);
void WriteLine(std::string line);
/** Handle ERROR command */
- bool Error(parameterlist ¶ms);
+ void Error(parameterlist ¶ms);
- /** remote MOTD. leet, huh? */
+ /** remote MOTD. */
bool Motd(const std::string &prefix, parameterlist ¶ms);
- /** remote ADMIN. leet, huh? */
+ /** remote ADMIN. */
bool Admin(const std::string &prefix, parameterlist ¶ms);
- /** Remote MODULES */
- bool Modules(const std::string &prefix, parameterlist ¶ms);
-
bool Stats(const std::string &prefix, parameterlist ¶ms);
/** Because the core won't let users or even SERVERS set +o,
/** SAVE to resolve nick collisions without killing */
bool ForceNick(const std::string &prefix, parameterlist ¶ms);
- /** PRIVMSG or NOTICE with server origin ONLY
- */
- bool ServerMessage(const std::string &messagetype, const std::string &prefix, parameterlist ¶ms, const std::string &sourceserv);
-
/** ENCAP command
*/
- bool Encap(const std::string &prefix, parameterlist ¶ms);
+ void Encap(User* who, parameterlist ¶ms);
/** OPERQUIT command
*/
/** Remove all modes from a channel, including statusmodes (+qaovh etc), simplemodes, parameter modes.
* This does not update the timestamp of the target channel, this must be done seperately.
*/
- bool RemoveStatus(const std::string &prefix, parameterlist ¶ms);
+ void RemoveStatus(User* source, parameterlist ¶ms);
/** <- (remote) <- SERVER
*/
*/
bool Inbound_Server(parameterlist ¶ms);
- /** Handle netsplit
+ /** Handle IRC line split
*/
- void Split(const std::string &line, parameterlist &n);
+ void Split(const std::string &line, std::string& prefix, std::string& command, parameterlist ¶ms);
/** Process complete line from buffer
*/
- bool ProcessLine(std::string &line);
+ void ProcessLine(std::string &line);
+
+ void ProcessConnectedLine(std::string& prefix, std::string& command, parameterlist& params);
/** Get this server's name
*/