summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-05-04 23:24:00 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-05-04 23:24:00 +0000
commitfa3e1d5d4d803840b6bf06d9116353fab55fc686 (patch)
tree05e7cb9e0c792944d137fc264b4b684d0cf56fac /include
parent486a4bb77ce26fe69529e579464f494e619d1922 (diff)
Canonicalize bind addresses when creating listen sockets
This fixes /stats p output for SSL ports not working if a non-canonical address is used in the configuration (IPv6 with :: or mixed hexadecimal case). This also cleans up some now-useless sockaddr[2] allocations. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11361 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/socket.h32
1 files changed, 14 insertions, 18 deletions
diff --git a/include/socket.h b/include/socket.h
index a4e9cf43b..c7b87d583 100644
--- a/include/socket.h
+++ b/include/socket.h
@@ -174,21 +174,22 @@ class CoreExport ListenSocketBase : public EventHandler
InspIRCd* ServerInstance;
/** Socket description (shown in stats p) */
std::string desc;
- /** Socket address family */
- int family;
+
/** Address socket is bound to */
std::string bind_addr;
/** Port socket is bound to */
int bind_port;
- static sockaddr *sock_us;
-
- static sockaddr *client;
-
- static sockaddr *raddr;
-
- static unsigned int socketcount;
-
+ /** The client address if the most recently connected client.
+ * Should only be used when accepting a new client.
+ */
+ static irc::sockets::sockaddrs client;
+ /** The server address used by the most recently connected client.
+ * This may differ from the bind address by having a nonzero address,
+ * if the port is wildcard bound, or being IPv4 on a 6to4 IPv6 port.
+ * The address family will always match that of "client"
+ */
+ static irc::sockets::sockaddrs server;
public:
/** Create a new listening socket
*/
@@ -213,16 +214,11 @@ class CoreExport ListenSocketBase : public EventHandler
}
/** Get port number for socket
*/
- int GetPort()
- {
- return bind_port;
- }
+ int GetPort() { return bind_port; }
+
/** Get IP address socket is bound to
*/
- std::string &GetIP()
- {
- return bind_addr;
- }
+ const std::string &GetIP() { return bind_addr; }
/** Handles sockets internals crap of a connection, convenience wrapper really
*/