summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/socket.h6
-rw-r--r--src/listensocket.cpp10
-rw-r--r--src/modules/m_httpd.cpp9
-rw-r--r--src/modules/m_spanningtree/utils.cpp7
-rw-r--r--src/modules/m_spanningtree/utils.h2
-rw-r--r--src/threadengines/threadengine_win32.cpp7
6 files changed, 19 insertions, 22 deletions
diff --git a/include/socket.h b/include/socket.h
index f7590c72d..a2b727499 100644
--- a/include/socket.h
+++ b/include/socket.h
@@ -184,16 +184,14 @@ class CoreExport ListenSocketBase : public EventHandler
void AcceptInternal();
/** Called when a new connection has successfully been accepted on this listener.
- * @param ipconnectedto The IP address the connection arrived on
* @param fd The file descriptor of the new connection
- * @param incomingip The IP from which the connection was made
*/
- virtual void OnAcceptReady(const std::string &ipconnectedto, int fd, const std::string &incomingip) = 0;
+ virtual void OnAcceptReady(int fd) = 0;
};
class CoreExport ClientListenSocket : public ListenSocketBase
{
- virtual void OnAcceptReady(const std::string &ipconnectedto, int fd, const std::string &incomingip);
+ virtual void OnAcceptReady(int fd);
public:
ClientListenSocket(InspIRCd* Instance, int port, const std::string &addr) : ListenSocketBase(Instance, port, addr) { }
};
diff --git a/src/listensocket.cpp b/src/listensocket.cpp
index f40afd123..ed99c2787 100644
--- a/src/listensocket.cpp
+++ b/src/listensocket.cpp
@@ -125,15 +125,9 @@ void ListenSocketBase::AcceptInternal()
}
}
- std::string server_addr;
- std::string client_addr;
- int dummy_port;
- irc::sockets::satoap(&server, server_addr, dummy_port);
- irc::sockets::satoap(&client, client_addr, dummy_port);
-
ServerInstance->SE->NonBlocking(incomingSockfd);
ServerInstance->stats->statsAccept++;
- this->OnAcceptReady(server_addr, incomingSockfd, client_addr);
+ this->OnAcceptReady(incomingSockfd);
}
void ListenSocketBase::HandleEvent(EventType e, int err)
@@ -152,7 +146,7 @@ void ListenSocketBase::HandleEvent(EventType e, int err)
}
}
-void ClientListenSocket::OnAcceptReady(const std::string &ipconnectedto, int nfd, const std::string &incomingip)
+void ClientListenSocket::OnAcceptReady(int nfd)
{
ServerInstance->Users->AddUser(ServerInstance, nfd, false, &client, &server);
}
diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp
index c40f6055a..bdf4e424e 100644
--- a/src/modules/m_httpd.cpp
+++ b/src/modules/m_httpd.cpp
@@ -48,7 +48,7 @@ class HttpServerSocket : public BufferedSocket
public:
- HttpServerSocket(InspIRCd* SI, int newfd, char* ip, FileReader* ind) : BufferedSocket(SI, newfd, ip), index(ind), postsize(0)
+ HttpServerSocket(InspIRCd* SI, int newfd, const char* ip, FileReader* ind) : BufferedSocket(SI, newfd, ip), index(ind), postsize(0)
{
InternalState = HTTP_SERVE_WAIT_REQUEST;
}
@@ -353,9 +353,12 @@ class HttpListener : public ListenSocketBase
this->index = idx;
}
- virtual void OnAcceptReady(const std::string &ipconnectedto, int nfd, const std::string &incomingip)
+ virtual void OnAcceptReady(int nfd)
{
- new HttpServerSocket(ServerInstance, nfd, (char *)incomingip.c_str(), index); // ugly cast courtesy of bufferedsocket
+ int port;
+ std::string incomingip;
+ irc::sockets::satoap(&client, incomingip, port);
+ new HttpServerSocket(ServerInstance, nfd, incomingip.c_str(), index);
}
};
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 8a17baf84..ee12712b8 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -29,10 +29,13 @@
/* $ModDep: m_spanningtree/resolvers.h m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h */
/* Create server sockets off a listener. */
-void ServerSocketListener::OnAcceptReady(const std::string &ipconnectedto, int newsock, const std::string &incomingip)
+void ServerSocketListener::OnAcceptReady(int newsock)
{
bool found = false;
- char *ip = (char *)incomingip.c_str(); // XXX ugly cast
+ int port;
+ std::string incomingip;
+ irc::sockets::satoap(&client, incomingip, port);
+ char *ip = const_cast<char*>(incomingip.c_str());
found = (std::find(Utils->ValidIPs.begin(), Utils->ValidIPs.end(), ip) != Utils->ValidIPs.end());
if (!found)
diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h
index a32b5a445..81c47267d 100644
--- a/src/modules/m_spanningtree/utils.h
+++ b/src/modules/m_spanningtree/utils.h
@@ -49,7 +49,7 @@ class ServerSocketListener : public ListenSocketBase
this->Utils = u;
}
- virtual void OnAcceptReady(const std::string &ipconnectedto, int nfd, const std::string &incomingip);
+ virtual void OnAcceptReady(int nfd);
};
typedef std::map<TreeServer*,TreeServer*> TreeServerList;
diff --git a/src/threadengines/threadengine_win32.cpp b/src/threadengines/threadengine_win32.cpp
index eb710bbde..361d25cc4 100644
--- a/src/threadengines/threadengine_win32.cpp
+++ b/src/threadengines/threadengine_win32.cpp
@@ -55,7 +55,7 @@ class ThreadSignalSocket : public BufferedSocket
{
SocketThread* parent;
public:
- ThreadSignalSocket(SocketThread* t, InspIRCd* SI, int newfd, char* ip)
+ ThreadSignalSocket(SocketThread* t, InspIRCd* SI, int newfd, const char* ip)
: BufferedSocket(SI, newfd, ip), parent(t)
{
}
@@ -86,11 +86,10 @@ class ThreadSignalListener : public ListenSocketBase
}
}
- virtual void OnAcceptReady(const std::string &ipconnectedto, int nfd, const std::string &incomingip)
+ virtual void OnAcceptReady(int nfd)
{
- new ThreadSignalSocket(parent, ServerInstance, nfd, const_cast<char*>(ipconnectedto.c_str()));
+ new ThreadSignalSocket(parent, ServerInstance, nfd, "");
ServerInstance->SE->DelFd(this);
- // XXX unsafe casts suck
}
/* Using getsockname and ntohs, we can determine which port number we were allocated */
int GetPort()