From d29ca254a4a9062ecaffe9395454f3a654d4e06a Mon Sep 17 00:00:00 2001 From: danieldg Date: Thu, 21 Jan 2010 20:47:02 +0000 Subject: Remove unneeded save of errno git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12309 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/inspsocket.cpp | 6 ------ src/listensocket.cpp | 46 ++++++++++++++++++++-------------------------- src/socket.cpp | 8 +++++--- 3 files changed, 25 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/inspsocket.cpp b/src/inspsocket.cpp index 5099df882..652799b9c 100644 --- a/src/inspsocket.cpp +++ b/src/inspsocket.cpp @@ -118,11 +118,6 @@ BufferedSocketError BufferedSocket::BeginConnect(const irc::sockets::sockaddrs& void StreamSocket::Close() { - /* Save this, so we dont lose it, - * otherise on failure, error messages - * might be inaccurate. - */ - int save = errno; if (this->fd > -1) { if (IOHook) @@ -142,7 +137,6 @@ void StreamSocket::Close() ServerInstance->SE->Close(this); fd = -1; } - errno = save; } CullResult StreamSocket::cull() diff --git a/src/listensocket.cpp b/src/listensocket.cpp index e77a585ef..6ae598ad3 100644 --- a/src/listensocket.cpp +++ b/src/listensocket.cpp @@ -17,40 +17,34 @@ #include "socket.h" #include "socketengine.h" -ListenSocket::ListenSocket(ConfigTag* tag, const std::string& addr, int port) +ListenSocket::ListenSocket(ConfigTag* tag, const irc::sockets::sockaddrs& bind_to) : bind_tag(tag) { - irc::sockets::sockaddrs bind_to; - - // canonicalize address if it is defined - if (!irc::sockets::aptosa(addr, port, bind_to)) - { - fd = -1; - return; - } irc::sockets::satoap(bind_to, bind_addr, bind_port); bind_desc = irc::sockets::satouser(bind_to); fd = socket(bind_to.sa.sa_family, SOCK_STREAM, 0); - if (this->fd > -1) - { - ServerInstance->SE->SetReuse(fd); - int rv = ServerInstance->SE->Bind(this->fd, bind_to); - if (rv >= 0) - rv = ServerInstance->SE->Listen(this->fd, ServerInstance->Config->MaxConn); + if (this->fd == -1) + return; - if (rv < 0) - { - ServerInstance->SE->Shutdown(this, 2); - ServerInstance->SE->Close(this); - this->fd = -1; - } - else - { - ServerInstance->SE->NonBlocking(this->fd); - ServerInstance->SE->AddFd(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE); - } + ServerInstance->SE->SetReuse(fd); + int rv = ServerInstance->SE->Bind(this->fd, bind_to); + if (rv >= 0) + rv = ServerInstance->SE->Listen(this->fd, ServerInstance->Config->MaxConn); + + if (rv < 0) + { + int errstore = errno; + ServerInstance->SE->Shutdown(this, 2); + ServerInstance->SE->Close(this); + this->fd = -1; + errno = errstore; + } + else + { + ServerInstance->SE->NonBlocking(this->fd); + ServerInstance->SE->AddFd(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE); } } diff --git a/src/socket.cpp b/src/socket.cpp index 0f2fbea22..0ceb40330 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -86,8 +86,9 @@ int InspIRCd::BindPorts(FailedPortList &failed_ports) while (0 != (portno = portrange.GetToken())) { irc::sockets::sockaddrs bindspec; - irc::sockets::aptosa(Addr, portno, bindspec); - std::string bind_readable = irc::sockets::satouser(bindspec); + if (!irc::sockets::aptosa(Addr, portno, bindspec)) + continue; + std::string bind_readable = bindspec.str(); bool skip = false; for (std::vector::iterator n = old_ports.begin(); n != old_ports.end(); ++n) @@ -101,7 +102,8 @@ int InspIRCd::BindPorts(FailedPortList &failed_ports) } if (!skip) { - ListenSocket *ll = new ListenSocket(tag, Addr, portno); + ListenSocket* ll = new ListenSocket(tag, bindspec); + if (ll->GetFd() > -1) { bound++; -- cgit v1.3.1-10-gc9f91