summaryrefslogtreecommitdiff
path: root/src/sockets.cpp
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2022-12-17 12:24:32 +0000
committerSadie Powell <sadie@witchery.services>2022-12-17 12:39:48 +0000
commitf6e5e6a2b4dd3f5e6e9e5c152dd92fcd9bc440f2 (patch)
treeb61984b694e0d89f3c627e3fdeba502f8d048389 /src/sockets.cpp
parentdfdcd3021a482182827ba00782acd5a53442d21a (diff)
Add sockaddrs::str to stringify a sockaddrs properly.
Also clean up the socket code slightly.
Diffstat (limited to 'src/sockets.cpp')
-rw-r--r--src/sockets.cpp45
1 files changed, 38 insertions, 7 deletions
diff --git a/src/sockets.cpp b/src/sockets.cpp
index 34aa946ba..85bd41d8f 100644
--- a/src/sockets.cpp
+++ b/src/sockets.cpp
@@ -80,18 +80,49 @@ int sockaddrs::port() const
Anope::string sockaddrs::addr() const
{
- char address[INET6_ADDRSTRLEN];
-
switch (sa.sa_family)
{
case AF_INET:
- if (inet_ntop(AF_INET, &sa4.sin_addr, address, sizeof(address)))
- return address;
+ {
+ char v4address[INET_ADDRSTRLEN];
+ if (inet_ntop(AF_INET, &sa4.sin_addr, v4address, sizeof(v4address)))
+ return v4address;
break;
+ }
case AF_INET6:
- if (inet_ntop(AF_INET6, &sa6.sin6_addr, address, sizeof(address)))
- return address;
+ {
+ char v6address[INET6_ADDRSTRLEN];
+ if (inet_ntop(AF_INET6, &sa6.sin6_addr, v6address, sizeof(v6address)))
+ return v6address;
break;
+ }
+ case AF_UNIX:
+ return saun.sun_path;
+ default:
+ break;
+ }
+
+ return "";
+}
+
+Anope::string sockaddrs::str() const
+{
+ switch (sa.sa_family)
+ {
+ case AF_INET:
+ {
+ char v4address[INET_ADDRSTRLEN];
+ if (!inet_ntop(AF_INET, &sa4.sin_addr, v4address, sizeof(v4address)))
+ strcpy(v4address, "0.0.0.0");
+ return Anope::printf("%s:%u", v4address, sa4.sin_port);
+ }
+ case AF_INET6:
+ {
+ char v6address[INET6_ADDRSTRLEN];
+ if (!inet_ntop(AF_INET6, &sa6.sin6_addr, v6address, sizeof(v6address)))
+ strcpy(v6address, "0:0:0:0:0:0:0:0");
+ return Anope::printf("[%s]:%u", v6address, sa6.sin6_port);
+ }
case AF_UNIX:
return saun.sun_path;
default:
@@ -503,7 +534,7 @@ Socket::Socket()
throw CoreException("Socket::Socket() ?");
}
-Socket::Socket(int s, bool f, int type)
+Socket::Socket(int s, int f, int type)
{
this->io = &NormalSocketIO;
this->family = f;