summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inspircd_io.cpp35
-rw-r--r--src/socket.cpp2
2 files changed, 23 insertions, 14 deletions
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index f4ab7ce07..9fc1bd410 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -795,7 +795,7 @@ void ServerConfig::Read(bool bail, userrec* user)
}
}
-void Exit (int status)
+void Exit(int status)
{
if (Config->log_file)
fclose(Config->log_file);
@@ -830,7 +830,7 @@ void Rehash(int status)
-void Start (void)
+void Start()
{
printf("\033[1;32mInspire Internet Relay Chat Server, compiled %s at %s\n",__DATE__,__TIME__);
printf("(C) ChatSpike Development team.\033[0m\n\n");
@@ -865,7 +865,7 @@ void SetSignals()
}
-int DaemonSeed (void)
+bool DaemonSeed()
{
int childpid;
if ((childpid = fork ()) < 0)
@@ -886,7 +886,7 @@ int DaemonSeed (void)
if (getrlimit(RLIMIT_CORE, &rl) == -1)
{
log(DEFAULT,"Failed to getrlimit()!");
- return(FALSE);
+ return false;
}
else
{
@@ -896,7 +896,7 @@ int DaemonSeed (void)
}
}
- return (TRUE);
+ return true;
}
@@ -1459,8 +1459,14 @@ int ServerConfig::ConfValueInteger(char* tag, char* var, int index, std::strings
return atoi(result);
}
-// This will bind a socket to a port. It works for UDP/TCP
-int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)
+/** This will bind a socket to a port. It works for UDP/TCP.
+ * If a hostname is given to bind to, the function will first
+ * attempt to resolve the hostname, then bind to the IP the
+ * hostname resolves to. This is a blocking lookup blocking for
+ * a maximum of one second before it times out, using the DNS
+ * server specified in the configuration file.
+ */
+bool BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)
{
memset((char *)&server,0,sizeof(server));
struct in_addr addy;
@@ -1483,7 +1489,7 @@ int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server
else
{
log(DEFAULT,"WARNING: Could not resolve '%s' to an IP for binding to on port %d",addr,port);
- return(FALSE);
+ return false;
}
}
server.sin_family = AF_INET;
@@ -1501,7 +1507,7 @@ int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server
server.sin_port = htons(port);
if (bind(sockfd,(struct sockaddr*)&server,sizeof(server)) < 0)
{
- return(ERROR);
+ return false;
}
else
{
@@ -1509,25 +1515,28 @@ int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server
if (listen(sockfd, Config->MaxConn) == -1)
{
log(DEFAULT,"ERROR in listen(): %s",strerror(errno));
- return(FALSE);
+ return false;
}
else
{
- return(TRUE);
+ return true;
}
}
}
// Open a TCP Socket
-int OpenTCPSocket (void)
+int OpenTCPSocket()
{
int sockfd;
int on = 1;
struct linger linger = { 0 };
if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
+ {
+ log(DEFAULT,"Error creating TCP socket: %s",strerror(errno));
return (ERROR);
+ }
else
{
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on));
@@ -1580,7 +1589,7 @@ int BindPorts()
return(ERROR);
}
- if (BindSocket(openSockfd[BoundPortCount],client,server,Config->ports[count],Config->addrs[count]) == ERROR)
+ if (!BindSocket(openSockfd[BoundPortCount],client,server,Config->ports[count],Config->addrs[count]))
{
log(DEFAULT,"InspIRCd: startup: failed to bind port [%s:%lu]: %s",Config->addrs[count],(unsigned long)Config->ports[count],strerror(errno));
}
diff --git a/src/socket.cpp b/src/socket.cpp
index 2868375a5..787e656da 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -76,7 +76,7 @@ InspSocket::InspSocket(const std::string &ahost, int aport, bool listening, unsi
}
else
{
- if (BindSocket(this->fd,this->client,this->server,aport,(char*)ahost.c_str()) == ERROR)
+ if (!BindSocket(this->fd,this->client,this->server,aport,(char*)ahost.c_str()))
{
this->Close();
this->fd = -1;