Commit graph

86 commits

Author SHA1 Message Date
3e400c018c Update copyright notice. 2006-01-05 13:36:57 +00:00
19d88af312 Support for IPv6:
(tcp_listen, player_addrlen): New.  IPv4-only code factored out of
player_init().
(player_init): Use them.
(player_accept): Address family independence.
(tcp_connect): New.
(main): Use it.
(hostaddr, hostconnect, hostport): Internal linkage.
2005-12-28 18:50:08 +00:00
3aebb68ee7 Include config.h. 2005-12-27 18:04:19 +00:00
Ron Koenderink
233181c50d (player_new, player_accept, update_wait, market_update) [_WIN32]:
Move assignment of hostaddr and hostname from player_new() to
player_accept().  This solves the necessary of adding the socket include
file to prototypes.h for player_new().  The socket include file creates
a namespace conflict for WIN32.
2005-12-26 03:53:21 +00:00
c4c46190bf (player_init): Fix initialization of sin. Some systems have a member
sin_zero and choke when it's not zeroed.  INADDR_ANY wasn't converted
to network byte order, but since it's zero, the bug couldn't bite.
2005-10-22 10:23:20 +00:00
2a90b249ef Doc fix. 2005-10-11 19:29:50 +00:00
ed5ba9fe3e (player_find_other): Replace by getplayer. player_find_other()
searches for a player other than US for country CNUM, which is in
state PS_PLAYING.  Since there can be at most one player in state
PS_PLAYING, and no caller pass that player as US, they can simply use
getplayer() instead.
2005-10-02 16:30:43 +00:00
f6a8a14831 (getplayer): There may be multiple players for the same country in the
list of players, but at most one in state PS_PLAYING.  getplayer()
used to get the one first in the list.  However, its callers need the
one in state PS_PLAYING.  In particular, typed_wu() notifies the
player obtained from getplayer().  If the player in state PS_PLAYING
isn't first, say because another one is trying to log in, the
notification gets lost.  Fix by making getplayer() return the player
in state PS_PLAYING.
2005-10-02 16:21:41 +00:00
1580b1f734 (listen_addr): New econfig key.
(player_init): Implement it.

