@@ -92,6 +92,20 @@ bool is_malformed(int err) {
92
92
return err == EBADF || err == EFAULT || err == ENOTSOCK;
93
93
}
94
94
95
+ #ifndef ROC_TARGET_WINDOWS
96
+
97
+ bool valid_socket (SocketHandle sock) {
98
+ return sock >= 0 ;
99
+ }
100
+
101
+ #else
102
+
103
+ bool valid_socket (SocketHandle sock) {
104
+ return sock != SocketInvalid;
105
+ }
106
+
107
+ #endif
108
+
95
109
bool get_local_address (SocketHandle sock, address::SocketAddr& address) {
96
110
socklen_t addrlen = address.max_slen ();
97
111
@@ -307,7 +321,7 @@ bool socket_create(address::AddrFamily family, SocketType type, SocketHandle& ne
307
321
bool socket_accept (SocketHandle sock,
308
322
SocketHandle& new_sock,
309
323
address::SocketAddr& remote_address) {
310
- roc_panic_if (sock < 0 );
324
+ roc_panic_if (! valid_socket ( sock) );
311
325
312
326
socklen_t addrlen = remote_address.max_slen ();
313
327
@@ -338,7 +352,7 @@ bool socket_accept(SocketHandle sock,
338
352
bool socket_accept (SocketHandle sock,
339
353
SocketHandle& new_sock,
340
354
address::SocketAddr& remote_address) {
341
- roc_panic_if (sock < 0 );
355
+ roc_panic_if (! valid_socket ( sock) );
342
356
343
357
socklen_t addrlen = remote_address.max_slen ();
344
358
@@ -374,7 +388,7 @@ bool socket_accept(SocketHandle sock,
374
388
#endif // defined(ROC_TARGET_POSIX) && defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK)
375
389
376
390
bool socket_setup (SocketHandle sock, const SocketOpts& options) {
377
- roc_panic_if (sock < 0 );
391
+ roc_panic_if (! valid_socket ( sock) );
378
392
379
393
// If SO_NOSIGPIPE is available, enable it here for socket_try_send().
380
394
#if defined(SO_NOSIGPIPE)
@@ -392,7 +406,7 @@ bool socket_setup(SocketHandle sock, const SocketOpts& options) {
392
406
}
393
407
394
408
bool socket_bind (SocketHandle sock, address::SocketAddr& local_address) {
395
- roc_panic_if (sock < 0 );
409
+ roc_panic_if (! valid_socket ( sock) );
396
410
roc_panic_if (!local_address.has_host_port ());
397
411
398
412
// If IPV6_V6ONLY is available, use it for IPv6 addresses.
@@ -420,7 +434,7 @@ bool socket_bind(SocketHandle sock, address::SocketAddr& local_address) {
420
434
}
421
435
422
436
bool socket_listen (SocketHandle sock, size_t backlog) {
423
- roc_panic_if (sock < 0 );
437
+ roc_panic_if (! valid_socket ( sock) );
424
438
425
439
if (listen (sock, (int )backlog) == -1 ) {
426
440
roc_panic_if (is_malformed (errno));
@@ -435,7 +449,7 @@ bool socket_listen(SocketHandle sock, size_t backlog) {
435
449
bool socket_begin_connect (SocketHandle sock,
436
450
const address::SocketAddr& remote_address,
437
451
bool & completed_immediately) {
438
- roc_panic_if (sock < 0 );
452
+ roc_panic_if (! valid_socket ( sock) );
439
453
roc_panic_if (!remote_address.has_host_port ());
440
454
441
455
int saved_errno = errno;
@@ -463,7 +477,7 @@ bool socket_begin_connect(SocketHandle sock,
463
477
}
464
478
465
479
bool socket_end_connect (SocketHandle sock) {
466
- roc_panic_if (sock < 0 );
480
+ roc_panic_if (! valid_socket ( sock) );
467
481
468
482
int err = 0 ;
469
483
@@ -483,7 +497,7 @@ bool socket_end_connect(SocketHandle sock) {
483
497
}
484
498
485
499
ssize_t socket_try_recv (SocketHandle sock, void * buf, size_t bufsz) {
486
- roc_panic_if (sock < 0 );
500
+ roc_panic_if (! valid_socket ( sock) );
487
501
roc_panic_if (!buf);
488
502
489
503
if (bufsz == 0 ) {
@@ -533,7 +547,7 @@ ssize_t socket_try_recv(SocketHandle sock, void* buf, size_t bufsz) {
533
547
//
534
548
// If MSG_NOSIGNAL is available (e.g. on Linux), we pass it to send().
535
549
ssize_t socket_try_send (SocketHandle sock, const void * buf, size_t bufsz) {
536
- roc_panic_if (sock < 0 );
550
+ roc_panic_if (! valid_socket ( sock) );
537
551
roc_panic_if (!buf);
538
552
539
553
if (bufsz == 0 ) {
@@ -593,7 +607,7 @@ ssize_t socket_try_send(SocketHandle sock, const void* buf, size_t bufsz) {
593
607
//
594
608
// This implementation requires POSIX 2001.
595
609
ssize_t socket_try_send (SocketHandle sock, const void * buf, size_t bufsz) {
596
- roc_panic_if (sock < 0 );
610
+ roc_panic_if (! valid_socket ( sock) );
597
611
roc_panic_if (!buf);
598
612
599
613
if (bufsz == 0 ) {
@@ -679,7 +693,7 @@ ssize_t socket_try_send_to(SocketHandle sock,
679
693
const void * buf,
680
694
size_t bufsz,
681
695
const address::SocketAddr& remote_address) {
682
- roc_panic_if (sock < 0 );
696
+ roc_panic_if (! valid_socket ( sock) );
683
697
roc_panic_if (!buf);
684
698
roc_panic_if (!remote_address.has_host_port ());
685
699
@@ -725,7 +739,7 @@ ssize_t socket_try_send_to(SocketHandle sock,
725
739
#endif
726
740
727
741
bool socket_shutdown (SocketHandle sock) {
728
- roc_panic_if (sock < 0 );
742
+ roc_panic_if (! valid_socket ( sock) );
729
743
730
744
int flags = 0 ;
731
745
@@ -755,7 +769,7 @@ bool socket_shutdown(SocketHandle sock) {
755
769
#ifndef ROC_TARGET_WINDOWS
756
770
757
771
bool socket_close (SocketHandle sock) {
758
- roc_panic_if (sock < 0 );
772
+ roc_panic_if (! valid_socket ( sock) );
759
773
760
774
if (close (sock) == -1 ) {
761
775
roc_panic_if (is_malformed (errno));
@@ -794,7 +808,7 @@ bool socket_close(SocketHandle sock) {
794
808
#endif // ROC_TARGET_WINDOWS
795
809
796
810
bool socket_close_with_reset (SocketHandle sock) {
797
- roc_panic_if (sock < 0 );
811
+ roc_panic_if (! valid_socket ( sock) );
798
812
799
813
// SO_LINGER with zero timeout instructs close() to send RST instead of FIN.
800
814
struct linger ling;
0 commit comments