X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Ffreenet%2Ffcpv2.cpp;h=fdc83fbef05f581813f9c4ef26a68254ce9548b5;hp=42995f4c898603be68ebca71c9a863ce2f7fb155;hb=f208e33c29132aacaec448e74341edea1b925a2a;hpb=d8ccfe2b3944adf07d35534459cdda19d15217c8 diff --git a/src/freenet/fcpv2.cpp b/src/freenet/fcpv2.cpp index 42995f4..fdc83fb 100644 --- a/src/freenet/fcpv2.cpp +++ b/src/freenet/fcpv2.cpp @@ -66,7 +66,7 @@ const bool FCPv2::Connect(const char *host, const int port) struct sockaddr_storage m_serveraddr; std::ostringstream portstring; - addrinfo hint,*result; + addrinfo hint,*result,*current; result=NULL; portstring << port; @@ -80,16 +80,19 @@ const bool FCPv2::Connect(const char *host, const int port) if(result) { - memset(&m_serveraddr,0,sizeof(struct sockaddr_storage)); + for(current=result; current!=NULL && m_serversocket==-1; current=current->ai_next) + { + memset(&m_serveraddr,0,sizeof(struct sockaddr_storage)); - m_serversocket=socket(result->ai_family,result->ai_socktype,result->ai_protocol); + m_serversocket=socket(current->ai_family,current->ai_socktype,current->ai_protocol); - if(m_serversocket!=-1) - { - rval=connect(m_serversocket,result->ai_addr,result->ai_addrlen); - if(rval==-1) + if(m_serversocket!=-1) { - Disconnect(); + rval=connect(m_serversocket,current->ai_addr,current->ai_addrlen); + if(rval==-1) + { + Disconnect(); + } } }