]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socket.cpp
Passing invalid instance to dns isnt a good idea
[user/henk/code/inspircd.git] / src / socket.cpp
index 1916bb555989bede5609ab1458c7ddccaa54698a..693685428bb3340b219cffe20a15b0dd6e624a6f 100644 (file)
@@ -25,7 +25,6 @@
 #include "message.h"
 
 extern InspIRCd* ServerInstance;
-extern ServerConfig* Config;
 extern time_t TIME;
 
 /* Used when comparing CIDR masks for the modulus bits left over.
@@ -209,6 +208,19 @@ bool MatchCIDR(const char* address, const char* cidr_mask, bool match_with_usern
        return MatchCIDRBits(addr_raw, mask_raw, bits);
 }
 
+inline void Blocking(int s)
+{
+       int flags = fcntl(s, F_GETFL, 0);
+       fcntl(s, F_SETFL, flags ^ O_NONBLOCK);
+}
+
+inline void NonBlocking(int s)
+{
+       int flags = fcntl(s, F_GETFL, 0);
+       fcntl(s, F_SETFL, flags | O_NONBLOCK);
+}
+
+
 /** This will bind a socket to a port. It works for UDP/TCP.
  * It can only bind to IP addresses, if you wish to bind to hostnames
  * you should first resolve them using class 'Resolver'.
@@ -260,7 +272,7 @@ bool BindSocket(int sockfd, insp_sockaddr client, insp_sockaddr server, int port
        else
        {
                log(DEBUG,"Bound port %s:%d",*addr ? addr : "*",port);
-               if (listen(sockfd, Config->MaxConn) == -1)
+               if (listen(sockfd, ServerInstance->Config->MaxConn) == -1)
                {
                        log(DEFAULT,"ERROR in listen(): %s",strerror(errno));
                        return false;
@@ -299,6 +311,7 @@ int OpenTCPSocket()
 
 bool HasPort(int port, char* addr)
 {
+       ServerConfig* Config = ServerInstance->Config;
        for (unsigned long count = 0; count < ServerInstance->stats->BoundPortCount; count++)
        {
                if ((port == Config->ports[count]) && (!strcasecmp(Config->addrs[count],addr)))
@@ -315,6 +328,7 @@ int BindPorts(bool bail)
        insp_sockaddr client, server;
        int clientportcount = 0;
        int BoundPortCount = 0;
+       ServerConfig* Config = ServerInstance->Config;
 
        if (!bail)
        {