mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-11 16:45:48 -04:00
Split up socket_connect into creation and connect calls
This commit is contained in:
parent
fb54ec45ec
commit
e91ce96900
@ -494,6 +494,7 @@
|
||||
<ClCompile Include="Inventory.c" />
|
||||
<ClCompile Include="Launcher.c" />
|
||||
<ClCompile Include="LBackend.c" />
|
||||
<ClCompile Include="LBackend_Android.c" />
|
||||
<ClCompile Include="LScreens.c" />
|
||||
<ClCompile Include="LWeb.c" />
|
||||
<ClCompile Include="LWidgets.c" />
|
||||
|
@ -785,6 +785,9 @@
|
||||
<ClCompile Include="TouchUI.c">
|
||||
<Filter>Source Files\2D</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LBackend_Android.c">
|
||||
<Filter>Source Files\Launcher</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\misc\windows\CCicon.rc">
|
||||
|
@ -489,10 +489,13 @@ static cc_result HttpConnection_Open(struct HttpConnection* conn, const struct H
|
||||
/* TODO: Connect in parallel instead of serial, but that's a lot of work */
|
||||
for (i = 0; i < numValidAddrs; i++)
|
||||
{
|
||||
res = Socket_Connect(&conn->socket, &addrs[i], false);
|
||||
if (!res) break;
|
||||
res = Socket_Create(&conn->socket, &addrs[i], false);
|
||||
if (res) { HttpConnection_Close(conn); continue; }
|
||||
|
||||
HttpConnection_Close(conn);
|
||||
res = Socket_Connect(conn->socket, &addrs[i]);
|
||||
if (res) { HttpConnection_Close(conn); continue; }
|
||||
|
||||
break; /* Successful connection */
|
||||
}
|
||||
if (res) return res;
|
||||
|
||||
|
@ -273,8 +273,10 @@ cc_result Socket_CheckWritable(cc_socket s, cc_bool* writable);
|
||||
/* Otherwise, attempts to resolve the input via DNS into one or more IP addresses */
|
||||
cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* addrs, int* numValidAddrs);
|
||||
|
||||
/* Allocates a new socket and then begins connecting to the given address */
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking);
|
||||
/* Allocates a new socket that is capable of connecting to the given address */
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking);
|
||||
/* Begins connecting to the given address */
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr);
|
||||
/* Attempts to read data from the given socket */
|
||||
/* NOTE: A closed socket may set modified to 0, but still return 'success' (i.e. 0) */
|
||||
cc_result Socket_Read(cc_socket s, cc_uint8* data, cc_uint32 count, cc_uint32* modified);
|
||||
|
@ -309,9 +309,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return i == 0 ? ERR_INVALID_ARGUMENT : 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, 0); // https://www.3dbrew.org/wiki/SOCU:socket
|
||||
if (*s == -1) return errno;
|
||||
@ -320,8 +319,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int flags = fcntl(*s, F_GETFL, 0);
|
||||
if (flags >= 0) fcntl(*s, F_SETFL, flags | O_NONBLOCK);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -452,9 +452,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return i == 0 ? ERR_INVALID_ARGUMENT : 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
cc_result res;
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (*s == -1) return errno;
|
||||
@ -462,8 +461,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
if (nonblocking) {
|
||||
fcntl(*s, F_SETFL, O_NONBLOCK);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -417,9 +417,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = net_socket(raw->sa_family, SOCK_STREAM, 0);
|
||||
if (*s < 0) return *s;
|
||||
@ -428,8 +427,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = -1; /* non-blocking mode */
|
||||
net_ioctl(*s, FIONBIO, &blocking_raw);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = net_connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = net_connect(s, raw, addr->size);
|
||||
return res < 0 ? res : 0;
|
||||
}
|
||||
|
||||
|
@ -391,7 +391,11 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,11 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -359,9 +359,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
if (!net_supported) { *s = -1; return ERR_NO_NETWORKING; }
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, 0);
|
||||
@ -371,8 +370,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = 1; /* non-blocking mode */
|
||||
ioctl(*s, FIONBIO, &blocking_raw);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res < 0 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,11 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -512,9 +512,8 @@ static cc_result GetSocketError(cc_socket s) {
|
||||
return res;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, 0);
|
||||
if (*s < 0) return *s;
|
||||
@ -523,9 +522,14 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = -1; // non-blocking mode
|
||||
//ioctlsocket(*s, FIONBIO, &blocking_raw); TODO doesn't work
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
return res == -1 ? GetSocketError(*s) : 0;
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? GetSocketError(s) : 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Read(cc_socket s, cc_uint8* data, cc_uint32 count, cc_uint32* modified) {
|
||||
|
@ -374,20 +374,23 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
res = netSocket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (res < 0) return net_errno;
|
||||
*s = res;
|
||||
*s = netSocket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (*s < 0) return net_errno;
|
||||
|
||||
if (nonblocking) {
|
||||
int on = 1;
|
||||
netSetSockOpt(*s, SOL_SOCKET, SO_NBIO, &on, sizeof(int));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = netConnect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = netConnect(s, raw, addr->size);
|
||||
return res < 0 ? net_errno : 0;
|
||||
}
|
||||
|
||||
|
@ -311,9 +311,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = sceNetInetSocket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (*s < 0) return sceNetInetGetErrno();
|
||||
@ -322,8 +321,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int on = 1;
|
||||
sceNetInetSetsockopt(*s, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = sceNetInetConnect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = sceNetInetConnect(*s, raw, addr->size);
|
||||
return res < 0 ? sceNetInetGetErrno() : 0;
|
||||
}
|
||||
|
||||
|
@ -294,9 +294,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct SceNetSockaddr* raw = (struct SceNetSockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = sceNetSocket("CC socket", raw->sa_family, SCE_NET_SOCK_STREAM, SCE_NET_IPPROTO_TCP);
|
||||
if (*s < 0) return *s;
|
||||
@ -305,8 +304,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int on = 1;
|
||||
sceNetSetsockopt(*s, SCE_NET_SOL_SOCKET, SCE_NET_SO_NBIO, &on, sizeof(int));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = sceNetConnect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct SceNetSockaddr* raw = (struct SceNetSockaddr*)addr->data;
|
||||
|
||||
int res = sceNetConnect(s, raw, addr->size);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -642,7 +642,7 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
cc_result res;
|
||||
|
||||
@ -653,8 +653,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = -1; /* non-blocking mode */
|
||||
ioctl(*s, FIONBIO, &blocking_raw);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,11 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -418,9 +418,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
cc_result res;
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (*s == -1) return errno;
|
||||
@ -428,8 +427,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
if (nonblocking) {
|
||||
fcntl(*s, F_SETFL, O_NONBLOCK);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -265,13 +265,16 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
|
||||
extern int interop_SocketCreate(void);
|
||||
extern int interop_SocketConnect(int sock, const cc_uint8* host, int port);
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int res;
|
||||
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
*s = interop_SocketCreate();
|
||||
return 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
/* size is used to store port number instead */
|
||||
/* returned result is negative for error */
|
||||
res = -interop_SocketConnect(*s, addr->data, addr->size);
|
||||
int res = -interop_SocketConnect(s, addr->data, addr->size);
|
||||
|
||||
/* error returned when invalid address provided */
|
||||
if (res == _EHOSTUNREACH) return ERR_INVALID_ARGUMENT;
|
||||
|
@ -355,9 +355,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ParseHost(str, port, addrs, numValidAddrs);
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
cc_result res;
|
||||
|
||||
*s = socket(raw->sa_family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (*s == -1) return errno;
|
||||
@ -366,8 +365,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = -1; /* non-blocking mode */
|
||||
ioctl(*s, FIONBIO, &blocking_raw);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -607,7 +607,7 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
}
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
SOCKADDR* raw_addr = (SOCKADDR*)addr->data;
|
||||
cc_result res;
|
||||
|
||||
@ -618,8 +618,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
u_long blockingMode = -1; /* non-blocking mode */
|
||||
_ioctlsocket(*s, FIONBIO, &blockingMode);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = _connect(*s, raw_addr, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
SOCKADDR* raw_addr = (SOCKADDR*)addr->data;
|
||||
|
||||
int res = _connect(s, raw_addr, addr->size);
|
||||
return res == -1 ? _WSAGetLastError() : 0;
|
||||
}
|
||||
|
||||
|
@ -336,9 +336,8 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return i == 0 ? ERR_INVALID_ARGUMENT : 0;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
int res;
|
||||
|
||||
*s = lwip_socket(raw->sa_family, SOCK_STREAM, 0);
|
||||
if (*s == -1) return errno;
|
||||
@ -347,8 +346,13 @@ cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
int blocking_raw = -1; /* non-blocking mode */
|
||||
lwip_ioctl(*s, FIONBIO, &blocking_raw);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = lwip_connect(*s, raw, addr->size);
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
struct sockaddr* raw = (struct sockaddr*)addr->data;
|
||||
|
||||
int res = lwip_connect(s, raw, addr->size);
|
||||
return res == -1 ? errno : 0;
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,11 @@ cc_result Socket_ParseAddress(const cc_string* address, int port, cc_sockaddr* a
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
cc_result Socket_Create(cc_socket* s, cc_sockaddr* addr, cc_bool nonblocking) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
cc_result Socket_Connect(cc_socket s, cc_sockaddr* addr) {
|
||||
return ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -315,10 +315,11 @@ static void MPConnection_BeginConnect(void) {
|
||||
MPConnection_FailConnect(res); return;
|
||||
}
|
||||
|
||||
res = Socket_Connect(&net_socket, &addrs[0], true);
|
||||
if (res == ERR_INVALID_ARGUMENT) {
|
||||
MPConnection_Fail(&invalid_reason);
|
||||
} else if (res && res != ReturnCode_SocketInProgess && res != ReturnCode_SocketWouldBlock) {
|
||||
res = Socket_Create(&net_socket, &addrs[0], true);
|
||||
if (res) { MPConnection_FailConnect(res); return; }
|
||||
res = Socket_Connect(net_socket, &addrs[0]);
|
||||
|
||||
if (res && res != ReturnCode_SocketInProgess && res != ReturnCode_SocketWouldBlock) {
|
||||
MPConnection_FailConnect(res);
|
||||
} else {
|
||||
Server.Disconnected = false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user