(player_init): Support service name in econfig key loginport.  Service
empire no longer takes precedence over econfig.  Closes #797096.
2005-09-23 18:41:24 +00:00
4861f837fb (player_init) [LISTENMAXCONN]: Comment seems to claim Linux doesn't
have SOMAXCONN, but has LISTENMAXCONN.  In fact, it has SOMAXCONN, and
LISTENMAXCONN doesn't exist anywhere in /usr/include or the Internet.
Remove the special case.
2005-07-23 19:12:23 +00:00
Ron Koenderink
2a12333ecb (player_init) [_WIN32,__linux__ && __alpha__]: Remove the
SO_REUSEADDR socket option as it is not required for WIN32.
In WIN32, there is no waiting time when a port is closed before
it can be reused so SO_REUSEADDR is not required for WIN32.
Leave the option has a undesirable effect of allowing a second
server instance to start without an error and leaving both
instances running.  ALPHA and LINUX do support SO_REUSEADDR.
2005-07-23 13:43:35 +00:00
4f59fc9967 Remove a bunch of redundant casts. 2005-06-12 06:31:48 +00:00
1ec5767d5f Doc & formatting fixes. 2005-05-30 15:03:24 +00:00
Ron Koenderink
f826221a58 [_WIN32]: Add #define WIN32 whereever winsock2.h is used. There is bug
in the VC7 version of winsock2.h.  In version VC7, the #pragma
pack(push) and pack(pop) have an #ifdef !WIN32 add to them.  However,
if WIN32 is not defined at the beginning, the push is done but by the
time the pop is reach something else has set WIN32 define so the pop
is not done, and it changes the default pack from /Zp2 to /Zp4, which
makes the data structures incompatible between objects with winsock2.h
and without winsock2.h.  By adding the WIN32 both the push and pop are
not done.
2005-03-20 11:07:45 +00:00
345ad3dfe0 Update copyright notice. 2005-03-16 22:03:16 +00:00
5b57f4c222 Merge pre-4-2-20-invasive. Summary of changes:
* Acquire resources before daemonizing, fail in foreground
* Initialize threads and signals after daemonizing
* Make most file names relative to data directory
* emp_server and files make it their working directory
* emp_config() no longer screws up some file names
* Missing or incorrect econfig is now fatal
* Don't log to default log file when econfig changes it
2005-03-10 18:35:27 +00:00
30f2b2c4ea (player_init, player_accept): Move socket bind and listen from
player_accept() to player_init().  Acquiring resources during
initialization allows to exit unsuccessfully on errors.  Previously,
the daemon detached itself (exiting successfully), then failed in the
background.
(player_socket): New.
2005-03-08 16:51:19 +00:00
Ron Koenderink
0b172c6553 (NS_ALL) [_WIN32]: Change NS_EVERYTHING back to NS_ALL, #undef NS_ALL to prevent conflict with winsock2.h 2005-03-08 00:04:43 +00:00
afa65c8f27 Break inclusion cycles. To simplify the change, move a few
declarations to other, no less sensible places.
2005-02-12 19:26:59 +00:00
Ron Koenderink
aabed1b346 [_WIN32]: Upgrade to Windows Sockets 2. 2004-12-31 20:40:39 +00:00
fac342ed49 Update copyright notice. 2004-09-07 15:07:16 +00:00
1f5754b5aa (player_new) [!RESOLVE_IPADDRESS]: Don't define unused local variable. 2004-03-01 14:17:58 +00:00
b572ec19ad Fix missing include. 2004-02-29 11:41:26 +00:00
e67dca9d29 Indentation fixes; suspect indent-emp is to blame. 2004-02-28 18:06:11 +00:00
b4a7d9f022 The (unused) parameter of thread entry points is named `argv', but the
argument is actually the value of global variable `player'.  Rename to
`unused'.
2004-02-20 20:14:53 +00:00
cb23a7e5b0 (player_accept): Back out rev. 1.9, it doesn't compile under Windows.
Needs fixing.
2004-02-18 19:43:09 +00:00
8cd0160176 Declare all configuration variables in optlist.h. Include that
instead of declaring them all over the place.  This uncovered type
errors:
(s_p_etu, adj_update): Defined long, sometimes declared int.  Kills
big endian machines where sizeof(long) != sizeof(int).  Change to
int.

(set_option, delete_option, optstrset, intset, floatset, doubleset,
longset, optionset, optiondel, worldxset): Change linkage to static.
2004-02-17 22:58:04 +00:00
42a43e1461 (player_accept): Passed pointer to incorrect type to accept(). 2004-02-15 19:26:52 +00:00
ffcf6bff0f (iom, fdmax, newoutput): Serve no purpose since previous rev., remove
along with code to maintain them.  This removes the last uses of
io_mask.c io_mask.h; remove them.
2004-02-07 02:01:47 +00:00
52cb1f8c55 (io_open, io_iopfromfd): Properly check argument FD to protect
io_list[] indexing.
(niop, io_init): Store length of io_list[] in new niop.
(player_accept): Checking the socket file descriptor here is now
redundant.  Remove.
2004-02-06 12:12:58 +00:00
632fbf8d12 (player_new): Proper error checking. Oops, now it may return NULL.
Proper error checking in callers required.
(update_wait, market_update): If player_new() returns null pointer,
skip update.
(player_accept): If player_new() returns null pointer, close
connection.
2004-01-23 13:44:19 +00:00
422a8cea73 (io_select, io_init, io_open, io_close, io_output, io_flush, io_write,
io_puts, iom_create, iom_getmask, iom_set, iom_clear, iom_zero):
Portability bug: io_select() passed bit_fdmask to select().  This
breaks the fd_set abstraction, and works only with the traditional
Unix implementation of fd_set.  Use fd_set and its operations instead.
Remove unused source files.  Note: the offending code is currently
unsued.  But it's a time bomb, and fixing it also replaces a bunch of
code by standard library services.
2004-01-15 14:32:00 +00:00
4ae9c417b3 (bzero, bcopy): Obsolete BSDisms; remove. Remove some calls without
effect.  Replace calls by struct assignment where possible.  Replace
clear buffer, copy string to buffer by strncpy().  Use assignment to
clear when that's clearer.  Replace overlapping copy through bounce
buffer by memmove().  Replace rest by standard memset() and memcpy().
Also use sizeof() instead of literal array sizes for robustness, and
instead of symbolic array sizes for clarity.
2004-01-08 17:54:28 +00:00
3bf2b1b47f errno may not be a variable; users must include errno.h instead of
declaring it like `extern int errno'.
2003-12-17 21:18:12 +00:00
9b7adfbecc Indented with src/scripts/indent-emp. 2003-09-02 20:48:48 +00:00
d8b7fdfae1 Import of Empire 4.2.12 2003-08-23 12:23:04 +00:00