Commit Graph

216 Commits

Author SHA1 Message Date
Michael Bayne a1aa2d77ae Revamping/cleanup of how we handle authentication usernames as well as chained
authenticators and chained session factories. We can share a lot more code this
way and the implicit requirement that the default authenticator/factory had to
be configured before anyone else configured a chanied author/factory is gone.

The other big change is that Credentials doesn't require a username
(UsernamePasswordCreds inherits that username so most derived classes don't
notice any difference). Instead we require that a canonical authentication
username be determined and configured in AuthingConnection during the
authentication process. This canonical username is then used to resolve the
client session and map everything in the client manager.

This is pretty much exactly what was going on before except that we were doing
it all in an ad hoc way by jamming a new name into Credentials during the
authentication process and also doing jiggery pokery in
PresentsSession.assignStartingUsername. That all goes away and/or becomes
cleaner and more explicit.

This is going to impact some Yohoho jiggery pokery, which I will shortly commit
a patch for, but we're going to need to test it. Omelets, eggs, etc.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5828 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-20 00:56:01 +00:00
Jamie Doornbos 8dd6472824 Allow client code to detect whether or not the client is connected, since isLoggedOn returns true during the dispatch of CLIENT_DID_LOGOFF. This will allow msoy to prevent the display of room change popups when the client is disconnected.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5790 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-05-19 18:05:07 +00:00
Ray Greenwell 0e2f26df73 The uber-adapter.
I could also make this just implement each interface, but I like
being able to assign the functions to their proper names.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5761 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-30 01:31:30 +00:00
Michael Bayne c21f8ad735 Clear out our _bstrap reference after we logoff.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5734 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-18 00:06:06 +00:00
Michael Bayne 61f752a105 Check the right things in our Preconditions.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5720 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-15 00:28:07 +00:00
Michael Bayne b160aa944f Let's just have SafeSubscriber take two callbacks instead of forcing everyone
to screw around with SubscriberAdapter.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5719 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-15 00:22:24 +00:00
Michael Bayne 202f6bba81 Widening.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5718 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-15 00:13:29 +00:00
Michael Bayne 7f97d41fd5 Fail earlier here if we have no _clobj. I have been seeing this in testing,
though annoyingly now I can't reproduce it. Call Heisenberg!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5712 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-08 20:32:47 +00:00
Ray Greenwell fd321d6f2d Let directors dispatch events.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5708 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-06 21:10:32 +00:00
Ray Greenwell c192056f3a Listen for security errors on our socket.
Have the FrameReader stop listening on the socket when we're done with it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5707 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-03 17:40:54 +00:00
Michael Bayne 752642db17 Nixed more asdoc-killing unused imports. Why these didn't kill my local asdoc
but do on the build server, I know not.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5705 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-03-31 01:20:08 +00:00
Michael Bayne 5d0a86c698 If we never dispatched a DID_LOGON, then don't dispatch a DID_LOGOFF. Dispatch
a FAILED_TO_LOGON instead.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5688 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-03-19 23:40:03 +00:00
Michael Bayne d67bcc5e01 Track more accurately whether or not we're switching servers and publish that
in the ClientEvent that is sent out with all will/didLogon and will/didLogoff
notifications.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5681 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-03-05 23:56:02 +00:00
Michael Bayne d4f1e7763c Send our auth request directly instead of running it through the queue. Also
log our boot groups to make it easier to distinguish which "server" we're
logging onto.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5675 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-02-27 03:13:08 +00:00
Michael Bayne ba7a7af8d3 Sanity++. In theory this is functionally equivalent.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5661 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-02-19 21:08:07 +00:00
Jamie Doornbos c5b7379dea Modernized logging of safe object manager
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5652 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-02-11 21:51:52 +00:00
Jamie Doornbos 1052aa86ec readUTF?
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5599 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-11 20:01:46 +00:00
Ray Greenwell df5f5ace27 Cut client latency by attempting to send upstream messages
immediately.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5592 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-10 21:41:10 +00:00
Ray Greenwell 7c979eb436 Logging varagification, associated stack traces.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5587 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-10 01:05:41 +00:00
Ray Greenwell 5f69af762d Reorder the args to these adapters: success is first now, followed by failure.
This has been wacked-out like this ever since I first wacked it out.
Since the base class is ResultAdapter and it only takes failure, and the
'processed' function for ConfirmAdapter is optional, it seemed to make
sense this way.
But, we have another ResultAdapter (for non-invocation ResultListener)
and it expects success first.
So Mike noticed this today (I swear there was a big brouhaha about this
over the summer) and beat me with my own rubber chicken.
I'm not sure why I had a mental block about reordering, but let's do it!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5583 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-09 02:20:48 +00:00
Jamie Doornbos 79f5a17600 Oops, stray debug line got left in
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5549 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-14 01:51:28 +00:00
Jamie Doornbos 71af5514da Be nicely behaved if the user manages to close the client before the socket is opened
* Use _writer != null iff the socket is open and the authrequest has been sent
* Warn when posting messages prior to socket connect
* Clear the outgoing queue prior to sending the auth request, the servers authing connection expects this
* If a logoff is encountered prior to the socket opening, just shut down without sending auth request
* Driveby unused variable removal

