eehouse@eehouse.org
7929167129
Merge branch 'android_branch' into relay_proxy
2010-11-10 07:06:10 -08:00
Andy2
c8d7ca40a5
use \1 instead of \n as delimiter -- in case somebody passes as string
...
containing a \n.
2010-11-09 18:02:22 -08:00
Andy2
0f111ab363
use PQexecParams instead of PQexec for queries involving strings from
...
users (i.e. room names) to avoid crashes when the contain apostrophes
-- and in general to be safer.
2010-11-09 17:27:33 -08:00
Eric House
2a2f4d4395
been a while since cvs...
2010-11-09 05:53:49 -08:00
Andy2
d2782af487
do case-insensitive comparison of room names
2010-11-06 18:52:10 -07:00
Andy2
d1fcdb69da
double max room name len since the old value was too small -- only
...
filled half a text field on android
2010-11-03 18:38:43 -07:00
Andy2
c7febf0d10
nuke unused constant
2010-11-03 18:30:05 -07:00
Andy2
0148a93f3e
add a constraint to the stored messages table to avoid dupes. Then
...
remove the artificial limit on number of stored messages. This seems
to fix problems where lots of chats in a row clog up the relay so that
messages never get flowing again. Works more cleanly than
artificially ACKing.
2010-11-03 18:14:19 -07:00
Andy2
633d4c95a7
fix buffer overflow sql error with large messages; combine logged messages.
2010-11-03 18:12:26 -07:00
Andy2
b237277544
put back enum just removed; it's screwing up existing code having all
...
the followers change.
2010-10-25 18:06:48 -07:00
Andy2
e909e4b343
remove redundant message; advance state to ALLCONNECTED on receipt of
...
RECONN or CONN that lists the game as full. This means we get the
all-green icon (or the A in the gtk case) when in a consummated game
rather than only when all devices are actually connected.
2010-10-23 20:29:24 -07:00
Eric House
8a038dc748
Merge branch 'relay_proxy' of ssh://xwords.git.sf.net/gitroot/xwords/xwords into relay_proxy
2010-10-23 19:45:03 -07:00
Andy2
7cf4535b4c
new dbmgr API returns number of players in game; use that rather than
...
currently connected devices to populate [RE]CONNECT message
2010-10-22 22:34:43 -07:00
Eric House
85d29cf560
if can't send allcond to a device because it's not connected queue the
...
message to be sent next time it does. And since the cookieID will
change and should be there already anyway, remove it. (Should remove
the hostID too for the same reason.)
2010-10-22 19:02:52 -07:00
Eric House
9ba2d2f177
default msgs entry timestamps to 'now'
2010-10-18 20:19:09 -07:00
Andy2
2bfb26cded
sleep (in thread) before closing proxy socket. This works around
...
problem where, on PRX_HAS_MSGS path only, device reading socket gets
EOF early though logging here confirms additional bytes have been
written. Gross but effective.
2010-10-17 06:38:28 -07:00
Eric House
34df149046
include age of room with info returned for open public rooms
2010-10-14 22:16:21 -07:00
Eric House
e5c7f476ba
get rid of microseconds in timestamps
2010-10-14 22:15:41 -07:00
Eric House
0d1542ca9d
tweaks to logging
2010-10-12 05:18:44 -07:00
relay
680b2f31b3
use pid to avoid permission problems for logfile in /tmp
2010-10-07 19:48:38 -07:00
Eric House
f2ad6d92b4
use full paths so pidof doesn't pick up instances of xwrelay launched elsewhere
2010-10-07 19:41:02 -07:00
Eric House
86d73392d5
track bytes sent in db; use defaults to init ctime
2010-10-06 21:45:05 -07:00
Eric House
a444786a28
reduce logging
2010-10-05 20:57:19 -07:00
Eric House
2e844d798f
replace single db connection protected by a mutex with one connection per thread kept in thread-local storage.
2010-10-04 20:04:14 -07:00
Eric House
d9ca6f5e11
block TERM and INT from all but the main thread. (Pretty much untested; doesn't fix hang-on-SIGINT.)
2010-10-04 20:03:19 -07:00
Eric House
1ff4d67bc0
block TERM and INT from all but the main thread. (Pretty much untested; doesn't fix hang-on-SIGINT.)
2010-10-04 20:03:00 -07:00
Eric House
43bf3cd50f
improve log statement
2010-10-04 20:01:00 -07:00
Andy2
89f967a016
pass remaining reconnect params in case connName's missing from db.
...
Should only matter if the relay's db's been deleted.
2010-10-04 18:39:26 -07:00
Eric House
d35bc7d748
refuse to store more than four messages at a time for a single
...
connName/hid pair. This works around a problem where a device,
continuing to connect and send all pending messages for another device
that is not connecting, winds up with hundreds of identical messages
stored.
2010-10-03 18:18:15 -07:00
Eric House
1f87379cd0
change default port
2010-09-29 07:37:26 -07:00
Eric House
1b93654f7e
use stored procedure sum_array instead of C macro
2010-09-29 06:21:08 -07:00
eehouse@eehouse.org
d0797af6e5
Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
2010-09-28 21:11:17 -07:00
Andy2
978fa010f1
commented-out sleep positioned to give download progress time to come up.
2010-09-28 18:35:33 -07:00
Eric House
bc65377cfd
track device seeds in db.
2010-09-28 18:06:50 -07:00
Andy2
1de029f3f0
skip public rooms if full. (Should do this in the query....)
2010-09-28 06:42:01 -07:00
Eric House
8f77886f72
make column name shorter
2010-09-24 20:18:20 -07:00
Andy2
f7bad05390
send msg count query and print results
2010-09-24 05:51:42 -07:00
Andy2
b0c6e6da9c
add db method to count messages for connName/hid pairs and handle
...
query using it.
2010-09-24 05:50:02 -07:00
Andy2
c3e1b243b6
add timestamp to msgs db and set it on adding new records. I will
...
likely need to add periodic culling on the server for games that will
never fetch their messages.
2010-09-24 05:46:30 -07:00
Andy2
c44324a32a
log, for now as I've seen assertions failures suggesting a race, the
...
set of checked-out sockets at insert and remove time.
2010-09-23 06:34:18 -07:00
Andy2
40e1d29243
use new methods to store undeliverable messages in a db rather than in
...
memory. Confirmed that devices can hookup without ever being
connected at the same time and that the messages survive a relay
reboot. No further testing yet.
2010-09-23 06:32:57 -07:00
Andy2
74764a493b
create the new db
2010-09-23 06:31:42 -07:00
Andy2
eee41377f4
new methods for storing/retrieving messages in new db.
2010-09-23 06:31:29 -07:00
Andy2
9a035c66ff
add assertion
2010-09-23 06:28:13 -07:00
Andy2
85b4f3f075
move hostid assignment and tracking into db so it survives reboots and
...
recycling of crefs between when devices in a game connect. This plus
movement of messages into the DB will re-enable games played without
the two devices ever being connected at the same time.
2010-09-23 05:33:27 -07:00
Andy2
1d0c207521
add test command for proxy feature to fetch for connNames whether
...
there are messages pending for them. Not handled yet on relay.
2010-09-21 18:28:31 -07:00
Andy2
e06baf566f
get public rooms from the db rather than stubbing it out.
2010-09-21 06:54:47 -07:00
Andy2
be23e06b60
use read_packet to replace duplicate code
2010-09-21 06:38:43 -07:00
Andy2
e7b5923883
finish first pass at sending open public room names -- but with actual
...
list harvesting stubbed out.
2010-09-21 06:27:31 -07:00
Andy2
2ec67c8ed1
finish rq to work with current format; add to makefile
2010-09-21 06:26:49 -07:00
Eric House
4ad735124c
add logging and assertions. There's a race condition in cref
...
recycling and may be one in tpool socket checking-out.
2010-09-20 22:11:13 -07:00
Eric House
047f41b516
send cookieid as part of [RE]CONNECT_RESPONSE in addition to ALL_COND (where it's now redundant).
2010-09-20 22:06:35 -07:00
Andy2
a549ade1fa
a bit more work on rc
2010-09-20 18:31:17 -07:00
Andy2
15cd3af62a
just a comment
2010-09-20 05:35:29 -07:00
Andy2
e1c99f53cd
work on detecting duplicate packets and devices that have reconnected
...
on a different socket; print all present seeds for debugging.
2010-09-20 05:35:19 -07:00
Andy2
ac8891016f
work on detecting duplicate packets and devices that have reconnected
...
on a different socket; print all present seeds for debugging.
2010-09-20 05:35:09 -07:00
Andy2
430b033ae0
a bit of progress on cmdline tool
2010-09-20 04:59:09 -07:00
Andy2
df1ec1628a
replace killSocket(), which jumped right into crefmgr and could get
...
ahead of processing data arrived on the same socket, with EnqueueKill
that adds to same queue from which data's taken. So if device dies
immediately after sending data there won't be a race between closing
the cref (if this is the last open socket) and handling the data. I'm
still dying with assert fails when running 100 games at once, but much
less frequently
2010-09-18 08:47:56 -07:00
Andy2
a4913596db
remove logging
2010-09-18 08:42:15 -07:00
Andy2
c5d113a8da
remove _locked from name of method since it's not called when holding a lock.
2010-09-18 07:46:10 -07:00
Andy2
53b3d7c32f
enque sockets in new object that contains type so later other events
...
(e.g. socket closes) can also be queued; track what sockets are
currently being handled so no two threads are ever processing events
on same socket. This makes running 'NGAMES=50
./scripts/discon_ok2.sh' crash very infrequently rather than every
time, but the race condition in crefmgr remains. Queuing socket
closes should help.
2010-09-18 07:44:14 -07:00
Andy2
9c8889b429
get rid of mutex guarding reconnect. There shouldn't be any need
...
since game slots are already assigned, and it's slowing down
reconnects in their race with kills.
2010-09-18 05:07:23 -07:00
Eric House
bb1e46fa81
Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
2010-09-16 20:13:54 -07:00
Eric House
d0e707a48e
get started with test/cmdline app to query relay's new proxy interface.
2010-09-16 20:13:24 -07:00
Andy2
c5eef29bcc
some suspicious crashes and subsequent reading say that multiple
...
threads can't share the same db connection. So synchronize all
queries. Multiple threads *can* access the db concurrently as long as
each has its own connection, so I could add connections to the tpool
threads. But this will probably be performant enough for the first
10K simultaneous users. :-)
2010-09-16 20:08:32 -07:00
Andy2
1490b2def9
simplify state table, getting rid of a bunch of states: we never leave
...
ALLCOND until it's time to kill the cref. When one device connects
and leaves the cref is recycled, so when a new device joins and is
assigned the same game and a new cref is initialized the number of
players already registered must be set from the db entry; do that.
2010-09-16 18:59:56 -07:00
Andy2
50c387d75e
remove players from db as well as runtime when ack times out
2010-09-16 06:49:35 -07:00
Andy2
25c1824c45
fix broken assertion and add missing state transitions to fix crashes.
2010-09-16 05:39:25 -07:00
Andy2
2b702b48d6
need to clear CID of record in DB when killing corresponding in-memory
...
cref or reconnect will fail.
2010-09-16 04:47:17 -07:00
Andy2
d1a9c3962a
rename cookie->room in db; reposition columns.
2010-09-16 03:30:24 -07:00
Andy2
b25579b893
greatly simplify state machine for connections. Now (with DEVACK=20
...
on conf file) newrelay.sh will complete running 50 4-device gtk games.
Haven't tested reconnect case which I almost certianly broke.
2010-09-16 01:53:43 -07:00
Andy2
06c8fdc67f
stop tracking seeds separately until have a use for 'em separate from
...
HostRec. This fixes failure to reconnect so that now a complete game
is possible (gtk version) without the two devices every being
connected at the same time.
2010-09-16 01:13:26 -07:00
Andy2
a870cac86d
break connect and reconnect into separate paths to simplify. Be
...
consistent: nJoined in DB tracks players "ever seen and issued
connName" rather than "currently connected". Next step: debug game
between two devices never connected at same time.
2010-09-15 14:05:51 -07:00
Andy2
8961910263
field name change
2010-09-15 14:03:59 -07:00
Eric House
b8a431cf01
fix bug in sql statement
2010-09-14 21:28:18 -07:00
Eric House
54d268b718
pass through to database whether room is public
2010-09-14 21:20:11 -07:00
Eric House
e3053370d0
add cmd to build the database and main table
2010-09-14 21:18:04 -07:00
Eric House
ddcc338ed7
don't break out of loop without unlocking mutex
2010-09-14 21:16:16 -07:00
Eric House
56a920740a
remove unused funtion declaraion
2010-09-14 21:15:24 -07:00
Andy2
3b5b5f0241
factor dbmgr code; add and call method to zero CIDs on boot.
2010-09-15 01:14:28 -07:00
Andy2
821e4d9c39
add ACK to protocol, returned by device after gets connName on initial
...
connection. Space is held for device on assumption ack will come
back, then given up if it fails.
2010-09-14 13:54:52 -07:00
Andy2
f8c1c016cc
remove special-case states and handling of first connect; track number
...
of players sought in the cref itself, adding in constructor, and not
in HostRec instances. This is cleanup with no behavior change.
2010-09-13 13:49:13 -07:00
Andy2
100ed8532f
timestamp records on creation
2010-09-12 05:04:52 -07:00
Andy2
ded6e22180
do finding of open games using database rather than cref list, which
...
requires updating the number of players when new devices join. Drop
requirement that cid be unique.
2010-09-12 04:49:03 -07:00
Andy2
663551fcb5
improve db, adding uniqueness contraints. Pass in connName so can
...
meet that constraint. Figure out next cid using a query at startup.
2010-09-12 03:57:23 -07:00
Eric House
c1da64b96a
instantiate and use the new dbmgr class
2010-09-11 19:45:04 -07:00
Eric House
87de53cf96
add new class to interface with postgres database in an experiment to
...
simplify things by using a db to survive a crash/reboot. So far (with
next checkin) manages to update a db. Next need to do queries instead
of searches through in-memory data.
2010-09-11 19:44:37 -07:00
Andy2
54d49d450a
add back state and table entries to get rid of an unused cref.
2010-09-11 01:40:40 -07:00
Andy2
463e9c3ccf
pass langCode in reconnect case too
2010-09-11 01:23:39 -07:00
Andy2
dc957e1a92
add match test on language code and number of players
2010-09-10 13:45:40 -07:00
Andy2
e60495ff93
read, pass, store and display langCode. Not yet used to route
...
connections to crefs.
2010-09-10 01:59:37 -07:00
Andy2
20312144dd
tons of changes, still rough, snapshoted here: a gtk device vs device
...
game works to completion with both signing up as guests (no -s) with
one local and one remote player (identical commandlines.) Not yet
tested: if any signs up as a host, reconnecting rather than
connecting, etc. This is just a snapshot.
2010-09-10 01:30:40 -07:00
Andy2
f7c5ff619d
turn off heartbeats
2010-09-10 01:24:03 -07:00
Eric House
89e7a506a4
reduce amount of logging
2010-09-08 20:28:14 -07:00
Eric House
90d505abea
call accept() in main thread rather than in thread proc to fix
...
long-standing bug where main thread kept finding socket to be readable
and forking new threads to call accept() on it and then block forever.
2010-09-08 20:24:36 -07:00
Andy2
33d60452a3
fork a thread to handle proxy connects. Later may want to use thread
...
pool as for game threads.
2010-08-23 18:52:52 -07:00
Andy2
a34ccb424f
device now passes list of "relayID"s, consisting of connName plus
...
device id, to relay, one for each stored game that's communicating via
the relay. Relay parses out each relayID. Next relay can use these
to look up whether messages are available and reply with that, and
device can put up a notification.
2010-08-22 12:16:57 -07:00
Andy2
56b6a425e2
proxy now writes one byte to relay and reads one byte reply.
2010-08-19 18:34:28 -07:00
Andy2
019da83d60
meant to check this in
2010-08-12 06:42:59 -07:00
Andy2
416b379781
add second class of socket to be listened on, meant for per-device
...
rather than per-game connection, and when adding connected sockets to
active set track the type.
2010-08-12 06:42:33 -07:00
eehouse@eehouse.org
3b7abc2a31
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-07-29 21:13:00 -07:00
Eric House
e857b01783
ignore logs and core files
2010-07-29 21:07:20 -07:00
Eric House
d7a3795355
add static decl
2010-07-29 21:04:33 -07:00
Eric House
d7d2a7523b
kill cref when in bad state.
2010-07-29 19:46:52 -07:00
eehouse@eehouse.org
13ecb2f929
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-07-29 05:41:48 -07:00
Eric House
b170a04dec
drop duplicate [re]connect packets before they enter the state
...
machine. Fixes problems where crefs get stuck in the
XWS_CHK_ALLHERE_2 state. Still should probably kill a cref where
there's no state table entry.
2010-07-28 22:21:01 -07:00
Eric House
f70b9e1d10
use constructor to save some code; no behavior change
2010-07-28 20:17:54 -07:00
eehouse@eehouse.org
958ec15a19
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-07-27 21:32:17 -07:00
Eric House
ad1be65236
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-07-27 20:47:42 -07:00
Eric House
b335151172
log when no event pushed while adding players -- this may be how state machine is getting screwed up
2010-07-27 20:47:04 -07:00
Andy2
51ffdce185
comment out pthread_create failure log; seeing it too often and it's
...
just for the web view.
2010-07-26 18:37:44 -07:00
Andy2
f05bfcb3d8
log when dropping message that would mess up cref player counts
2010-07-16 06:23:20 -07:00
Eric House
a52fc5a4fd
don't call removeSocket when none was added
2010-07-15 18:21:32 -07:00
Eric House
8e5abb189b
add mutex for reconns too; log socket and ip addr connecting on it
2010-07-15 18:14:44 -07:00
Eric House
5ea1f3b470
list newest crefs first
2010-07-15 18:13:01 -07:00
Eric House
78f965b979
replace asserts that have been firing on integrating reconn events
...
with dropping the reconn messages; move log of state table lookup failure
into cref so cref id can be included
2010-07-14 21:32:19 -07:00
eehouse@eehouse.org
f9d8df8cea
don't track xwrelay.conf so local changes don't show as local mods
2010-07-14 06:29:50 -07:00
Andy2
41f8f574b1
use git describe for version info/stamp
2010-07-07 20:26:25 -07:00
Andy2
5365ea4f4e
fix crash when empty string given on ctrl port
2010-07-07 18:59:48 -07:00
Eric House
6456165a92
replace svnversion with gitversion.sh
2010-06-05 07:27:14 -07:00
Eric House
8aaaa06bcb
identify rev number as from git
2010-06-05 07:25:24 -07:00
ehouse
43181f5cd2
accept multiple cref ids and names on console
2010-06-03 03:00:35 +00:00
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