Commit graph

6893 commits

Author SHA1 Message Date
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
42bbc946ae quote variable and echo when switching to udp 2013-08-15 07:20:22 -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
652a8ec905 toward staying reachable as-if GCM were there: note whether GCM
working, and if so skip keeping the connection up.  But otherwise stay
reachable by relay for a week after last udp packet was received.
2013-08-12 08:24:52 -07:00
Eric House
09494dcf09 remove unused param 2013-08-12 08:15:55 -07:00
Eric House
0ba0530bf3 set global before informing of change so if there's a query result
will match what was sent
2013-08-12 08:13:58 -07:00
Eric House
fde50cce32 move timeout interval into config file; cleanup 2013-08-12 07:41:48 -07:00
Eric House
a96c0c548f switch from static final ints to an enum; no other change. 2013-08-11 10:47:01 -07:00
Eric House
1d52a9afea add reset button to ConnStatusHandler on-click dialog that calls to
stubbed-out function in RelayService
2013-08-10 23:24:46 -07:00
Eric House
de1803c9dd cleanup: reduce number of params required 2013-08-10 17:36:37 -07:00
Eric House
758c6a6c5c add interface to ConnStatusHandler as part of moving UI-based response
into Activity.
2013-08-10 14:25:28 -07:00
Eric House
dbc1bb1cd5 use getHandler() 2013-08-10 08:54:51 -07:00
Eric House
787367071d show only those devids in the visible games 2013-08-08 19:55:04 -07:00
Eric House
f96155f12b merge changes for quick b65 2013-08-08 01:14:23 -07:00
Eric House
9528e61f84 Merge remote-tracking branch 'origin/android_branch' into android_branch 2013-08-08 01:07:02 -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
20056153aa up version strings 2013-08-07 23:54:47 -07:00
Eric House
6bb2a9bb9a fix crash upgrading from beta 30 (which is two years old!) 2013-08-07 23:52:37 -07:00
Eric House
d8e6979bcc cleanup: store db schema as arrays of arrays rather than arrays whose
odd- and even-indexed members have different roles.  Uses slightly
more memory but is better code.
2013-08-07 23:48:33 -07:00
Eric House
d00e9edf55 fix crash upgrading from beta 30 (which is two years old!) 2013-08-07 23:36:17 -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
ae21b6f0d8 use new --use-udp flag and, by default, switch devices from tcp- to
udp-based connections over time at a configurable rate.
2013-08-07 21:12:08 -07:00
Eric House
71ea59e7fb separate whether app is using udp from whether it stores games in a
sqlite3 db so that it can switch mid-game -- that being something that
needs testing.
2013-08-07 21:09:48 -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
da3f62729b Merge tag 'android_beta_64' into android_branch
beta 64
2013-08-07 06:18:15 -07:00
Eric House
b33991486c up strings for next beta (a quick fix) 2013-08-06 22:03:09 -07:00
Eric House
a38fd0e96c fix too-short tray on 10" tablet by making height a 16-bit value, not 8-. 2013-08-06 21:56:10 -07:00
Eric House
b9450589c8 add new commandline option --use-udp. Not yet used. 2013-08-06 21:10:42 -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
ed0c0fe3a5 add methods that don't require handler but use any set 2013-08-02 08:03:35 -07:00
Eric House
1e94e217b8 collapse catch statements since all do the same thing 2013-08-02 08:02:46 -07:00
Eric House
da54b1e5fb add keepalive timers 2013-08-02 08:01:16 -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
64b89536b0 Test whether game is on device before starting process of opening it.
Fixes problem caused by relay sending messages for games that have
been deleted.
2013-07-30 07:43:52 -07:00
Eric House
4ce2368e90 remove unused variable and functions that set it 2013-07-30 07:35:13 -07:00
Eric House
54c1e0c2ab drop bogus assert 2013-07-29 17:39:43 -07:00
Eric House
b40533230a fix OS warning by unregistering SMS receivers in onDestroy 2013-07-29 07:50:01 -07:00
Eric House
63ad3a196b debug build asserts that packet is meant for this device, but
non-debug should drop those that aren't.
2013-07-29 07:30:46 -07:00
Eric House
1f877c7567 remove logging 2013-07-29 07:29:01 -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
6418513a6d don't try to read from socket if == -1 2013-07-22 06:15:35 -07:00
Eric House
385243763a Merge remote-tracking branch 'origin/android_branch' into android_branch 2013-07-22 06:13:01 -07:00
Eric House
a191c6fc2a don't add chats to queue at len 64 rather than 128 2013-07-22 06:12:06 -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
3a14b12cc5 exit when number of core files changes, not if it's non-zero 2013-07-20 12:52:32 -07:00
Eric House
13c234dfab log when address replaced 2013-07-20 11:59:00 -07:00
Eric House
49a2d099f0 include packet num in every udp packet. They start over on app
reboot, but add a bit of help with debugging.
2013-07-20 11:57:10 -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
573a87993e Don't propogate chat when queue too full. This *should* only impact
tests since users won't keep chatting at a non-responsive friend.
2013-07-20 08:01:56 -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
27d9f3de45 Don't enable chat when more than 128 messages are in queue to prevent
an extremely unlikely cause of stalls -- and make tests trip over full
queues less often.
2013-07-18 07:37:45 -07:00
Eric House
3f59b31d51 Log received udp messages as b64-encoded strings. These match what the
relay's now logging
2013-07-18 07:07:25 -07:00
Eric House
1e6ff9b33c include seed in chat messages to make sure they're unique 2013-07-18 07:06:20 -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
93a7c7f817 fix to compile when DEBUG not defined 2013-07-17 06:52:35 -07:00
Eric House
bf39f9194c kill service after 3 minutes of no socket activity 2013-07-17 06:42:54 -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
62dacb83d8 fix to compile when DEBUG not defined 2013-07-16 08:17:46 -07:00
Eric House
4d9d65b67e Merge remote-tracking branch 'origin/android_branch' into android_branch 2013-07-16 08:07:41 -07:00
Eric House
3d9539b42b don't stop comms before every save, but only when stopping 2013-07-16 08:06:23 -07:00
Eric House
5571816339 enable udp by default 2013-07-16 08:05:46 -07:00
Eric House
403401745e network connection stuff must not be run on main/UI thread, so to
preserve socket connection completing before startup of read and write
threads, move it and start of write thread to beginning of read
thread.
2013-07-16 08:01:59 -07:00
Eric House
b7e00bfc0c log when unable open game based on rowid -- which may happen if
e.g. relay is sending packets to wrong device.
2013-07-16 07:56:56 -07:00
Eric House
d6fd79be44 log, and be more aggressive about closing, sockets on which errors occur 2013-07-16 06:43:30 -07:00
Eric House
e6e7154c82 close socket rather than proceed with what looks like a bad packet/connection 2013-07-16 06:42:21 -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
cd728853b9 check for case where rowid doesn't exist (rather than NPE) 2013-07-15 07:51:15 -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
27e90c2d2c exit as soon as there's a core file 2013-07-15 07:16:35 -07:00
Eric House
b5714e9d14 improve API: hide special numbers inside implementation 2013-07-12 08:24:44 -07:00
Eric House
ab1ae7c9ad remove logging 2013-07-12 08:19:53 -07:00
Eric House
9e358ad413 don't insert a new message in queue if it's identical to the one
currently at the end.  This mostly happens when devices are making
several initial client connection attempts before succeeding.
2013-07-12 07:34:12 -07:00
Eric House
8a4e766b32 make 50% of games communicate via UDP by default 2013-07-11 20:39:40 -07:00
Eric House
491b288631 assert that the seed's preserved for curses version too (where
clientToken is otherwise ignored since there's only one game per app
instance)
2013-07-11 20:39:10 -07:00
Eric House
9db54a5461 make linux version's gameToken combine game's seed with rowid so we
can test that the relay is keeping them straight
2013-07-11 20:01:17 -07:00
Eric House
f27d8d5d8f list java files first so their methods, which tend to be more
numerous, will be found last.
2013-07-11 19:56:37 -07:00
Eric House
d6658c5c08 don't show other_disconnected error message 2013-07-10 23:14:48 -07:00
Eric House
7dfd19a7a2 name change 2013-07-10 23:14:24 -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
a522266ce4 add message checksumming for android too by making it part of util
(compiled out by default)
2013-07-10 08:05:47 -07:00
Eric House
dbf156fca7 remove excess logging 2013-07-10 08:02:28 -07:00
Eric House
5462a05692 Merge branch 'gtk_multigame' into android_branch 2013-07-09 19:35:26 -07:00
Eric House
bf1cdf225c print queue less frequently 2013-07-09 19:32:49 -07:00
Eric House
4bde445c48 fix so gtk mode works too by providing storage for CurGameInfo 2013-07-09 18:19:22 -07:00
Eric House
5a20cc282c fix so curses app works well enough that discon_ok2.sh script runs
successfully.  GTK mode is untested and certainly broken.
2013-07-09 18:10:41 -07:00
Eric House
48fbf15a69 needed to quote variable 2013-07-09 18:07:03 -07:00
Eric House
f5696334a9 changes to get the merged code to compile but not included by git in the commit 2013-07-09 07:25:23 -07:00
Eric House
79f07e8751 cleanup 2013-07-09 07:19:20 -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
db26c32c3e revert accidental part of commit 2013-07-08 07:14:42 -07:00
Eric House
7d968f8502 target is now hard-coded since I reliably can't derive it from the
manifest file.
2013-07-08 07:13:48 -07:00
Eric House
7e36171046 add comment 2013-07-08 07:13:04 -07:00
Eric House
11994d06f8 quote variable to make shell happy 2013-07-08 07:09:03 -07:00
Eric House
e7d20fd2a3 change API version configured by build script to be what I'm using now 2013-07-08 07:03:57 -07:00
Eric House
008cce8f37 Revert "pass additional param into java world so don't show toast every time connect to relay"
This reverts commit e9615cb154.
2013-07-08 06:30:26 -07:00
Eric House
bb68b25429 remove suggestion I don't have permission to use icons! 2013-07-07 19:53:12 -07:00
Eric House
a3de759d9e fix to compile on Android when DEBUG set 2013-07-07 19:40:07 -07:00
Eric House
e9615cb154 pass additional param into java world so don't show toast every time connect to relay 2013-07-07 13:31:49 -07:00
Eric House
923d41e0ee fix to compile when DEBUG not set 2013-07-07 13:17:26 -07:00
Eric House
0f104db88c list another change 2013-07-07 13:07:12 -07:00
Eric House
2c5ac1c293 remove excess logging 2013-07-07 13:07:02 -07:00
Eric House
fb32c847ae more changes from translator 2013-07-05 21:37:38 -07:00
Eric House
bbac923f68 assert queueLen at the point where it'll be easier track why it's overgrowing 2013-07-05 21:32:41 -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
7ecaf76b22 Merge remote-tracking branch 'origin/android_branch' into android_branch 2013-07-05 21:21:19 -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