#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 */
- Autoconnect* myautoconnect; /* Autoconnect used to cause this connection, if any */
+ reference<Autoconnect> myautoconnect; /* Autoconnect used to cause this connection, if any */
time_t age;
/** Because most of the I/O gubbins are encapsulated within
* 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, ListenSocketBase* via, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server);
/** Get link state
*/
*/
void CleanNegotiationInfo();
+ bool cull();
/** Destructor
*/
~TreeSocket();
/** Handle ERROR command */
bool 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);
*/
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
*/