diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-05-04 23:24:00 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-05-04 23:24:00 +0000 |
commit | fa3e1d5d4d803840b6bf06d9116353fab55fc686 (patch) | |
tree | 05e7cb9e0c792944d137fc264b4b684d0cf56fac /include/socket.h | |
parent | 486a4bb77ce26fe69529e579464f494e619d1922 (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/socket.h')
-rw-r--r-- | include/socket.h | 32 |
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 */ |