~singpolyma/biboumi

541af5236e69bcc86c6f993d09358173596483a7 — Florent Le Coz 10 years ago 730cc6e
Consider that the connect() succeded if errno EISCONN

Apparently on some systems, subsquent connect() calls may fail with EISCONN
error, to indicate that the connection succeded in the background, instead
of returning 0.
1 files changed, 2 insertions(+), 1 deletions(-)

M src/network/socket_handler.cpp
M src/network/socket_handler.cpp => src/network/socket_handler.cpp +2 -1
@@ 97,7 97,8 @@ void SocketHandler::connect(const std::string& address, const std::string& port)

  for (struct addrinfo* rp = addr_res; rp; rp = rp->ai_next)
    {
      if (::connect(this->socket, rp->ai_addr, rp->ai_addrlen) == 0)
      if (::connect(this->socket, rp->ai_addr, rp->ai_addrlen) == 0
          || errno == EISCONN)
        {
          log_info("Connection success.");
          this->connected = true;