]> git.tdb.fi Git - libs/net.git/blobdiff - source/resolve.cpp
Header changes
[libs/net.git] / source / resolve.cpp
index 121b152b154c12d5e47867352ceae68d78e9ea63..6575dd2502dea51d07098a35af7e7ffdf93b7347 100644 (file)
@@ -1,17 +1,10 @@
-/* $Id$
-
-This file is part of libmspnet
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
 #ifdef WIN32
 #define _WIN32_WINNT 0x0501
 #include <ws2tcpip.h>
 #else
 #include <netdb.h>
 #endif
-#include <msp/strings/formatter.h>
+#include <msp/strings/format.h>
 #include "socket.h"
 #include "resolve.h"
 
@@ -23,23 +16,34 @@ namespace Net {
 SockAddr *resolve(const string &s, Family family)
 {
        string host, serv;
-       unsigned colon=s.find(':');
-       if(colon!=string::npos)
+       if(s[0]=='[')
        {
-               host=s.substr(0, colon);
-               serv=s.substr(colon+1);
+               unsigned bracket = s.find(']');
+               host = s.substr(1, bracket-1);
+               unsigned colon = s.find(':', bracket);
+               if(colon!=string::npos)
+                       serv = s.substr(colon+1);
        }
        else
-               host=s;
+       {
+               unsigned colon = s.find(':');
+               if(colon!=string::npos)
+               {
+                       host = s.substr(0, colon);
+                       serv = s.substr(colon+1);
+               }
+               else
+                       host = s;
+       }
 
-       addrinfo hints={0, family, 0, 0, 0, 0, 0, 0};
+       addrinfo hints = {0, family, 0, 0, 0, 0, 0, 0};
        addrinfo *res;
-       const char *chost=(host.empty() ? 0 : host.c_str());
-       const char *cserv=(serv.empty() ? 0 : serv.c_str());
-       int err=getaddrinfo(chost, cserv, &hints, &res);
+       const char *chost = (host.empty() ? 0 : host.c_str());
+       const char *cserv = (serv.empty() ? 0 : serv.c_str());
+       int err = getaddrinfo(chost, cserv, &hints, &res);
        if(err==0)
        {
-               SockAddr *addr=SockAddr::create(*res->ai_addr);
+               SockAddr *addr = SockAddr::create(*res->ai_addr);
                freeaddrinfo(res);
                return addr;
        }
@@ -52,14 +56,14 @@ SockAddr *resolve(const string &s, Family family)
 }
 
                /*sockaddr sa;
-               unsigned size=fill_sockaddr(sa);
+               unsigned size = fill_sockaddr(sa);
                char hst[128];
                char srv[128];
-               int err=getnameinfo(&sa, size, hst, 128, srv, 128, 0);
+               int err = getnameinfo(&sa, size, hst, 128, srv, 128, 0);
                if(err==0)
                {
-                       host=hst;
-                       serv=srv;
+                       host = hst;
+                       serv = srv;
                }*/
 
 } // namespace Net