Commit Graph

56 Commits

Author SHA1 Message Date
akwizgran 066285b86a New polling logic for Tor. #250
Poll for outgoing connections each time the network is enabled, then disable polling once our hidden service descriptor has been published.
2016-02-25 10:10:57 +00:00
akwizgran 681ec080e1 Randomise next polling interval after pollNow(). 2016-02-22 13:25:07 +00:00
akwizgran 5ce8927477 New polling logic for LAN (and WAN). #252
Same exponential backoff approach as Bluetooth.
2016-02-22 13:25:07 +00:00
akwizgran c081c08ff5 New polling logic for Bluetooth. #251
The polling interval increases exponentially each time polling is unsuccessful, up to a maximum of 60 minutes. The interval is reset to 2 minutes whenever a connection is made and whenever Bluetooth is re-enabled.
2016-02-22 13:21:05 +00:00
akwizgran de8cc50fb4 Moved transactions out of database component. 2016-02-11 16:26:19 +00:00
akwizgran 88475bdd54 Transport properties client. #229 2016-01-27 12:51:55 +00:00
akwizgran 33ef09a6bf Implement Service interface rather than extending it.
Whether or not a class needs to run as a service is an implementation decision.
2016-01-20 14:43:46 +00:00
akwizgran 5355951466 Separate the sync layer from its clients. #112 2016-01-20 10:35:09 +00:00
akwizgran f5f572139a Code cleanup. 2016-01-20 10:30:36 +00:00
Santiago Torres 190bb12964 ENH: Replaces transport config with namespaced settings 2016-01-20 00:57:16 -05:00
akwizgran 805bf39ec8 Created TransportPropertyManager facade. 2016-01-04 12:56:06 +00:00
akwizgran c5282c5b17 Moved some API classes into packages. 2015-12-17 16:56:57 +00:00
Torsten Grote 2d28dcada2 Create two new events to signal enabling and disabling of transports 2015-12-17 11:34:10 -02:00
akwizgran e370cafb12 Moved classes from messaging package to sync package. 2015-12-15 15:05:06 +00:00
akwizgran 9868feeb2a Refactor KeyManager and TagRecogniser. #55 2015-12-14 11:02:49 +00:00
akwizgran 912ba394c5 Refactored FileUtils.
Removed methods that are no longer needed for Java 6, moved the remaining method into the utils directory.
2015-12-10 15:58:52 +00:00
akwizgran 8529c976c2 Renamed a bunch of lock variables.
"synchLock" will become confusing when we have lots of objects with "sync" in the name.
2015-12-03 16:39:53 +00:00
akwizgran 027ae8340f Whitespace-only code formatting changes. 2015-11-30 09:38:25 +00:00
akwizgran 0dbfd7073f Comments to indicate which locks guard which variables. 2015-01-29 11:12:41 +00:00
akwizgran 47bd84122e Code formatting and small cleanups. 2015-01-28 21:18:31 +00:00
Abraham Kiggundu 851151041e Pull-Merge of latest changes from main repo 2015-01-08 11:54:47 +03:00
akwizgran d3bf2d59a1 Use the same maximum frame length for all transports. 2015-01-05 16:24:44 +00:00
akwizgran 358166bc12 Don't try to erase secrets from memory.
1. The things we're really trying to protect - contact identities,
message contents, etc - can't be erased from memory because they're
encapsulated inside objects we don't control.

2. Long-term secrets can't be protected by erasing them from memory
because they're stored in the database and the database key has to be
held in memory whenever the app's running.

3. If the runtime uses a compacting garbage collector then we have no
way to ensure an object is erased from memory.

4. Trying to erase secrets from memory makes the code more complex.

Conclusion: Let's not try to protect secrets from an attacker who can
read arbitrary memory locations.
2014-12-29 21:08:27 +00:00
akwizgran f316d64afa Moved stream crypto to crypto component. 2014-12-29 19:55:05 +00:00
Abraham Kiggundu b074978472 Improved encapsulation of thread synchronisation as follows
- replaced use of Object instance mutex with a private final Lock object
- replaced Object signaling with specific condition signalling
2014-12-26 16:40:46 +03:00
akwizgran 388b36b6be Check periodically for retransmittable packets. Bug #46. 2014-12-14 20:26:41 +00:00
akwizgran 29a6596ee3 Use the transport's idle timeout, not a hardcoded value. 2014-12-14 15:18:39 +00:00
akwizgran d4fa656dbb Application layer keepalives to detect dead TCP connections.
DuplexOutgoingSession flushes its output stream if it's idle for a
transport-defined interval, causing an empty frame to be sent. The TCP
and Tor plugins use a socket timeout equal to twice the idle interval to
detect dead connections.

