summaryrefslogtreecommitdiff
path: root/methods/connect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'methods/connect.cc')
-rw-r--r--methods/connect.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/methods/connect.cc b/methods/connect.cc
index f6fb14769..dc2aee05c 100644
--- a/methods/connect.cc
+++ b/methods/connect.cc
@@ -144,7 +144,9 @@ static bool DoConnect(struct addrinfo *Addr,std::string const &Host,
return _error->Errno("connect",_("Could not connect to %s:%s (%s)."),Host.c_str(),
Service,Name);
}
-
+
+ Owner->SetFailReason("");
+
return true;
}
/*}}}*/
@@ -312,12 +314,15 @@ bool Connect(std::string Host,int Port,const char *Service,
size_t stackSize = 0;
// try to connect in the priority order of the srv records
std::string initialHost{std::move(Host)};
+ auto const initialPort = Port;
while(SrvRecords.empty() == false)
{
_error->PushToStack();
++stackSize;
// PopFromSrvRecs will also remove the server
- Host = PopFromSrvRecs(SrvRecords).target;
+ auto Srv = PopFromSrvRecs(SrvRecords);
+ Host = Srv.target;
+ Port = Srv.port;
auto const ret = ConnectToHostname(Host, Port, Service, DefPort, Fd, TimeOut, Owner);
if (ret)
{
@@ -327,6 +332,7 @@ bool Connect(std::string Host,int Port,const char *Service,
}
}
Host = std::move(initialHost);
+ Port = initialPort;
// we have no (good) SrvRecords for this host, connect right away
_error->PushToStack();