version 0.1.7
[fms.git] / src / freenet / fcpv2.cpp
index 42995f4..fdc83fb 100644 (file)
@@ -66,7 +66,7 @@ const bool FCPv2::Connect(const char *host, const int port)
        struct sockaddr_storage m_serveraddr;\r
 \r
        std::ostringstream portstring;\r
-       addrinfo hint,*result;\r
+       addrinfo hint,*result,*current;\r
        result=NULL;\r
        portstring << port;\r
 \r
@@ -80,16 +80,19 @@ const bool FCPv2::Connect(const char *host, const int port)
 \r
        if(result)\r
        {\r
-               memset(&m_serveraddr,0,sizeof(struct sockaddr_storage));\r
+               for(current=result; current!=NULL && m_serversocket==-1; current=current->ai_next)\r
+               {\r
+                       memset(&m_serveraddr,0,sizeof(struct sockaddr_storage));\r
 \r
-               m_serversocket=socket(result->ai_family,result->ai_socktype,result->ai_protocol);\r
+                       m_serversocket=socket(current->ai_family,current->ai_socktype,current->ai_protocol);\r
 \r
-               if(m_serversocket!=-1)\r
-               {\r
-                       rval=connect(m_serversocket,result->ai_addr,result->ai_addrlen);\r
-                       if(rval==-1)\r
+                       if(m_serversocket!=-1)\r
                        {\r
-                               Disconnect();\r
+                               rval=connect(m_serversocket,current->ai_addr,current->ai_addrlen);\r
+                               if(rval==-1)\r
+                               {\r
+                                       Disconnect();\r
+                               }\r
                        }\r
                }\r
 \r