Commit graph

864 commits

Author SHA1 Message Date
Eric House
f05b1e0525 log model -- can remove later 2014-04-17 07:44:32 -07:00
Eric House
0897ae2ba9 log the bad query 2014-04-17 07:43:58 -07:00
Eric House
ad0f882335 change port to live server's so recovery can be faster 2014-03-12 19:47:14 -07:00
Eric House
5f34fe3317 first cut at script to fetch messages for a game 2014-03-12 19:45:07 -07:00
Eric House
27a5990283 log out-of-date token 2014-02-24 08:00:52 -08:00
Eric House
cd31cd432a tweak column display 2014-02-24 08:00:43 -08:00
Eric House
b840f7d708 add filter for rooms 2014-02-24 08:00:21 -08:00
Eric House
1f698eae6d use ccache for relay build too 2014-01-25 19:03:50 -08:00
Eric House
0fb4c19ca7 fix syntax error in table creation sql 2014-01-07 07:17:48 -08:00
Eric House
b43855a313 fix curses build for 64bit compile and to use common layout (meaning
tray is now under the board unstead of to the right).  Works on 64-bit
system at least for non-networked games.
2014-01-05 13:04:59 -08:00
Eric House
b5bec1e2cd ignore valgrind core files 2013-11-14 21:48:06 -08:00
Eric House
91b54dd66a use delete to free what's allocated using new 2013-10-25 06:16:17 -07:00
Eric House
a33f04e077 fix shutdown to work (by sending signal) 2013-10-25 06:16:17 -07:00
Eric House
e8616735b6 move .o files into an obj directory 2013-10-21 18:52:12 -07:00
Eric House
9efb044c4f simplify construction of one query 2013-10-09 21:13:22 -07:00
Eric House
ec468ef3ba printf -> catf missed because in ifdef 2013-10-09 20:40:21 -07:00
Eric House
bb246fd7e7 rename printf -> catf; no other changes 2013-10-09 20:20:45 -07:00
Eric House
c34fb48a2c oops -- init mutex. This may be why the relay's hanging after a
crash.
2013-10-09 20:08:29 -07:00
Eric House
7290a41913 tweak; add limit 2013-10-01 00:01:39 -07:00
Eric House
b3723897d5 to prevent duplicate UDP packets (I hope), bind the UDP socket to a
single ip address rather than INADDR_ANY.  Get that address at runtime
for an interface provided in the config file.
2013-09-30 23:40:12 -07:00
Eric House
945c41c615 Merge remote branch 'origin/android_branch' into android_branch 2013-09-27 05:46:43 -07:00
Eric House
9f38ded122 new script 2013-09-27 05:46:06 -07:00
Eric House
4202f24091 don't allow reregister with a RELAY_ID (a client bug) 2013-09-26 08:37:21 -07:00
Eric House
c1f94681bb when a message sent via udp from cref isn't acked, add it to stored
messages so gcm loop can pick it up.
2013-09-26 07:14:24 -07:00
Eric House
63067dc374 oops: the test is equality with 'epoch' 2013-09-25 07:33:41 -07:00
Eric House
31fa2ea442 turn on feature where sent messages are marked rather than deleted.
Make default 'epoch' rather than NULL so constraint will work to
prevent duplicates, and fix insertion SQL to not violate constraint.
2013-09-25 06:38:10 -07:00
Eric House
fb59aa4907 use epoch rather than null as default so constraint will work 2013-09-24 08:37:18 -07:00
Eric House
8862c5f750 move include file up 2013-09-24 08:37:18 -07:00
Eric House
a4de87cfeb fix constraint, and add stime to it 2013-09-24 08:37:18 -07:00
Eric House
f59a7db85d update to work with either udp or tcp-sourced stored messages 2013-09-23 07:18:00 -07:00
Eric House
e1a5a2d53a remove excess logging 2013-09-22 20:35:32 -07:00
Eric House
2e6d49303b remove logging around hasNoMessages stuff -- too much 2013-09-20 04:54:05 -07:00
Eric House
e12069b45d fix to work with devids and devtypes being arrays 2013-09-19 06:38:37 -07:00
Eric House
5d49b9b5d6 oops: don't default to clearing relayid 2013-09-18 08:04:12 -07:00
Eric House
9650000fce add filter option -- sometimes want to see devices not in a current game. 2013-09-18 07:03:25 -07:00
Eric House
af44c6d190 only append to mtimes when appending a new devid 2013-09-15 12:54:47 -07:00
Eric House
b67ea7293d add mtimes, remove mtime, for devices to track each time the devid
changes.  Eventually; now it's updated too often.
2013-09-15 12:46:40 -07:00
Eric House
b0e2975994 show specific columns from devices table rather than * 2013-09-15 10:16:11 -07:00
Eric House
c212c0e367 add in-memory cacheing of messageless-connname/hid combos. 2013-09-15 10:04:46 -07:00
Eric House
657d0d2b1f -l - means log to stderr 2013-09-15 10:04:45 -07:00
Eric House
de1f1cf681 in devices table, replace devid and devtype with array so can track
history if/as they change; remove rrcount as no longer needed.
2013-09-15 09:59:51 -07:00
Eric House
2629c07256 Address problem with devids (e.g. GCM): until now when you got a new
devid you tossed your relayID and reregistered.  Which meant any
existing messages meant for your relayID were orphaned, and any open
games didn't know who they belonged to until you reconnected to them
with your new relayID.  So: modify the UDP protocol (though not on
Android yet) to include both relayID and devid with registration, with
one or the other an empty string if not present or not changed from
earlier.  I can't fix existing clients that are dropping their
relayIDs, but when one does a re-connect without a relayID I can look
it up from the existing game record, then reuse it rather than issue a
new one.  Better than nothing -- and that protocol will be obsolete
soon anyway.
2013-09-14 21:06:14 -07:00
Eric House
2cad611ec4 get postgres port from config; send connname only if present 2013-09-11 07:42:14 -07:00
Eric House
c115752852 supply in linux client, and look for and store on relay, os version 2013-09-07 16:17:31 -07:00
Eric House
5b7a039d78 cleanup 2013-09-05 07:53:47 -07:00
Eric House
48e0afc589 add comment 2013-09-03 06:54:42 -07:00
Eric House
032f8c1f99 add ctrl port command to post UPGRADE message to clients 2013-09-03 06:52:02 -07:00
Eric House
8da0b73744 replace string_printf() with new class derived from std::string with
printf() method.
2013-09-02 13:17:42 -07:00
Eric House
a95d620b09 Make ack timeout settable from ctrl port; add ctrl facility to print
and nack outstanding acks.
2013-08-31 08:30:25 -07:00
Eric House
07c9722433 add ability to forget multiple devices 2013-08-31 08:26:44 -07:00
Eric House
d9bfc01e35 change unsigned char to uint8_t (using sed) 2013-08-29 22:55:11 -07:00
Eric House
0e6b211a76 fix treating game-targeted messages as if they were device-targeted.
Should probably have separate tables for the two types....
2013-08-29 06:37:22 -07:00
Eric House
b80051cc73 send dev-targeted messages pulled from db by rewriting their headers
with a new packetID.
2013-08-28 21:36:12 -07:00
Eric House
de125eb9a6 fix GetStoredMessages to also return messages without connnames,
i.e. messages to a device rather than to a game.
2013-08-28 21:29:39 -07:00
Eric House
cd2b83c9c5 type change: use vector<uint8_t> rather than string in struct for
retrieving data from db.
2013-08-28 20:33:42 -07:00
Eric House
c4cf8b3c3c make 'devs print' take multiple devid args; rename args to argv everywhere. 2013-08-28 19:23:40 -07:00
Eric House
831018ed9d oops: remove extra format specifier 2013-08-28 19:20:37 -07:00
Eric House
b5f35fab78 unescape things like '\n' in messages 2013-08-28 08:00:21 -07:00
Eric House
4207df8078 apply limit to all; list messages without connname too 2013-08-28 07:29:24 -07:00
Eric House
2e7433f2b2 change 'devs msg' command to send to a list, or to all 2013-08-28 07:29:23 -07:00
Eric House
35a09512ce add missing params 2013-08-26 08:41:42 -07:00
Eric House
f6b34fcbbc sleep time should depend on configured ACK expiry 2013-08-25 22:24:21 -07:00
Eric House
d3c15eb58b remove logging 2013-08-25 22:23:52 -07:00
Eric House
063b01d3d8 change most len-as-short+bytes strings to vli+bytes; add device model
to what's passed for device registration, and store it in a new column
in devices table.
2013-08-25 21:20:26 -07:00
Eric House
d10e9f6235 use vlis for acks in both directions 2013-08-25 16:59:07 -07:00
Eric House
91235f3be7 begin process of using variable-length-ints in udp protocol. Works
between linux client and relay, but unrelased features of Android
client will be broken until fixed.
2013-08-25 12:34:35 -07:00
Eric House
69f34f4ef8 make method private 2013-08-25 12:32:26 -07:00
Eric House
cf3437c686 fix argc checking to prevent crashes 2013-08-23 07:44:42 -07:00
Eric House
38adea1612 fix infinite recursion 2013-08-22 08:23:32 -07:00
Eric House
1af12f1de2 refactor packet assembly/sending so posting message can post all,
including header.
2013-08-22 08:15:38 -07:00
Eric House
16aafccec6 to telnet interface add ability to forget device and to send to one
not known (which will make message available next time it connects or
via GCM); rename methods.
2013-08-22 06:29:20 -07:00
Eric House
23a59e8097 sometimes a device goes away and we don't notice, so when it comes
back just reuse its record rather than asserting there's no record
there.
2013-08-21 21:32:55 -07:00
Eric House
3dee41e584 set new clntvers row in devices table at the same time as updating it
in games table.  (The latter is now redundant and will go away.)
2013-08-21 06:49:37 -07:00
Eric House
2157706dcd add client version and a desc string to devices DB and to reg info sent to relay 2013-08-20 08:09:45 -07:00
Eric House
84d06b9fed use g_shell_parse_argv() to parse input buf (so messages can be in
quotes and contain whitespace)
2013-08-19 08:25:06 -07:00
Eric House
0868a33c83 print out whether message is ACK'd or not 2013-08-18 20:52:09 -07:00
Eric House
d0aca01289 clean up send message/alert code 2013-08-18 15:48:44 -07:00
Eric House
47203437cc register devices more often; add ctrl command to send text message to
device if possible, otherwise to post it to the db (mostly for testing).
2013-08-17 14:55:19 -07:00
Eric House
6a27bbba94 tweaks to new ctrl command 2013-08-15 19:22:23 -07:00
Eric House
d07bb5013d oops: function need to return something 2013-08-15 19:22:01 -07:00
Eric House
62f0819a82 Toward resurrecting ctrl feature to give runtime info about stuff that
isn't in the DB.  Step one: comment out the stuff that doesn't compile
and add ability to print all registered devices with their ages.
2013-08-15 08:44:33 -07:00
Eric House
06f0b7e411 treat KEEPALIVE same as RQSTMSGS (for now) 2013-08-15 07:25:20 -07:00
Eric House
61009cefc7 in advance of using memcache, keep track (in memory) of those devids
for which no messages are pending, since that's a query that can be
made by each device every minute.
2013-08-15 07:24:30 -07:00
Eric House
f1b60dab62 Don't assert when can't find state transition. At least in some cases
these result from unexpected/out-of-order packets that slip through.
2013-08-14 08:11:21 -07:00
Eric House
fe51d19c2e Device can't be 'alreadyHere' if has hostID of 0 since the only way a
device gets registered involves giving it a non-0 hostID.  Fixes array
OOB access.
2013-08-14 08:10:09 -07:00
Eric House
80f66d1df7 remove test for duplicates now that it's impossible 2013-08-13 08:20:57 -07:00
Eric House
5be8779749 remove redundant member variable 2013-08-13 08:19:32 -07:00
Eric House
c9406c36ae use a simple array rather than a vector to store currently connected
devices.  It's simpler, searching for hid is faster, and it makes it
easier to detect when we try to add the same device twice.
2013-08-13 08:04:19 -07:00
Eric House
fde50cce32 move timeout interval into config file; cleanup 2013-08-12 07:41:48 -07:00
Eric House
787367071d show only those devids in the visible games 2013-08-08 19:55:04 -07:00
Eric House
635b948c41 don't drop messages from devices without a devID -- lots of older
devices are in that boat.
2013-08-08 00:40:32 -07:00
Eric House
01c97c5716 null token is a possibility if message was stored by device connecting
via tcp and device is now connecting via udp
2013-08-07 21:59:21 -07:00
Eric House
cd9eea665b oops: still need to register device connecting via tcp so gcm sends
can work.
2013-08-07 21:36:06 -07:00
Eric House
84b77d4456 log threadid as unsigned int 2013-08-07 21:32:58 -07:00
Eric House
b49486fc3f cleanup: use constant and add/use isUDP() 2013-08-07 21:31:10 -07:00
Eric House
bac947d780 don't remember tcp-based addresses. Fixes problem when a device
switches from tcp- to udp-based connection.
2013-08-07 21:04:05 -07:00
Eric House
91c82d9874 tweak logging to match format gdb prints 2013-08-07 21:03:11 -07:00
Eric House
6dbabaa319 cleanup 2013-08-07 21:02:47 -07:00
Eric House
470dbb5304 oops: still remove address from set tracked if it's not tcp 2013-08-05 07:50:11 -07:00
Eric House
4ad6696ecc add delete-on-ack logic to another message sending site, and fix
assertion failure caused by not providing a client token on messages
being sent.
2013-08-02 22:33:06 -07:00
Eric House
1e35d676bf change constant name 2013-08-02 07:31:41 -07:00
Eric House
6e14a6d33a fix leak; remove unused variable 2013-08-02 06:11:08 -07:00
Eric House
8b936ea0ea iterator is invalid after erase() call, so advance first. Fixes problem valgrind found. 2013-08-02 06:08:41 -07:00
Eric House
a8cc920dcf new method 2013-08-01 07:49:12 -07:00
Eric House
4ecb0f534d For a subset of stored messages sent, don't remove from DB until
they're acked.  (This is the goal for all messages sent via UDP, but
will be harder elsewhere in the code.)
2013-08-01 07:48:44 -07:00
Eric House
684effd170 cleanup 2013-08-01 06:12:58 -07:00
Eric House
17b8eae1f1 clean up fetching of stored messages, and excluse those from dead games 2013-07-31 07:24:58 -07:00
Eric House
54c1e0c2ab drop bogus assert 2013-07-29 17:39:43 -07:00
Eric House
d8a4b5ce29 include udp maxInterval, the number of seconds the relay's configured
to assume an address is still good when it hasn't heard from it, in
reg response reply, send that reply always, and read and log the new
field on clients.  It will eventually be used to implement a
keepalive.
2013-07-29 07:27:30 -07:00
Eric House
cdea106824 change param to simplify code a bit 2013-07-29 06:33:31 -07:00
Eric House
5f9b2e431f optimization: test address before fetching messages for it 2013-07-28 07:28:32 -07:00
Eric House
9951064439 fetch all stored messages at once to reduce number of DB calls made. 2013-07-25 06:37:53 -07:00
Eric House
6bb2efbbd5 remove mistaken assert 2013-07-24 06:03:50 -07:00
Eric House
41160579ca remove duplicate 2013-07-23 18:30:08 -07:00
Eric House
bfc617720e add isCurrent() method on UDP addresses based on how long it's been
since we've received data from the same source, and use to drop
packets in response to reads that are older than when the test says
the endpoint of the address changed.
2013-07-23 06:21:57 -07:00
Eric House
572d3596ae add heretofore undocumented config 2013-07-23 06:18:17 -07:00
Eric House
ceacbc2cbe fix formatting error 2013-07-23 06:17:35 -07:00
Eric House
acca4d14d4 new files to track how long it's been since data's been received from
a UDP address.  The idea's that when there's too long a gap the
address has likely been recycled and we shouldn't send replies to
packets received before the reset.
2013-07-22 07:26:14 -07:00
Eric House
7b18da70db logging tweak 2013-07-22 06:11:10 -07:00
Eric House
48a2567edf log contents of incoming udp packets 2013-07-22 06:06:39 -07:00
Eric House
13550865ad drop packets in queue if they've been there longer than 30 seconds --
which should be a configurable value.
2013-07-22 06:05:24 -07:00
Eric House
13c234dfab log when address replaced 2013-07-20 11:59:00 -07:00
Eric House
5d8cd5a17f recognize already-seen devices. This seems to occasionally fix
reconnect problems but needs to be studied/tested more -- check logs.
2013-07-20 11:44:00 -07:00
Eric House
464ef49018 add new send_via_udp that may be able to check for address validity 2013-07-20 10:37:38 -07:00
Eric House
792a51a404 change ivar name 2013-07-20 08:33:22 -07:00
Eric House
61992943dd Add mapping from address to devid in order to catch when an address is
reused.  That required making AddrUnion a class rather than a simple union.
2013-07-20 08:06:14 -07:00
Eric House
32150049e2 assert that we aren't tracking two connected games with the same hid 2013-07-20 06:28:35 -07:00
Eric House
2ce097629f log contents of udp packets as b64-encoded strings for debugging; off
by default.
2013-07-18 06:52:07 -07:00
Eric House
06dd9a99a1 better logging 2013-07-17 21:34:52 -07:00
Eric House
3737f19548 better logging 2013-07-17 21:34:27 -07:00
Eric House
972dcfec81 cleanup 2013-07-17 21:33:59 -07:00
Eric House
1d5cf0bea7 don't remember devid unless it's valid 2013-07-17 21:33:36 -07:00
Eric House
d436232800 correctly log b64 dump of return address at record and use sites 2013-07-17 06:38:25 -07:00
Eric House
021d6370f3 drop, rather than asserting about, corrupt packets -- meaning where
the player counts don't make sense.
2013-07-16 06:40:00 -07:00
Eric House
1638d964fb log socket address to try to track down apparent misaddressing 2013-07-16 06:38:26 -07:00
Eric House
e80fe76652 assert we don't go out of bounds on array 2013-07-15 07:33:27 -07:00
Eric House
b5714e9d14 improve API: hide special numbers inside implementation 2013-07-12 08:24:44 -07:00
Eric House
5814febad5 better client token logging 2013-07-10 23:13:50 -07:00
Eric House
2060aa4577 don't match on empty devID 2013-07-10 23:12:57 -07:00
Eric House
dbf156fca7 remove excess logging 2013-07-10 08:02:28 -07:00
Eric House
d50c808f96 Merge branch 'android_branch' into gtk_multigame
Conflicts:
	xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
	xwords4/common/comms.c
	xwords4/linux/cursesmain.c
	xwords4/linux/cursesmain.h
	xwords4/linux/gtkmain.c
	xwords4/linux/gtkmain.h
	xwords4/linux/linuxmain.c
	xwords4/linux/main.h
	xwords4/linux/scripts/discon_ok2.sh
	xwords4/relay/xwrelay.cpp

(Note: The curses app crashes on exit with mempool assertions, but that's a problem before the merge.)
2013-07-09 07:18:00 -07:00
Eric House
232b27e06a combine two log lines 2013-07-05 21:31:39 -07:00
Eric House
f87ffe7a96 display new column 2013-07-05 21:28:27 -07:00
Eric House
e8022d44ea correctly parse hid from relayID, fixing assertion failure. I'm not
sure how it ever worked....
2013-07-05 21:26:17 -07:00
Eric House
713551fa43 only log recv() errors that aren't related to non-blocking sockets 2013-07-05 21:23:54 -07:00
Eric House
254b82104c reduce priority of log message 2013-07-05 08:03:31 -07:00
Eric House
2cd84c4229 test that address is good each time through loop 2013-07-05 08:03:03 -07:00
Eric House
23c66e93ab add flag required to compile on some linux systems 2013-07-05 08:02:22 -07:00
Eric House
a93eb4a511 fix assertion failure: log and drop packet when hid outside of accepted range. 2013-07-05 08:01:31 -07:00
Eric House
883cec0652 log whether b64 encoding is being used 2013-07-05 06:56:43 -07:00