eehouse
8bb2fb9b09
track and display in web view the number of games actually joined
...
rather than the number attempted.
2010-05-28 02:31:27 +00:00
eehouse
c92d919934
log error from read
2010-05-26 02:25:58 +00:00
eehouse
7a279702c0
add sterrror to what's logged when pthread_create fails -- as is
...
happening often.
2010-05-20 04:28:07 +00:00
eehouse
3e83f50c84
use strcasecmp rather than strcmp on cookies (room names) to make
...
rooms case insensitive.
2010-05-01 02:49:19 +00:00
eehouse
4ed87fecb4
add once-per-day date line to logs since they can span weeks now.
2010-05-01 02:48:47 +00:00
eehouse
f4b64fe97d
add option, off by default, to stall each message forward by some time
...
to better simulate network conditions when testing against local relay.
2010-03-28 16:09:07 +00:00
eehouse
e5f3384050
another .gitignore
2010-02-24 04:30:21 +00:00
ehouse
7ac98bfcfb
Don't require a timeout waiting for a game to connect initially, and
...
make no timeout the default.
2009-12-27 18:17:24 +00:00
ehouse
a1be2fb8fc
add ports relay is listening on to http display
2009-12-16 02:43:52 +00:00
ehouse
fc17df2a7e
When guest connects, check if providing too many players before
...
reponding to connection request so that we just deny the request (with
new error code) rather than revoking it later.
2009-12-14 04:10:23 +00:00
ehouse
015b0d42d8
include title in head with summary readable in tab
2009-12-08 14:51:03 +00:00
ehouse
26469d734c
Modify state machine and return new error codes to force host to
...
connect first, guests second, with clear error messages if the order's
wrong. This seems to make it simpler for users to get a connection
right. Code holding multiple games worth of hosts and guests in a
cref is gone.
2009-12-04 08:03:27 +00:00
ehouse
337c36dfd2
remove unused parameter
2009-12-04 07:59:07 +00:00
ehouse
7ad59e3e2b
cleanup
2009-12-04 07:54:14 +00:00
ehouse
55478369e4
listen on only one port by default
2009-11-22 16:29:23 +00:00
ehouse
c1827562dc
be consistent is use of variable vs real name
2009-11-10 14:37:42 +00:00
ehouse
2ecf415618
Remove on case where HandleEvents was being called recursively and
...
creating unexpected state transitions; add assert to catch any future
recursion.
2009-11-09 05:30:42 +00:00
ehouse
393cccb86c
Add MSGONLY state to indicate cref being kept alive only to preserve
...
messages for a latter connection.
2009-11-09 05:29:06 +00:00
ehouse
aae12428da
Add limited support for store-and-forward (where limitations include
...
that all devices must be connected initially and that it's all memory
based so a crash wipes stored messages.) Accept messages for
forwarding when in the MISSING state, not just the ALLHERE state.
Store messages that can't be sent now, and send any that have
accumulated when a host reconnects. When a cref loses its last
connection, keep it around unless it has no messages stored (as will
be the case when a game ends.)
2009-11-08 21:35:39 +00:00
ehouse
2d4ae3e44a
When forwarding message, lookup cref by socket if cookieID == 0, as
...
can be the case when through to a non-all-connected game.
2009-11-08 21:32:36 +00:00
ehouse
8e0dad43c7
get rid of overlogged message
2009-11-08 21:25:43 +00:00
ehouse
ed52582ea4
get rid of states and code for checking numbers of players -- since
...
any number is allowed now.
2009-11-03 05:03:20 +00:00
ehouse
3bdfda6548
Make it possible for multiple games to connect using the same room
...
name. All new connections are stored together, and after each
connection an attempt is made to build one complete game with a host
and however many guests. All remaining devices are moved into a new
pending record in the same state, and the completed game is treated as
always. Seems to work, though nearly 20% of linux instances are
failing to connect the relay run from the new test script samename.sh.
Need to figure out why.
Also added logging of seed and connname to comms.c since games
launched together can no longer be certain to connect on the relay.
This allows the test script to identify joined games from their logs
and detect success or failure.
This checkin changes the relay protocol, so relay and clients will
both need to be upgraded.
2009-11-02 01:01:47 +00:00
ehouse
11b586cd4b
lookup hearbeat recipient by socket rather then cookieID since
...
cookieID isn't always correct until later
2009-11-02 00:45:54 +00:00
ehouse
7a71c4636b
change varible names; remove instance variable than can be on the stack.
2009-11-01 01:38:03 +00:00
ehouse
0e43675abf
Address problems matching [re]connections to games: first, go back to
...
setting connName when all in a game are present. Second, have every
host include in connections a random number. That number is made part
of the connName and in general used to test whether a host belongs in
a particular game. Add this "seed" to web interface. Means new
versions for relay protocol and game stream format. Latter is handled
correctly so older games can be opened.
2009-09-26 14:37:49 +00:00
ehouse
030ae52a4b
Store start time as time_t rather than string.
2009-09-26 14:05:51 +00:00
ehouse
b219e8b279
Send notification when device disconnnects without closing socket (in
...
addition to the existing one sent when a socket is closed).
2009-09-20 18:47:47 +00:00
ehouse
ffacbcb36a
Move "For" column left.
2009-09-19 04:59:19 +00:00
ehouse
45bdccd4e8
Format time more compactly
2009-09-18 03:50:01 +00:00
ehouse
a9e8f5b493
shorten column headings; don't assign cid until game is full.
2009-09-17 03:42:12 +00:00
ehouse
d5d20293ce
print log timestamps with padding 0s for better sorting
2009-09-15 12:54:40 +00:00
ehouse
135048a3cf
Extend name change to relay's web interface
2009-09-14 03:31:54 +00:00
ehouse
18e9301e87
rename Cookie to Invite, a change that may change. Rename everywhere
...
in clients but not in relay where cookie is too pervasive. (There are
no code changes in this checkin.)
2009-09-14 03:11:11 +00:00
ehouse
6603949b0e
Fix bug where device quitting one game to start another with same
...
cookie winds up connecting to the old game -- by flagging a cref as
full and no longer accepting connections without connNames even when
in the MISSING state. Required a protocol changes so that devices get
their connNames as early as possible.
2009-09-14 01:55:03 +00:00
ehouse
7eeede45c3
exit if unable to open socket
2009-09-13 15:27:19 +00:00
ehouse
7ca629a2f5
don't log socket closing as an error
2009-09-04 11:02:09 +00:00
ehouse
95a70862be
Lock cref before calling method that assumes lock.
2009-08-30 15:18:40 +00:00
ehouse
2a569df97f
For privacy, don't show host IP unless connection is local.
2009-08-30 15:16:06 +00:00
ehouse
b15665e041
serve http view from cached data and make cache refresh rate
...
configurable. Should make it harder to attack the relay on http port.
2009-08-21 12:32:57 +00:00
ehouse
dbf9daf71b
Fix problems reconnecting hosts where some but not all received the
...
ALLHERE message and connName: change relay protocol so cookie is
included in RECONNECT message, and hostIDs are not assigned until
ALLHERE, and change host-to-game matching to use connName first but
fall back to cookie. This fixes nearly all cases failing to reconnect
after relay goes down.
2009-08-21 12:00:09 +00:00
ehouse
493d3c226f
log when crash
2009-08-20 12:12:43 +00:00
ehouse
53133839a4
don't log list of sockets by default
2009-08-20 03:50:40 +00:00
ehouse
e96becb05f
variable name change only (for clarity)
2009-08-13 12:59:55 +00:00
ehouse
47d6d53419
make log file location configurable; remember start time as used for
...
permenent IDs on spawn rather than overall boot to avoid duplicating
cids.
2009-07-31 13:02:05 +00:00
ehouse
7077a11af6
pass .css file
2009-07-31 12:58:47 +00:00
ehouse
acbf8180ef
add missing lock(); track and display uptime of daemon child as well as parent
2009-07-31 12:56:04 +00:00
ehouse
80ccdd6d04
spelling...
2009-07-31 12:47:58 +00:00
ehouse
f537169db5
Assign 0 not NULL to pthread variables.
2009-07-31 12:43:04 +00:00
ehouse
bcc887c0b1
Need to remove before inserting. Todo: is there a replace?
2009-07-31 12:39:47 +00:00
ehouse
503db9cc6f
up copyright
2009-07-30 12:54:17 +00:00
ehouse
f35f2fe696
add css file path
2009-07-30 12:52:05 +00:00
ehouse
ba97f096dc
make css file for http interface configurable; fix bug where
...
connections arriving too close together would wind up with different
crefs (using new mutex).
2009-07-30 12:49:21 +00:00
ehouse
631bf4b179
write to named file for use on ISP from cron
2009-07-30 12:46:40 +00:00
ehouse
2641ab6430
bug fix: mark after locking so will unlock in destructor
2009-07-30 12:39:45 +00:00
ehouse
4a5d74a0af
rename state to take up less space in browser; add number of respawns
...
to status display.
2009-07-29 04:25:21 +00:00
ehouse
8be31357ad
track per-cref lifetime and display it via http
2009-07-28 05:41:15 +00:00
ehouse
8284799abe
Fix crashes resulting from deleting cref instances in one thread while
...
another wanted to operate on them. The root problem is that you can't
dispose of a mutex while somebody's blocking on it. So now the
locking mutexes live inside the cref class. When the lock owner
realizes the cref needs to die, it sets a flag and it's moved to a
recycled list. A thread blocking on the mutex will then get it, but
checks the flag and releases it immediately if it's being recycled.
(Also improve the http interface a bit.) With these changes I've run
31K (and counting) games against the relay without a crash or deadlock
(using sim_real.sh.) The main problem that remains is that sometimes
two games using the same cookie wind up with two crefs (and so never
connect.)
2009-07-28 05:15:26 +00:00
ehouse
0d03ed71bb
cleanup
2009-07-28 05:09:24 +00:00
ehouse
6b1cf247bf
Don't alloc storage for fds and log buffer each time through poll
...
loop; instead reuse and realloc when needs to grow.
2009-07-28 05:08:15 +00:00
ehouse
8c7c457a54
shorten state names so they take up less webpage space.
2009-07-28 05:06:25 +00:00
ehouse
3b62e04d07
don't use -lmcheck. It causes a lot of crashes in places where it
...
certainly looks as if nothing is wrong.
2009-07-28 05:00:18 +00:00
ehouse
dddd5e1dd8
clean up logging. I got some cores that suggest overflow. This fixes
...
that if indeed it was happening. Problems with sockets disappearing
while in poll may remain.
2009-07-16 04:43:33 +00:00
ehouse
0a0d4804dd
store keys and values as const char* instead of string since the
...
string code was involved in a lot of crashes.
2009-07-16 04:23:02 +00:00
ehouse
8a0d963c95
include abbreviated uptime in stat row
2009-07-16 02:56:25 +00:00
ehouse
c5e73fd725
Add to http display number of games currently being hosted.
2009-07-13 03:01:22 +00:00
ehouse
582eb88f9a
int->bool
2009-07-13 02:58:16 +00:00
ehouse
854b3d9349
use synchronized method to add map entries
2009-07-06 02:02:59 +00:00
ehouse
2ef16d44ca
Include number of games played in html output; don't report closed
...
sockets found while reporting closed sockets (to avoid deadlock);
remove sockets from crefmgr's map when closing them so new connections
using same (re-used) socket aren't treated as belonging to open games.
2009-07-06 01:50:51 +00:00
ehouse
a680a6e5fe
Always close sockets we're done with. Otherwise they leak -- don't get reused.
2009-07-06 01:32:30 +00:00
ehouse
37dc9b7b88
running under valgrind I need to handle SIGPIPE.
2009-07-06 01:31:16 +00:00
ehouse
f4db39f490
synchronize reads of std::map to fix crash due to memory corruption.
...
Apparently containers aren't thread-safe even for reads.
2009-07-03 14:54:21 +00:00
ehouse
9b29e45ea4
plug valgrind-found leak; prefer localtime_r.
2009-06-29 12:58:30 +00:00
ehouse
4a308f4f8e
Don't use unitialized variables (thanks valgrind :-)
2009-04-05 18:47:45 +00:00
ehouse
fbe95478ba
rename now() as uptime(); drop NTHREADS to 1 for now; include time of
...
server boot in connName and keep counter in memory rather than a file.
2009-03-10 12:52:17 +00:00
ehouse
1b49a26736
do loglevel and ports via the general-purpose config mech. No special
...
cases remain.
2009-03-05 13:49:01 +00:00
ehouse
3469dc7bf3
Make refresh interval configurable.
2009-03-02 05:29:06 +00:00
ehouse
6b3265ac47
Change config class from having a method for every configurable value
...
to returing values for string keys so adding a new config doesn't mean
modifying that class. Then add new config for addr passed to bind so
relay can be run to accept http connections from remote machines.
2009-03-02 01:50:14 +00:00
ehouse
9a8abb770d
in web console list hosts present rather than just the count
2009-02-28 19:35:32 +00:00
ehouse
3bf116c936
Add an http interface (read-only web console).
2009-02-28 16:15:59 +00:00
ehouse
03c806e961
add tarball target to help
2009-02-21 17:15:09 +00:00
ehouse
644dc3b5ad
detect duplicate initial connect packets by checking what socket they're on.
2009-02-07 18:17:17 +00:00
ehouse
53b27c96c9
Helps to compile platforms too before checking in...
2009-02-01 16:20:18 +00:00
ehouse
1ac4ef3bc6
Attempt to detect connections that are duplicates by checking if that
...
socket is already in a connection. This doesn't seem to always work,
and I may be leaking cref instances when it does, so needs debugging
still.
2009-02-01 16:00:20 +00:00
ehouse
6ba2032187
clean up event logging
2009-02-01 15:55:45 +00:00
ehouse
552f6350f9
tweaks to stop/start script to run on an ISP's server better
2008-12-31 04:26:37 +00:00
ehouse
c53fe0857c
Don't parse the same conf file twice in a row.
2008-12-31 04:21:03 +00:00
ehouse
1c3be799b7
start counter for uptime at launch
2008-12-31 04:19:23 +00:00
ehouse
9fc325a334
include new file in tarball
2008-12-31 04:16:55 +00:00
ehouse
32121c5634
include svnversion output in tarball
2008-12-30 05:17:00 +00:00
ehouse
ea6fff8f28
replace int with bool where appropriate; fix to compile with newer g++
2008-12-30 05:13:30 +00:00
ehouse
4c191e0755
Don't specify g++ version; add some consts to fix warnings with newer g++.
2008-05-21 03:49:11 +00:00
ehouse
4beb818de3
use sigaction rather than signal
2008-03-15 14:04:02 +00:00
ehouse
acc7b5be52
Don't respawn if child died in less than a second.
2007-12-05 06:30:45 +00:00
ehouse
da93ed5b31
Don't use uninitialized values as port numbers; use match for set as well as get.
2007-12-03 00:45:09 +00:00
ehouse
25c4368231
Start adding ability to listen on multiple sockets and to dynamically
...
change the set listened on. There's still some debugging to do but
nothing that worked before is broken. Also begin to accept unique
prefixes (e.g. g for get) for commands and attributes on the control
port. Note that relay-related code in comms seems broken now, but is
without this checkin.
2007-12-01 15:00:30 +00:00
ehouse
022317b47a
Exit on unexpected params; better testing when launching; use bash to create pid file.
2007-11-22 04:59:11 +00:00
ehouse
cb1222c0f9
Make cooperation in a heartbeat scheme a compile-time option. This is
...
meant to allow comms to take over heartbeats.
2007-11-18 23:38:56 +00:00
ehouse
8dbfe4ed79
fix new compiler warnings; daemonize, and add handler to kill child if
...
parent dies so that script can kill based on pid file.
2007-11-13 03:53:10 +00:00
ehouse
74a30ffe82
init.d style script for starting and stopping relay
2007-11-13 03:50:41 +00:00
ehouse
0291ec1e75
Turn on self-spawning: main loop should never crash but exists only to
...
respawn child when it does. Add crash command to test this. Add
ability to set logging level from ctrl port.
2007-11-10 05:41:49 +00:00
ehouse
9f23c4b4d9
Replace ints with bools; add rev command; fix bug by reiniting args with each
...
command so they don't hold previous values.
2007-02-07 13:22:40 +00:00
ehouse
a8d3dbda66
Print svn rev number as part of usage()
2007-02-07 11:56:30 +00:00
ehouse
767b9f2908
initialize mutex before using; fixes a hang since could never aquire
...
lock. (This bug has always been there, but didn't matter before;
maybe pthreads changed.) Comment out self-spawning stuff until can
fix df-transfer problems. Other minor changes around logging.
2007-02-06 05:52:22 +00:00
ehouse
5fbc89ae76
add tarball target for exporting enough code to build relay.
2007-02-04 01:22:31 +00:00
ehouse
4c2259400a
include result of strerror in messages logging errno
2007-02-03 21:35:07 +00:00
ehouse
d123d6c352
Make self-restarting: fork child and wait (to deal with asserts).
2006-10-11 02:06:20 +00:00
ehouse
3da83805cc
handle cmdline opts in a less-fancy way that works on freebsd too.
2006-03-22 04:33:34 +00:00
ehouse
a8463b9341
link pthreads in a way that works on freebsd too
2006-03-22 04:31:27 +00:00
ehouse
b29bde8e37
include stdio.h for freebsd
2006-03-21 04:05:33 +00:00
ehouse
96d6623026
include pthread.h for freebsd
2006-03-21 04:04:43 +00:00
ehouse
92485783af
update email address in header comments: no code change
2006-01-08 01:25:02 +00:00
ehouse
92981942b3
add _Shutdown(); override logf() to tag with cookieid; make logs less
...
verbose.
2005-10-30 05:20:31 +00:00
ehouse
b31cb6612b
call shutdown on cref rather than deleting it; wrap mutex actions with
...
debugging logfs like those in mlock.h.
2005-10-30 05:16:35 +00:00
ehouse
42f3a4e7cf
don't print log messages below a certain priority
2005-10-30 05:10:26 +00:00
ehouse
befc90648e
add shutdown event and action
2005-10-30 05:07:58 +00:00
ehouse
6d88725e05
add missing header file
2005-10-28 09:20:51 +00:00
ehouse
d17165a678
add header needed on some installations
2005-10-23 21:35:19 +00:00
ehouse
b135f317b4
make location of file storing next ID configurable.
2005-10-23 21:06:07 +00:00
ehouse
deb0a2d265
shutdown in response to SIGINT
2005-10-23 15:49:48 +00:00
ehouse
e2e66f8057
Set a disconn timer when somebody leaves to make it parallel with case
...
where somebody never shows up; print more info about cref state to
ctrl port.
2005-10-19 03:44:55 +00:00
ehouse
80d0f3ce71
make now() relative to relay startup time.
2005-10-19 03:43:21 +00:00
ehouse
a64cbd472a
don't track heartbeat independent of any timers set. This allows
...
infinite timeout when no devices present.
2005-10-19 03:42:17 +00:00
ehouse
d74de11771
add XWS_ANY
2005-10-19 03:40:40 +00:00
ehouse
e05777bdcf
add XWS_ANY; add missing transitions to kill game on timer when device
...
disappears and doesn't return.
2005-10-19 03:40:26 +00:00
ehouse
4df7b3d75a
add uptime
2005-10-19 03:39:18 +00:00
ehouse
74b6ccbd52
cleanup ctrl printing; repeat most recent command; cleanup internal names.
2005-10-16 01:19:25 +00:00
ehouse
deea73ad8b
cancel all-connected timer when all are connected
2005-10-15 16:35:18 +00:00
ehouse
a8352fa745
fix leak; move heartbeat timer into crefmgr, and only run it when
...
there are active crefs.
2005-10-15 16:30:10 +00:00
ehouse
936e3bd110
clean up command help
2005-10-15 16:28:26 +00:00
ehouse
ecf5875d7e
capitalize public methods on timermgr (no code change)
2005-10-15 15:49:22 +00:00
ehouse
eb8301ade7
return error to client when flags indicate old version; close sockets
...
when error occurs in processing message.
2005-10-14 08:29:58 +00:00
ehouse
6541e56c40
catch up with logf change
2005-10-14 08:27:16 +00:00
ehouse
b7e3479989
print prompt
2005-10-14 08:26:56 +00:00
ehouse
cb3e2910b9
add commented out debug flag
2005-10-14 08:26:19 +00:00
ehouse
e18f66f587
remove dead code
2005-10-06 02:54:05 +00:00
ehouse
be5078e8f8
removed unused states etc.
2005-10-06 02:36:45 +00:00
ehouse
f7443c9f7f
catch symbian up with api changes -- but still need to set timers
...
before it'll talk to relay.
2005-10-02 16:40:16 +00:00
ehouse
3bf3e2fda1
parse multiple config files in order with later ones overriding.
2005-10-02 16:23:49 +00:00
ehouse
4e5f69f4e8
rename states so can format to 80 cols; add log level param. No
...
change to functionality in this checkin.
2005-10-02 16:08:42 +00:00
ehouse
6835b6d1eb
New scheme for accepting and limiting reconnections. Now device must
...
send player counts, local and expected. Based on these the relay
accepts connections, declares the game full and ready for message
forwarding, and decides whether to accept a reconnect.
2005-10-02 15:39:38 +00:00
ehouse
77319b570d
make transmitted vars smaller where possible; new relay identifying
...
scheme where cookie is used only to connect, and is replaced for
reconnects by a relay-generated name that's supposed to be unique
across all games on all relays and includes a hostname read in from
config file; relay assign non-servers' hostIDs.
2005-10-01 16:33:45 +00:00
ehouse
0c2365e3ea
parse new SERVERNAME config variable
2005-10-01 16:09:57 +00:00
ehouse
255656f009
works, but not yet used. And wants relay host identifier added in.
2005-09-19 04:34:51 +00:00
ehouse
7d9a78f996
comment out internal mutexes: shouldn't be needed now that only one
...
thread at a time is given access to a cref instance.
2005-09-14 05:15:27 +00:00
ehouse
f944b154fc
fix print_cookies to use iterator
2005-09-14 05:14:41 +00:00
ehouse
c4d212f78c
shorten names so table easier to fit in 80 cols
2005-09-14 05:14:04 +00:00
ehouse
87d1c8f593
event name change
2005-09-09 03:15:06 +00:00
ehouse
cf5906eacf
Add and handle disconnect message so a device can reuse its socket for
...
a new game.
2005-09-05 15:50:49 +00:00
ehouse
05878f11a4
Do nothing rather than assert when socket no longer found for write.
...
Not sure if this is a preventable error.
2005-09-05 15:50:28 +00:00
ehouse
235556240f
Don't close the underlying socket. Not sure yet when I should close a
...
socket that hasn't returned an error. Maybe that's the client's job.
2005-09-05 15:45:22 +00:00
ehouse
47030320f4
move typedef
2005-09-04 20:55:07 +00:00
ehouse
8a2eae0887
log ip address of incoming connection in dotted-quad notation.
2005-09-04 20:54:09 +00:00
ehouse
89f1eca340
log tweak
2005-09-04 20:44:46 +00:00
ehouse
55988dcdd7
cut down on logging a bit
2005-09-04 20:43:53 +00:00
ehouse
6995d37ead
don't assert when unexpected event arrives; just log and drop
2005-09-04 20:43:23 +00:00
ehouse
aa1323a5a3
shorten log messages; make easier to process from perl
2005-09-04 20:38:23 +00:00
ehouse
ebcc30dd5f
send notice when a socket closes. This seems to be resulting in dups.
2005-09-04 20:37:42 +00:00
ehouse
0134c96962
fix deadlock by collecting crefs into local storage before starting to
...
act on them.
2005-09-04 20:36:53 +00:00
ehouse
1f43831219
new error code
2005-09-04 14:35:13 +00:00
ehouse
4882c92a07
generate XWRELAY_OTHERCONNECT message
2005-09-03 18:35:34 +00:00
ehouse
8072bc687c
add XWRELAY_OTHERCONNECT message
2005-09-03 18:32:12 +00:00
ehouse
e6e9646253
make all APIs private and add as friends the safe classes that will
...
access them. This should allow reduction in the locking within cref
instances since only one thread at a time will be permitted inside by
SafeCref.
2005-09-03 15:59:48 +00:00
ehouse
4479933657
add missing state transition
2005-09-03 15:41:59 +00:00
ehouse
a4033a44c3
when one device is disconnected for heartbeat, tell others it's going
...
away.
2005-09-03 15:41:17 +00:00
ehouse
9a2567252b
cleanup: get rid of unused states/actions and code to handle them.
2005-09-03 07:15:05 +00:00
ehouse
c82fd2e4f2
Send disconnect events with error codes on heartbeat and connect timer
...
failures; change how state machine handles heartbeats: only put events
into the machine when there's a failure.
2005-09-03 06:55:08 +00:00
ehouse
b0cc6f458b
add disconnect event and error codes
2005-09-03 06:46:03 +00:00
ehouse
2ba0f451a7
fix failure to record bytes forwarded
2005-09-02 07:18:39 +00:00
ehouse
8f32f4f99a
loads of changes: get settings from config file; remove sockets and
...
kill crefs via state machine, and protect access to a cref so it can
die without another thread being in it; do timers via timeout to
poll() rather than interrupt (and integrate into state machine);
detect when all players are present and change state so new
connections on that cookie will get a new cref.
2005-09-02 06:56:34 +00:00
ehouse
5d22be174a
initial version
2005-09-02 06:40:34 +00:00
ehouse
9ac04243b5
first checked in. works.
2005-09-02 06:35:25 +00:00
ehouse
abde767154
tweaks to logging and adding some message enums
2005-08-08 23:33:51 +00:00
ehouse
23739eee9b
reduce interrupt-time logging
2005-08-03 01:17:49 +00:00
ehouse
91abdb3bcc
fix bug where client connecting before server would result in attempt
...
to forward packet to host not yet available. Drop such packets now.
2005-08-02 04:57:13 +00:00
ehouse
170ad8f419
make overly verbose logging conditional
2005-08-02 04:56:08 +00:00
ehouse
3b53363e16
Pass protocol version code with connect request, and return error if
...
it isn't what relay can handle. Report error to user.
2005-07-06 01:36:52 +00:00
ehouse
d639e9ca45
Honor cookieID passed in connect message, falling back to cookie only
...
when the ID isn't set, and using it rather than assigning a new one
even if the game can't be found.
2005-07-06 00:54:38 +00:00
ehouse
f062a1f8f6
cleanup
2005-07-06 00:53:19 +00:00
ehouse
1ae6c010c9
Make cookieID a 32-bit value instead of 16-bit
2005-07-05 23:02:15 +00:00
ehouse
db6f6c258d
move to using a formal table-driven state machine for each game (cref
...
object). While it makes things more complex at this point, it should
make it easier in the long run to add error handling, timeouts, etc.
2005-07-05 22:05:37 +00:00
ehouse
d5858f7a21
add include file
2005-07-05 21:57:00 +00:00
ehouse
370c2f82f2
fix leak
2005-07-05 21:52:24 +00:00
ehouse
3054637842
heartbeats: send to clients in connection response; note when
...
heartbeat and other messages arrive; and periodically reap sockets
that haven't been active in long enough.
2005-06-23 04:26:44 +00:00
ehouse
f702a75188
log incoming ip addr
2005-05-01 17:38:11 +00:00
ehouse
9fa68e4936
lots of little changes; cleanup and support ctrl functions
2005-04-20 12:13:20 +00:00
ehouse
df17fe4f1e
reorganize; support ctrl functions
2005-04-20 12:10:05 +00:00
ehouse
d885af5386
count bytes sent
2005-04-20 12:08:33 +00:00
ehouse
92c2017cae
use rwlock instead of mutex
2005-04-20 12:06:25 +00:00
ehouse
7036e53229
move to using rwlock
2005-04-20 12:03:58 +00:00
ehouse
12fc28315c
more debug info
2005-04-20 11:59:08 +00:00
ehouse
40351e187b
add several new commands
2005-04-20 11:57:26 +00:00
ehouse
54843e68bf
fix warnings
2005-04-08 14:28:04 +00:00
ehouse
fdca4b0a88
add rwlock helper classes
2005-04-08 14:18:14 +00:00
ehouse
a809a057e4
mutex replaced by rwlock
2005-04-08 14:17:28 +00:00
ehouse
a50fe1d1be
replace mutex with rwlock; move creation inside class so can be
...
controlled by same rwlock.
2005-04-08 14:15:23 +00:00
ehouse
7a15f44c12
move creation inside class so can be controlled by same rwlock
2005-04-08 14:13:25 +00:00
ehouse
423ff190ea
turn on warnings
2005-04-08 14:11:00 +00:00
ehouse
9ee54bf8a3
don't assert after poll returns! Instead close socket on hangup.
2005-04-03 17:02:09 +00:00
ehouse
e3151bdfe2
add command parsing and dispatch table
2005-03-31 02:20:50 +00:00
ehouse
a024c7ccd5
first checked in. works but not robust
2005-03-31 02:11:51 +00:00
ehouse
3f64d755b6
break up compile; new file
2005-03-30 02:00:15 +00:00
ehouse
db3ce42a4f
this file owns thread creation now
2005-03-30 01:52:10 +00:00
ehouse
9dcec7d66c
new include
2005-03-30 01:49:40 +00:00
ehouse
99d713bd8a
first checked in
2005-03-30 01:47:55 +00:00
ehouse
855bc67b17
use new thread pool class
2005-03-30 01:42:28 +00:00
ehouse
64c7513867
cleanup
2005-03-30 01:32:02 +00:00
ehouse
3d40cc0e5c
add cmd to lock/unlock main mutex
2005-03-25 03:24:00 +00:00
ehouse
97323636a9
use new stack-based lock
2005-03-25 03:21:16 +00:00
ehouse
3fd6998c2a
add mutexes; general improvements
2005-03-25 02:59:44 +00:00
ehouse
120a3c1773
first checked in
2005-03-25 02:59:10 +00:00
ehouse
8b34f57bf9
don't kill socket when client connects before server
2005-03-21 05:30:55 +00:00
ehouse
dcebf5bc78
remove null-dereference when socket closed by two threads
2005-03-21 05:30:12 +00:00
ehouse
dc25eb9e35
first checked in.
2005-03-19 22:16:49 +00:00
ehouse
73104819bd
first checked in. primative, but works.
2005-03-19 22:14:27 +00:00
ehouse
50d8c1067b
total rewrite. New protocol eliminates need to store and forward
...
messages: clients connect, then messages are passthru only. Add
control port. Use stl map and vector to remove limit on number of
connections. Also removed synchronization, which need to be re-added.
2005-03-19 22:13:43 +00:00
ehouse
ab6d11a32a
add two new .cpp files
2005-03-19 22:09:03 +00:00
ehouse
9b9f71322f
first checked in
2005-03-06 18:30:59 +00:00
ehouse
39225c8622
first checkin. Works about half the time for one or two games at a
...
time. Very fragile.
2005-03-06 18:27:16 +00:00