]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix incomple memset() in irc::sockets::aptosa, add support for converting empty addresses
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 13 May 2009 23:43:27 +0000 (23:43 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 13 May 2009 23:43:27 +0000 (23:43 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11383 e03df62e-2008-0410-955e-edbf42e46eb7

src/socket.cpp

index 3a15c8a56843da90ced2d5b4d9d8ce9b70a21d84..8b016152d34c9736d487fcfba65c9d335ddd0604 100644 (file)
@@ -278,8 +278,19 @@ int irc::sockets::insp_aton(const char* a, insp_inaddr* n)
 
 int irc::sockets::aptosa(const char* addr, int port, irc::sockets::sockaddrs* sa)
 {
-       memset(sa, 0, sizeof(sa));
-       if (inet_pton(AF_INET, addr, &sa->in4.sin_addr) > 0)
+       memset(sa, 0, sizeof(*sa));
+       if (!addr || !*addr)
+       {
+#ifdef IPV6
+               sa->in6.sin6_family = AF_INET6;
+               sa->in6.sin6_port = htons(port);
+#else
+               sa->in4.sin_family = AF_INET;
+               sa->in4.sin_port = htons(port);
+#endif
+               return true;
+       }
+       else if (inet_pton(AF_INET, addr, &sa->in4.sin_addr) > 0)
        {
                sa->in4.sin_family = AF_INET;
                sa->in4.sin_port = htons(port);