This should fix the log warning "AuthingConnection$1: Received non-authreq message during authentication process"

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5548 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-14 01:49:58 +00:00
Michael Bayne ca2dc8dc4a Don't start our writer thread until we know our socket is connected and ready
to send data.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5544 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-12 00:32:54 +00:00
Michael Bayne c62cf6ba6f Don't start our tick interval until we've successfully logged on. There's no
utility in sending pings before we're authenticated.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5543 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-12 00:30:35 +00:00
Jamie Doornbos 14755a6cea Fixed fundamental flaw with throttling code. Changed the client to adjust its message rate when it actually sends the throttle updated message. Otherwise the client starts sending at the new rate before the server knows about it. Keep the messages per second in the message.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5499 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-04 08:37:13 +00:00
Jamie Doornbos 0cb3330de7 Refix for long running clients (r5483). I must have introduced this at the last minute when switching my original -32768 to use Short.MIN_VALUE instead, forgetting to remove the negation
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5490 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-11-03 19:26:57 +00:00
Jamie Doornbos ed0718674e Fixed bug with long running clients. The results for invocation requests with ids exceeding Short.MAX_VALUE could not be processed due to the id being deserialized as a short but stored in the map with an integer key.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5483 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-30 17:15:42 +00:00
Ray Greenwell 5216602e63 Change how we link classes that aren't otherwise linked.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5462 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-25 01:24:13 +00:00
Jamie Doornbos 077c5e8053 At Ray's suggestion, go ahead and throw an error when the wrong type is read. Use the Type(obj) cast syntax (I was unaware that this would actually throw an error). Reading objects of a basic type like Array must still use "readObject(Array) as Array" so this is still supported, though not needed for user types.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5441 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-13 17:34:55 +00:00
Jamie Doornbos 2b298aa3d5 Pass in the expected type to readObject anywhere the code would clearly convert the wrong type to null anyway
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5440 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-11 06:28:50 +00:00
Jamie Doornbos a99238faf8 Fixed username member for actionscript. Serialization was completely hosed
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5437 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-11 05:17:40 +00:00
Michael Bayne a4a25674ce Outgoing message throttle for ActionScript. This uses a timer rather than a
frame listener so that it has a chance of working out of the box on Thane.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5432 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-10 17:27:47 +00:00
Michael Bayne 9f2682a5e4 All of the ActionScript side of adjustable outgoing message rate throttling
except the actual throttling part. Need to think about a good way to do this
without blocking the whole client when we hit the throttle.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5428 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-09 20:18:12 +00:00
Jamie Doornbos 3bbd9da353 Fixed spurious warnings about sockets on bureau shut down:
* socketClosed was issuing a warning, presumably because whirled doesn't normally disconnect flash client. Anyway, seems like overkill since the server can disconnect whenever it choosed
* Accoring to adobe, calling Socket.close after the Socket.close event should throw an IOError. Thane holds to this, while flash apparently does not. Make our code neutral by checking for connected prior to calling close

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5415 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-07 16:06:45 +00:00
Jamie Doornbos f782ba7f07 Uncommenting log messages (these are very useful for the thane AVRG controller in msoy and can be configured without commenting them out)
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5414 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-03 23:03:23 +00:00
Michael Bayne bb8d04bea0 Tone down verbose logging.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5404 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-30 21:36:51 +00:00
Jamie Doornbos 233e710d20 Removed extra comma
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5389 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-24 17:45:56 +00:00
Ray Greenwell be0849f17e In with the new. Or rather the old. The original incarnation.
Does not allow null 'processed' functions.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5377 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-16 22:50:15 +00:00
Ray Greenwell 18bb5cc130 Remove this version...
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5376 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-16 22:48:38 +00:00
Ray Greenwell 6294b2e955 Require the 'processed' function. If you are calling a ResultListener service,
you should always listen for the result! Otherwise, you are likely doing
something wrong. Listen for the result, or change the service to not report
a result if it's irrelevant.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5374 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-16 02:00:47 +00:00
Bruno Garcia fa4d42db28 We allow you to omit this callback in the constructor, so make sure it's not null when we go to call it
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5373 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-16 01:38:32 +00:00
Ray Greenwell 76ebba1614 Added readLong and writeLong to our streaming classes.
Use that in PongResponse.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5358 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 22:21:03 +00:00
Jamie Doornbos 573ad76de2 This has been simmering for a while locally. Allow callbacks to be provided to subscribe that get called in addition to the ones passed to the constructor. Also fixed comments.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5330 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-08-20 00:12:11 +00:00
Jamie Doornbos aade00df4c New class to make attribute change listening more convenient in action script
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5329 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-08-18 20:15:27 +00:00
Jamie Doornbos 8b48ab9107 Include the offending message when reporting a short frame
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5328 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-08-17 03:39:26 +00:00
Michael Bayne 6bf19ba419 We need to tell the clients that we did logoff after we've actually shutdown
and clear out our socket. The DID_LOGOFF notification is sent out to the client
after we've sent our LOGOFF request to the server, so we need to be sure that
no other messages go to the server after the LOGOFF request otherwise we risk
the server generating spurious warnings (like it does currently in the
thousands daily).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5297 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-08-07 20:58:16 +00:00
Michael Bayne 725f656197 Fixed a bunch of type safety bits pointed out by the latest version of Eclipse.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5274 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-30 12:58:51 +00:00
Michael Bayne 1b29e41129 BootstrapData.services is now a plain old array.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5256 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 18:29:06 +00:00
Jamie Doornbos 874289086a Completing the triumvirate or adapters
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5234 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-15 03:43:56 +00:00
Ray Greenwell f3abe8507b Wrapped -> Boxed.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5195 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-06-23 21:09:14 +00:00