U++ framework
Do not panic. Ask here before giving up.

Home » U++ Library support » U++ MT-multithreading and servers » [SOLVED] TcpSocket Connect error
Re: TcpSocket Connect error [message #42425 is a reply to message #42396] Thu, 13 March 2014 08:43 Go to previous messageGo to previous message
steffen is currently offline  steffen
Messages: 38
Registered: May 2007
Location: Denmark
Member

Here is a patched version of RawConnect, I have NOT tried it with IPv6:
bool TcpSocket::RawConnect(addrinfo *arp)
{
	if(!arp) {
		SetSockError("connect", -1, "not found");
		return false;
	}
	String err;
	for(int pass = 0; pass < 2; pass++) {
		addrinfo *rp = arp;
		while(rp)
		{
			if(rp->ai_family == AF_INET == !pass) // Try to connect IPv4 in the first pass
			{
				if (Open(rp->ai_family, rp->ai_socktype, rp->ai_protocol))
				{
					int r = connect(socket, rp->ai_addr, (int)rp->ai_addrlen);
					if(r != 0)
					{
						if (WaitWrite())
						{
							int optval = 0;
							socklen_t optlen = sizeof(optval);
							if (getsockopt(GetSOCKET(), SOL_SOCKET, SO_ERROR, (char*)&optval, &optlen) == 0)
							{
								if (optval == 0)
									r = 0;
								else
								{
									if(err.GetCount())
										err << '\n';
									err << TcpSocketErrorDesc(optval);
								}
							}
						}
					}
					if (r == 0)
					{
						mode = CONNECT;
						return true;
					}
					if(err.GetCount())
						err << '\n';
					err << TcpSocketErrorDesc(GetErrorCode());
					Close();
				}
			}
			rp = rp->ai_next;
		}
	}
	SetSockError("connect", -1, Nvl(err, "failed"));
	return false;
}

And the output from my connect test is:
Quote:

Test1 Connecting
SUCCESS: No Connection to non existing server.

Test2 Connecting
SUCCESS: No Connection to non existing server.


Regards,
Steffen
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: SSL handshake error
Next Topic: How to use Skylark on external server
Goto Forum:
  


Current Time: Sat May 16 04:21:58 GMT+2 2026

Total time taken to generate the page: 0.00498 seconds