summaryrefslogtreecommitdiff
path: root/source/net_common.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2007-12-20 18:28:37 +0000
committerAndrey Nazarov <skuller@skuller.net>2007-12-20 18:28:37 +0000
commita33a790492ae722314521cd0f5c6c58c13c5fbd4 (patch)
tree564ce1d523798e4cf4fe8bfb5adee9b2cf252935 /source/net_common.c
parent0817feeab90886b7c4379bc9fa54f67154c40172 (diff)
Added initial server side support for r1ch.net anticheat.
Renamed `listban' command to `listbans'. Make sure NET_Connect sets NS_CONNECTING state even if connect() succeedes immediately. Changed FIFO_Read/FIFO_Write semantics.
Diffstat (limited to 'source/net_common.c')
-rw-r--r--source/net_common.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/source/net_common.c b/source/net_common.c
index 96f57c6..a22ad00 100644
--- a/source/net_common.c
+++ b/source/net_common.c
@@ -927,12 +927,9 @@ neterr_t NET_Connect( const netadr_t *peer, netstream_t *s ) {
closesocket( socket );
return NET_ERROR;
}
-
- s->state = NS_CONNECTING;
- } else {
- s->state = NS_CONNECTED;
}
+ s->state = NS_CONNECTING;
s->address = *peer;
s->socket = socket;
@@ -945,10 +942,10 @@ neterr_t NET_Run( netstream_t *s ) {
int ret, err;
int length;
byte *data;
- neterr_t result;
+ neterr_t result = NET_AGAIN;
if( s->state < NS_CONNECTING || s->state > NS_CONNECTED ) {
- return NET_AGAIN;
+ return result;
}
tv.tv_sec = 0;
@@ -965,14 +962,15 @@ neterr_t NET_Run( netstream_t *s ) {
}
if( !ret ) {
- return NET_AGAIN;
+ return result;
}
+ result = NET_AGAIN;
if( s->state == NS_CONNECTING ) {
socklen_t length;
if( !FD_ISSET( s->socket, &wfd ) && !FD_ISSET( s->socket, &efd ) ) {
- return NET_AGAIN;
+ return result;
}
length = sizeof( err );
@@ -989,9 +987,9 @@ neterr_t NET_Run( netstream_t *s ) {
}
s->state = NS_CONNECTED;
+ result = NET_OK;
}
- result = NET_AGAIN;
if( FD_ISSET( s->socket, &rfd ) ) {
// read as much as we can
data = FIFO_Reserve( &s->recv, &length );