See bugs #27, #46 and #60.
2014-12-13 12:00:40 +00:00
akwizgran 4009561996 Refactored PluginManager and Poller to remove non-open calls. Bug #15. 2014-11-08 15:40:51 +00:00
akwizgran d321bc0a3e Renamed some inner classes to match the renamed outer class. 2014-11-06 13:53:59 +00:00
akwizgran b27a17db88 Erase temporary secrets after deriving keys. 2014-11-06 08:39:07 +00:00
akwizgran 852a618cb3 Interrupt messaging session if contact or transport is removed. 2014-11-06 08:10:29 +00:00
akwizgran c202b6f0ac Renamed ConnectionManager to ConnectionDispatcher.
Because that's what it does.
2014-11-05 19:47:54 +00:00
akwizgran 4ca83842d1 Moved ConnectionDispatcher and ConnectionRegistry to plugins package. 2014-11-05 19:40:07 +00:00
akwizgran 7b8181e309 Massive refactoring to merge handling of simplex and duplex connections. 2014-11-04 16:51:25 +00:00
akwizgran b24f153704 Renamed a load of things from 'connection' to 'stream'. 2014-10-08 16:21:55 +01:00
akwizgran 941efb4bbe Merged IncomingConnectionExecutor and PluginExecutor into IoExecutor.
We don't need two separate executors for long-running IO threads.
2014-10-02 18:02:53 +01:00
akwizgran eaff042601 Don't try to close server sockets twice.
This may have been the cause of bug #69. Removed the wait-for-shutdown
code in DroidtoothPlugin that was added to attempt to avoid that bug.
2014-05-09 19:09:13 +01:00
akwizgran 97af24cb08 Fixed lint warning: case converstion without a locale. 2014-05-01 15:13:00 +01:00
akwizgran a2f5f68f87 Refactored TCP plugins, moving common code into superclass. 2014-04-10 13:15:53 +01:00
akwizgran e74465dd41 Don't try to connect to unreachable IP addresses. 2014-04-05 00:00:58 +01:00
akwizgran 08b91d2483 Poll plugins when connectivity changes. Bug #66.
This should enable us to connect to contacts faster at startup and
whenever a new means of connecting becomes available.
2014-04-04 22:06:36 +01:00
akwizgran 75ce6cf1da LAN plugin should re-bind each time wifi becomes available. Bug #51. 2014-04-04 20:04:47 +01:00
akwizgran 75f13f53a0 Refactored address parsing code into superclass. Don't use DNS. 2014-04-04 20:04:47 +01:00
akwizgran fe82591fdf Cleaned up address selection code for LAN and WAN plugins.
The LAN plugin only accepts IPv4 link-local or site-local addresses.
This rules out LANs that use globally routable addresses (such as UCL),
but also reduces the chances of the LAN plugin making observable
connections across the WAN, which could reveal the social graph.

Both plugins will attempt to reuse the previous address and port only if
there's currently an interface with that address; this will avoid
unnecessary attempts to bind to nonexistent addresses.
2014-04-04 20:04:47 +01:00
akwizgran b99a503f24 Removed unnecessary conditionals from logging statements.
Very important stuff.
2014-03-12 21:00:14 +00:00
akwizgran 3a01a04cbf Log simple names of plugin classes when polling. 2014-03-04 14:04:07 +00:00
akwizgran 511b470aa4 Less verbose logging for plugins. 2014-03-03 15:31:46 +00:00
akwizgran 90ad3caedd Copy the collection of plugins before passing it to the poller. 2014-03-01 10:44:32 +00:00
akwizgran a2d099ea17 Added debugging screen to alpha and beta builds. Dev task #73. 2014-02-28 23:44:35 +00:00