diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-10-12 20:58:58 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-10-12 20:58:58 +0000 |
commit | 9b25ad2f9f46ea731f6834a96536859e8764ab28 (patch) | |
tree | e25e2f9b15f7cfa8f5fca17f4d4095611f830cb2 /source/net_common.c | |
parent | 7beb920efe71d600f73d981c08e4b049426f9394 (diff) |
Removed `mvd_chase_msgs' cvar, corresponding flag is now stored in MVD stream.
Do not initialize MVD server in active state, check for players instead.
Allow MVD/GTV client dynamically change `maxbuf' setting.
Changed MVD/GTV stream suspend semantics.
Fixed possible server crash due to an error in NET_Accept.
Updated documentation.
Diffstat (limited to 'source/net_common.c')
-rw-r--r-- | source/net_common.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/net_common.c b/source/net_common.c index a56443d..9cf8130 100644 --- a/source/net_common.c +++ b/source/net_common.c @@ -838,7 +838,8 @@ neterr_t NET_Listen( qboolean arg ) { return NET_OK; } -neterr_t NET_Accept( netadr_t *peer, netstream_t *s ) { +// net_from variable receives source address +neterr_t NET_Accept( netstream_t *s ) { struct sockaddr_in from; socklen_t fromlen; u_long _true = 1; @@ -857,6 +858,9 @@ neterr_t NET_Accept( netadr_t *peer, netstream_t *s ) { tv.tv_usec = 0; ret = select( tcp_socket + 1, &fd, NULL, NULL, &tv ); if( ret == -1 ) { + // fill in dummy IP address + memset( &net_from, 0, sizeof( net_from ) ); + net_from.type = NA_IP; NET_GET_ERROR(); return NET_ERROR; } @@ -867,6 +871,9 @@ neterr_t NET_Accept( netadr_t *peer, netstream_t *s ) { fromlen = sizeof( from ); newsocket = accept( tcp_socket, ( struct sockaddr * )&from, &fromlen ); + + NET_SockadrToNetadr( &from, &net_from ); + if( newsocket == -1 ) { NET_GET_ERROR(); return NET_ERROR; @@ -879,11 +886,10 @@ neterr_t NET_Accept( netadr_t *peer, netstream_t *s ) { return NET_ERROR; } - NET_SockadrToNetadr( &from, peer ); - + // initialize stream memset( s, 0, sizeof( *s ) ); s->socket = newsocket; - s->address = *peer; + s->address = net_from; s->state = NS_CONNECTED; return NET_OK; |