@@ -78,6 +78,12 @@ typedef socklen_t SockLen;
78
78
typedef struct sockaddr_storage AddressStorage ;
79
79
#endif
80
80
81
+ enum TriState {
82
+ NET_FAILURE = -1 ,
83
+ NET_WOULDBLOCK ,
84
+ NET_SUCCESS ,
85
+ };
86
+
81
87
typedef enum NET_SocketType
82
88
{
83
89
SOCKETTYPE_STREAM ,
@@ -214,7 +220,7 @@ static bool SetGetAddrInfoErrorBool(const char *msg, int err)
214
220
}
215
221
216
222
// this blocks!
217
- static int ResolveAddress (NET_Address * addr )
223
+ static enum TriState ResolveAddress (NET_Address * addr )
218
224
{
219
225
SDL_assert (addr != NULL ); // we control all this, so this shouldn't happen.
220
226
struct addrinfo * ainfo = NULL ;
@@ -225,23 +231,23 @@ static int ResolveAddress(NET_Address *addr)
225
231
//SDL_Log("rc=%d", rc);
226
232
if (rc != 0 ) {
227
233
addr -> errstr = CreateGetAddrInfoErrorString (rc );
228
- return -1 ; // error
234
+ return NET_FAILURE ; // error
229
235
} else if (ainfo == NULL ) {
230
236
addr -> errstr = SDL_strdup ("Unknown error (query succeeded but result was NULL!)" );
231
- return -1 ;
237
+ return NET_FAILURE ;
232
238
}
233
239
234
240
char buf [128 ];
235
241
rc = getnameinfo (ainfo -> ai_addr , ainfo -> ai_addrlen , buf , sizeof (buf ), NULL , 0 , NI_NUMERICHOST );
236
242
if (rc != 0 ) {
237
243
addr -> errstr = CreateGetAddrInfoErrorString (rc );
238
244
freeaddrinfo (ainfo );
239
- return -1 ; // error
245
+ return NET_FAILURE ; // error
240
246
}
241
247
242
248
addr -> human_readable = SDL_strdup (buf );
243
249
addr -> ainfo = ainfo ;
244
- return 1 ; // success (zero means "still in progress").
250
+ return NET_SUCCESS ; // success (zero means "still in progress").
245
251
}
246
252
247
253
static int SDLCALL ResolverThread (void * data )
@@ -1335,11 +1341,11 @@ NET_DatagramSocket *NET_CreateDatagramSocket(NET_Address *addr, Uint16 port)
1335
1341
return sock ;
1336
1342
}
1337
1343
1338
- static int SendOneDatagram (NET_DatagramSocket * sock , NET_Address * addr , Uint16 port , const void * buf , int buflen )
1344
+ static enum TriState SendOneDatagram (NET_DatagramSocket * sock , NET_Address * addr , Uint16 port , const void * buf , int buflen )
1339
1345
{
1340
1346
struct addrinfo * addrwithport = MakeAddrInfoWithPort (addr , SOCK_DGRAM , port );
1341
1347
if (!addrwithport ) {
1342
- return -1 ;
1348
+ return NET_FAILURE ;
1343
1349
}
1344
1350
const int rc = sendto (sock -> handle , buf , (size_t ) buflen , 0 , addrwithport -> ai_addr , addrwithport -> ai_addrlen );
1345
1351
freeaddrinfo (addrwithport );
@@ -1350,15 +1356,15 @@ static int SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 p
1350
1356
}
1351
1357
1352
1358
SDL_assert (rc == buflen );
1353
- return 1 ;
1359
+ return NET_SUCCESS ;
1354
1360
}
1355
1361
1356
1362
// see if any pending data can finally be sent, etc
1357
1363
static int PumpDatagramSocket (NET_DatagramSocket * sock )
1358
1364
{
1359
1365
if (!sock ) {
1360
1366
SDL_InvalidParamError ("sock" );
1361
- return -1 ;
1367
+ return NET_FAILURE ;
1362
1368
}
1363
1369
1364
1370
while (sock -> pending_output_len > 0 ) {
@@ -1367,7 +1373,7 @@ static int PumpDatagramSocket(NET_DatagramSocket *sock)
1367
1373
const int rc = SendOneDatagram (sock , dgram -> addr , dgram -> port , dgram -> buf , dgram -> buflen );
1368
1374
if (rc < 0 ) { // failure!
1369
1375
return -1 ;
1370
- } else if (rc == 0 ) { // wouldblock
1376
+ } else if (rc == NET_WOULDBLOCK ) {
1371
1377
break ; // stop trying to send packets for now.
1372
1378
}
1373
1379
0 commit comments