]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socket.cpp
Add extban +b C: - blocks matching masks from sending CTCP. Allows +e.
[user/henk/code/inspircd.git] / src / socket.cpp
index 1fd4d4443a571470c8838c73301c6e6895166011..8a3636ca5cc4b43364878aaa48e6c8368dec5cc8 100644 (file)
@@ -11,7 +11,7 @@
  * ---------------------------------------------------
  */
 
-/* $Core: libIRCDsocket */
+/* $Core */
 
 #include "inspircd.h"
 #include "socket.h"
@@ -25,7 +25,7 @@ sockaddr* ListenSocket::raddr = NULL;
 
 ListenSocket::ListenSocket(InspIRCd* Instance, int port, char* addr) : ServerInstance(Instance), desc("plaintext"), bind_addr(addr), bind_port(port)
 {
-       this->SetFd(OpenTCPSocket(addr));
+       this->SetFd(irc::sockets::OpenTCPSocket(addr));
        if (this->GetFd() > -1)
        {
                if (!Instance->BindSocket(this->fd,port,addr))
@@ -113,7 +113,7 @@ void ListenSocket::HandleEvent(EventType e, int err)
                                        in_port = ntohs(((sockaddr_in6*)sock_us)->sin6_port);
                                        inet_ntop(AF_INET6, &((const sockaddr_in6*)client)->sin6_addr, buf, sizeof(buf));
                                        socklen_t raddrsz = sizeof(sockaddr_in6);
-                                       if (getpeername(incomingSockfd, (sockaddr*) raddr, &raddrsz) == 0)
+                                       if (getsockname(incomingSockfd, (sockaddr*) raddr, &raddrsz) == 0)
                                                inet_ntop(AF_INET6, &((const sockaddr_in6*)raddr)->sin6_addr, target, sizeof(target));
                                        else
                                                ServerInstance->Logs->Log("SOCKET", DEBUG, "Can't get peername: %s", strerror(errno));
@@ -124,12 +124,11 @@ void ListenSocket::HandleEvent(EventType e, int err)
                                        inet_ntop(AF_INET, &((const sockaddr_in*)client)->sin_addr, buf, sizeof(buf));
                                        in_port = ntohs(((sockaddr_in*)sock_us)->sin_port);
                                        socklen_t raddrsz = sizeof(sockaddr_in);
-                                       if (getpeername(incomingSockfd, (sockaddr*) raddr, &raddrsz) == 0)
+                                       if (getsockname(incomingSockfd, (sockaddr*) raddr, &raddrsz) == 0)
                                                inet_ntop(AF_INET, &((const sockaddr_in*)raddr)->sin_addr, target, sizeof(target));
                                        else
                                                ServerInstance->Logs->Log("SOCKET", DEBUG, "Can't get peername: %s", strerror(errno));
                                }
-
                                ServerInstance->SE->NonBlocking(incomingSockfd);
                                ServerInstance->stats->statsAccept++;
                                ServerInstance->Users->AddUser(ServerInstance, incomingSockfd, in_port, false, this->family, client, target);   
@@ -356,7 +355,7 @@ int InspIRCd::BindPorts(bool, int &ports_found, FailedPortList &failed_ports)
                                        }
                                        else
                                        {
-                                               failed_ports.push_back(std::make_pair(Addr, portno));
+                                               failed_ports.push_back(std::make_pair((*Addr ? Addr : "*") + std::string(":") + ConvToStr(portno), strerror(errno)));
                                        }
                                        ports_found++;
                                }