Added errno include for linux.

This commit is contained in:
lotodore
2007-02-18 00:00:25 +00:00
parent 5a665432f9
commit 296399f166
3 changed files with 31 additions and 30 deletions
+20 -20
View File
@@ -108,30 +108,30 @@ void
ClientStateResolve::Process(ClientThread &client, GuiInterface &gui)
{
ClientData &data = client.GetData();
data.clientAddr.ss_family = data.addrFamily;
// Treat the server address as numbers first.
if (socket_string_to_addr(data.serverAddr.c_str(), data.addrFamily, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
// Set the port.
if (!socket_set_port(data.serverPort, data.addrFamily, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
if (socket_string_to_addr(data.serverAddr.c_str(), data.addrFamily, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
// Set the port.
if (!socket_set_port(data.serverPort, data.addrFamily, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
gui.showErrorConnectToServerDialog(ERR_SOCK_SET_PORT_FAILED, 0);
throw runtime_error("ClientStateResolve");
}
}
else
{
// This did not work out - try name resolution.
ostringstream tmpStr;
tmpStr << data.serverPort;
if (!socket_resolve(data.serverAddr.c_str(), tmpStr.str().c_str(), data.addrFamily, SOCK_STREAM, 0, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
}
}
else
{
// This did not work out - try name resolution.
ostringstream tmpStr;
tmpStr << data.serverPort;
if (!socket_resolve(data.serverAddr.c_str(), tmpStr.str().c_str(), data.addrFamily, SOCK_STREAM, 0, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize()))
{
gui.showErrorConnectToServerDialog(ERR_SOCK_RESOLVE_FAILED, 0); // TODO: use errno value
throw runtime_error("ClientStateResolve");
}
}
}
}
gui.showActionConnectToServerDialog(MSG_SOCK_RESOLVE_DONE);
client.SetState(ClientStateConnect::Instance());
}
@@ -158,11 +158,11 @@ ClientStateConnect::Process(ClientThread &client, GuiInterface &gui)
{
ClientData &data = client.GetData();
if (!IS_VALID_CONNECT(connect(data.sockfd, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize())))
{
if (!IS_VALID_CONNECT(connect(data.sockfd, (struct sockaddr *)&data.clientAddr, data.GetServerAddrSize())))
{
gui.showErrorConnectToServerDialog(ERR_SOCK_CONNECT_FAILED, SOCKET_ERRNO());
throw runtime_error("ClientStateResolve");
}
}
gui.showActionConnectToServerDialog(MSG_SOCK_RESOLVE_DONE);
client.SetState(ClientStateFinal::Instance());
}
+10 -10
View File
@@ -29,16 +29,16 @@ socket_set_port(unsigned port, int addrFamily, struct sockaddr *addr, int addrLe
if (addr)
{
if (addrFamily == AF_INET && addrLen >= sizeof(sockaddr_in))
{
((sockaddr_in *)&addr)->sin_port = htons(port);
retVal = true;
}
else if (addrFamily == AF_INET6 && addrLen >= sizeof(sockaddr_in6))
{
((sockaddr_in6 *)&addr)->sin6_port = htons(port);
retVal = true;
}
if (addrFamily == AF_INET && addrLen >= sizeof(sockaddr_in))
{
((sockaddr_in *)&addr)->sin_port = htons(port);
retVal = true;
}
else if (addrFamily == AF_INET6 && addrLen >= sizeof(sockaddr_in6))
{
((sockaddr_in6 *)&addr)->sin6_port = htons(port);
retVal = true;
}
}
return retVal;