X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspsocket.h;h=3e65bf677f07606860d2420f38c4355a60579608;hb=17d91b065e98963451e595d7697357a40a1c4425;hp=af92615ea19144cae9647f72b895145fda74bf98;hpb=855f0d98e90a077f46b456e98ebb8a9b290488f6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspsocket.h b/include/inspsocket.h index af92615ea..3e65bf677 100644 --- a/include/inspsocket.h +++ b/include/inspsocket.h @@ -2,14 +2,11 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. - * E-mail: - * - * - * - * Written by Craig Edwards, Craig McLure, and others. + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * * This program is free but copyrighted software; see - * the file COPYING for details. + * the file COPYING for details. * * --------------------------------------------------- */ @@ -46,7 +43,7 @@ using irc::sockets::insp_aton; /** Used to time out socket connections */ -class SocketTimeout : public InspTimer +class CoreExport SocketTimeout : public InspTimer { private: InspSocket* sock; @@ -68,9 +65,14 @@ class SocketTimeout : public InspTimer * and use the InspSocket constructors to establish connections * and bindings. */ -class InspSocket : public EventHandler +class CoreExport InspSocket : public EventHandler { public: + + std::string cbindip; + + bool IsIOHooked; + InspIRCd* Instance; SocketTimeout* Timeout; @@ -97,23 +99,11 @@ class InspSocket : public EventHandler */ InspSocketState state; - /** - * The host being connected to, - * in sockaddr form - */ - insp_sockaddr addr; - - /** - * The host being connected to, - * in in_addr form - */ - insp_inaddr addy; - /** * This value is true if the * socket has timed out. */ - bool timeout; + bool timeout; /** * Socket input buffer, used by read(). The class which @@ -131,18 +121,6 @@ class InspSocket : public EventHandler */ char IP[MAXBUF]; - /** - * Client sockaddr structure used - * by accept() - */ - insp_sockaddr client; - - /** - * Server sockaddr structure used - * by accept() - */ - insp_sockaddr server; - /** * Used by accept() to indicate the * sizes of the sockaddr_in structures @@ -173,7 +151,7 @@ class InspSocket : public EventHandler */ bool WaitingForWriteEvent; - bool BindAddr(); + bool BindAddr(const std::string &ip); /** * The default constructor does nothing @@ -201,8 +179,10 @@ class InspSocket : public EventHandler * @param port The port number to connect to, or bind to * @param listening true to listen on the given host:port pair, or false to connect to them * @param maxtime Number of seconds to wait, if connecting, before the connection times out and an OnTimeout() event is generated + * @param connectbindip When creating an outbound connection, the IP to bind the connection to. If not defined, the port is not bound. + * @return On exit, GetState() returns I_ERROR if an error occured, and errno can be used to read the socket error. */ - InspSocket(InspIRCd* SI, const std::string &ipaddr, int port, bool listening, unsigned long maxtime); + InspSocket(InspIRCd* SI, const std::string &ipaddr, int port, bool listening, unsigned long maxtime, const std::string &connectbindip = ""); /** * This method is called when an outbound @@ -365,7 +345,7 @@ class InspSocket : public EventHandler */ void MarkAsClosed(); - void HandleEvent(EventType et); + void HandleEvent(EventType et, int errornum = 0); bool Readable(); };