Skip to content

Commit e7c2540

Browse files
committed
Use enums for tri-state return values
Resolves #112
1 parent 32f4bb3 commit e7c2540

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/SDL_net.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ typedef socklen_t SockLen;
7878
typedef struct sockaddr_storage AddressStorage;
7979
#endif
8080

81+
typedef enum NET_Status
82+
{
83+
NET_FAILURE = -1,
84+
NET_WOULDBLOCK,
85+
NET_SUCCESS,
86+
} NET_Status;
87+
8188
typedef enum NET_SocketType
8289
{
8390
SOCKETTYPE_STREAM,
@@ -214,7 +221,7 @@ static bool SetGetAddrInfoErrorBool(const char *msg, int err)
214221
}
215222

216223
// this blocks!
217-
static int ResolveAddress(NET_Address *addr)
224+
static NET_Status ResolveAddress(NET_Address *addr)
218225
{
219226
SDL_assert(addr != NULL); // we control all this, so this shouldn't happen.
220227
struct addrinfo *ainfo = NULL;
@@ -225,23 +232,23 @@ static int ResolveAddress(NET_Address *addr)
225232
//SDL_Log("rc=%d", rc);
226233
if (rc != 0) {
227234
addr->errstr = CreateGetAddrInfoErrorString(rc);
228-
return -1; // error
235+
return NET_FAILURE; // error
229236
} else if (ainfo == NULL) {
230237
addr->errstr = SDL_strdup("Unknown error (query succeeded but result was NULL!)");
231-
return -1;
238+
return NET_FAILURE;
232239
}
233240

234241
char buf[128];
235242
rc = getnameinfo(ainfo->ai_addr, ainfo->ai_addrlen, buf, sizeof (buf), NULL, 0, NI_NUMERICHOST);
236243
if (rc != 0) {
237244
addr->errstr = CreateGetAddrInfoErrorString(rc);
238245
freeaddrinfo(ainfo);
239-
return -1; // error
246+
return NET_FAILURE; // error
240247
}
241248

242249
addr->human_readable = SDL_strdup(buf);
243250
addr->ainfo = ainfo;
244-
return 1; // success (zero means "still in progress").
251+
return NET_SUCCESS; // success (zero means "still in progress").
245252
}
246253

247254
static int SDLCALL ResolverThread(void *data)
@@ -1335,22 +1342,22 @@ NET_DatagramSocket *NET_CreateDatagramSocket(NET_Address *addr, Uint16 port)
13351342
return sock;
13361343
}
13371344

1338-
static int SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 port, const void *buf, int buflen)
1345+
static NET_Status SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 port, const void *buf, int buflen)
13391346
{
13401347
struct addrinfo *addrwithport = MakeAddrInfoWithPort(addr, SOCK_DGRAM, port);
13411348
if (!addrwithport) {
1342-
return -1;
1349+
return NET_FAILURE;
13431350
}
13441351
const int rc = sendto(sock->handle, buf, (size_t) buflen, 0, addrwithport->ai_addr, addrwithport->ai_addrlen);
13451352
freeaddrinfo(addrwithport);
13461353

13471354
if (rc == SOCKET_ERROR) {
13481355
const int err = LastSocketError();
1349-
return WouldBlock(err) ? 0 : SetSocketError("Failed to send from socket", err);
1356+
return WouldBlock(err) ? NET_WOULDBLOCK : SetSocketError("Failed to send from socket", err);
13501357
}
13511358

13521359
SDL_assert(rc == buflen);
1353-
return 1;
1360+
return NET_SUCCESS;
13541361
}
13551362

13561363
// see if any pending data can finally be sent, etc

0 commit comments

Comments
 (0)