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
b49486fc3f
cleanup: use constant and add/use isUDP()
2013-08-07 21:31:10 -07:00
Eric House
a8cc920dcf
new method
2013-08-01 07:49:12 -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
9951064439
fetch all stored messages at once to reduce number of DB calls made.
2013-07-25 06:37:53 -07:00
Eric House
2060aa4577
don't match on empty devID
2013-07-10 23:12:57 -07:00
Eric House
254b82104c
reduce priority of log message
2013-07-05 08:03:31 -07:00
Eric House
883cec0652
log whether b64 encoding is being used
2013-07-05 06:56:43 -07:00
Eric House
8e12a8ef84
when we get a fatal error from postgres server, try killing then
...
recreating the connection. This is untested, as fatal errors are
rare.
2013-07-03 07:36:15 -07:00
Eric House
b53f9bc578
let Pqexec fail three times, usleeping between, before restarting with an assert
2013-07-02 07:27:31 -07:00
Eric House
3d18e5832e
specify server's port in conf file since at least on one of my
...
machines it's not what libpq expects. (Required by upgrade from 8.4
to 9.1.)
2013-07-02 05:46:48 -07:00
Eric House
f9cebfe444
track bytes sent per device rather than per game
2013-06-27 06:23:15 -07:00
Eric House
9138cd15b7
fix problems with devices reconnecting when their ACKs didn't arrive
...
and their slots are empty or have been reassigned: basically we check
if a device goes where it expects, and if not treat it as a new
connection rather than a reconnect, meaning its hostid may change.
Existing device code seems ok with that -- and at any rate I don't
think ACKs get dropped much in the wild.
2013-06-26 00:38:34 -07:00
Eric House
ed16437f9a
don't refuse to store message when devid isn't available
2013-06-23 19:07:45 -07:00
Eric House
d14688a6a0
fix almost-infinite loop; assert no dup devids
2013-06-22 22:24:18 -07:00
Eric House
07d6851a26
logging changes for debugging -- main not belong in main branch
2013-06-22 05:55:38 -07:00
Eric House
6027c94a43
don't pass uninitialized variables to logf
2013-06-21 07:26:11 -07:00
Eric House
985f7bfea0
tweak: don't restart whole loop on unlikely random result
2013-06-19 07:27:34 -07:00
Eric House
ecef687471
drop message, rather than asserting, if device id isn't in db.
2013-06-17 07:52:58 -07:00
Eric House
7ce939f5c0
pass rather than hard-coding column name
2013-06-17 06:48:22 -07:00
Eric House
9e67dda5a9
make use of base-64 encoding runtime-configurable
2013-05-09 22:16:48 -07:00
Eric House
5e0fd89c9e
update with all relay/ changes from gtk_multigame. This is what the
...
live relay's running anyway.
2013-02-04 06:08:39 -08:00
Eric House
98679c8363
cleanup: better encapsulation for AddrInfo
2013-01-13 10:14:06 -08:00
Eric House
c567647a8d
get rid of mapping of socket->game_connection, which will not work
...
once UDP sockets and/or per-device (not per-game) connections come
along. Lots of changes, most not involving code flow but a couple
that did. So far two gtk games can connect and exchange moves.
Haven't tested reconnection or store-and-forward.
2013-01-12 16:09:24 -08:00
Eric House
ad78129e74
changes made over the past couple of months toward tracking an
...
apparent thread leak.
2013-01-02 21:12:42 -08:00
Eric House
2859ec9132
stime is the name of the column in actual use
2012-12-01 10:31:55 -08:00
Eric House
694857dd4e
add, but disable with compile flags, ability to mark sent messages
...
with a timestamp rather than delete them. Plan is to experiement with
this as a way of keeping devices from sending too many identical
messages when GCM's in use -- since constraints on the msgs table will
not allow identical messages to be added.
2012-11-15 06:25:22 -08:00
Eric House
c847ec127e
add and use function that does formatted printing to a std::string so
...
query buffers can no longer overflow.
2012-11-15 06:15:44 -08:00
Eric House
1316ae4b67
Fix relay devid protocol to deal with case where client submits a
...
ID_TYPE_RELAY id that's not in the devices table (as has happened when
a device switches relay URLs during testing, but might also happen if
I have to delete an entry from the devices table.) In that case,
return ID_TYPE_NONE to the client, which will be its clue to delete
its ID_TYPE_RELAY id and submit the platform-specific id again.
Note: android won't compile this revision thanks to util.h change
2012-11-10 15:05:44 -08:00
Eric House
e6cd2265df
fix crash: make formatParams work with empty strings
2012-11-07 21:57:18 -08:00
Eric House
59937b8514
modify how devids are handled on the relay and the protocol through
...
which they're communicated to the device. Device is expected to have
a platform-specific notion of ID which the relay stores in a new
devices table and indexes with a 32-bit number which is returned to
the device -- which is encouraged but not required to use it in lieu
of the longer ID in future communications. Modify linux client and
test script to use the relay-supplied id. Some of this is commented
out for now.
2012-11-03 10:58:01 -07:00
Eric House
1cae4e9a4c
increase buffer size, and test rather than assert for overflow. Fixes
...
crash with new large GCM devids.
2012-10-31 06:12:24 -07:00
Eric House
3469975d2a
add, still disabled by compile-time flags, code to transmit device ID
...
(e.g. ID Android devices get via GCM) to relay and to associate it
there with messages that need to be delivered.
2012-10-30 07:01:47 -07:00
Eric House
adf49dffd7
init/take down thread local storage in constructor/destructor rather
...
than as static initializer (and then leaking on shutdown.)
2012-01-26 05:48:10 -08:00
Eric House
866aeb2387
change relay connect message format to include client version (meaning
...
of which is TBD). When a new-version client connects, store the value
it's passed. At first this will let me track how quickly people
upgrade. Later I can use it to let different clients have different
formats to their messages e.g. to proxy.
2012-01-26 05:43:54 -08:00
Eric House
caa40fa023
store most recent IP address each device has come in on. Requires new
...
column in db. Not really used yet but interesting to watch....
2012-01-04 18:14:12 -08:00
Eric House
b706486b6e
get rid of stringstream: it's either buggy or I'm using it
...
incorrectly, but regardless postgres doesn't like random chars
terminating queries.
2011-12-02 18:32:37 -08:00
Andy2
28e5c39845
get rid of stringstream where it wasn't working (maybe because of user
...
error -- whatever); fix error check to avoid false conclusion that
query didn't work so that update of num bytes sent in background works.
2011-09-30 18:20:28 -07:00
Andy2
b511b4c455
add new RecordSent to take list of msg ids -- and use stringstream
...
instead of static buffer and snprintf in one case. May make sense
elsewhere too.
2011-08-17 18:07:21 -07:00
Eric House
d3108aac79
split method in two to provide new API (I'm not using yet)
2011-07-05 21:39:38 -07:00
Eric House
09b81c6ad7
fix rare crash: don't call PQgetvalue when there are no results.
2011-06-30 19:39:00 -07:00
Andy2
c2cd3a709a
specify name of database in config file rather than hard-coding it.
2011-06-25 21:32:18 -07:00
Andy2
e886a1aefe
lots more changes -- another snapshot, this, rather than stuff
...
carefully polished and reviewed. Shows progress, though, in getting
through tests.
2011-06-23 07:12:50 -07:00
Eric House
85d484a881
major mod to deal with devices that fail to receive ACK and then
...
reconnect. I was putting both (i.e. the same device twice) in the
same game. Now I detect this based on the seed being duplicated and
treat the device as having failed to ACK then proceed with the CONNECT
as if it were new. Tested pretty heavily but only with two-device
games.
2011-06-20 18:13:15 -07:00
Eric House
27346cf58b
change AIP to remove several stored messages at a time. Will use
...
later to delete messages after proxy fetches and ACKs them so traffic
isn't repeated.
2011-03-31 18:15:03 -07:00
Andy2
f96f4a040b
add new proxy command that fetches actual messages stored for a device.
2011-01-22 12:52:26 -08:00
Andy2
96fead3164
add msglen column to msgs table to be used to avoid calculating size
...
later. Stores size of string as it was passed to db, not as stored.
2011-01-21 06:46:49 -08:00
Eric House
4bd5553596
track mtime per host rather than per game -- make it an array in the db.
2010-12-01 21:08:22 -08:00
Andy2
daecc807c1
don't init nPerDevice, and deal with it not being inited.
2010-11-22 20:43:37 -08:00
Eric House
4c6c3c1ded
when marking a device in a dead game, negate its nperdevice entry rather than always using -1.
2010-11-16 20:28:53 -08:00