Commit Graph

4656 Commits

Author SHA1 Message Date
akwizgran 5548eb32cd DatabaseComponent.generateBatch() now returns a boolean.
This allows a connection to know whether to try writing another batch
immediately, or to wait for an event from the DB.
2011-09-20 14:45:07 +01:00
akwizgran 75446b7f7e Collapsed ack handling into a single transaction.
The locks were being held across all transactions anyway, so there was
no granularity advantage to using multiple transactions.
2011-09-19 18:51:27 +01:00
akwizgran 3dd3742a96 Folded findLostBatches() into receiveAck(). 2011-09-19 18:45:19 +01:00
akwizgran 7aeb6029a6 Assertions and comments. 2011-09-19 16:42:27 +01:00
akwizgran 4b97be897e Don't attempt to retrieve ratings for anonymous messages. 2011-09-19 16:25:49 +01:00
akwizgran 44c8f9ceaa Folded ReadWriteLockDatabaseComponent into its parent. 2011-09-19 15:29:40 +01:00
akwizgran 7ef44fbab1 Updated javadoc and renamed type parameters. 2011-09-19 15:01:55 +01:00
akwizgran bf01dd4f96 Folded ReadWriteLockDatabaseComponentTest into its parent. 2011-09-19 14:58:32 +01:00
akwizgran 22b8321376 Removed SynchronizedDatabaseComponent.
LockFairnessTest passes on Windows, Mac and Linux, so it's safe to use
ReadWriteLockDatabaseComponent on all those platforms. We can revisit
this issue for Android if necessary, but for now it's a waste of
effort to have two parallel implementations.
2011-09-19 14:54:29 +01:00
akwizgran f6e5ef415a BadPaddingExceptions should be rethrown as RuntimeExceptions. 2011-09-19 14:53:44 +01:00
akwizgran 11cf84dedc Arrays.copyOfRange() is not available in Java 5. 2011-09-19 14:53:12 +01:00
akwizgran 7cdca62063 IOException(Throwable) constructor isn't available in Java 5. 2011-09-19 14:49:27 +01:00
akwizgran fde354957c Timestamps may not be negative. 2011-09-16 13:20:49 +01:00
akwizgran 53f02f7a52 Fixed unit tests for database component. 2011-09-16 13:13:27 +01:00
akwizgran ad1ef4461f SynchronizedDatabaseComponent.addLocalPrivateMessage() was not
checking whether the contact was still in the DB.
2011-09-16 13:11:20 +01:00
akwizgran f18c86b0d3 Unit tests for private messages. 2011-09-16 13:06:04 +01:00
akwizgran 43a59d9dbe Database.hasSendableMessages() should check for private messages. 2011-09-16 12:55:57 +01:00
akwizgran 5f05a7f898 Unit tests for private messages. 2011-09-16 11:33:55 +01:00
akwizgran 005e7d5207 Added a random salt to prevent ID clashes between anonymous messages. 2011-09-13 17:56:44 +01:00
akwizgran 8ec40587b2 Check for sendable private messages as well as group messages. 2011-09-13 16:15:50 +01:00
akwizgran b78cfa6c88 More DB support for private messages - needs unit tests. 2011-09-13 15:40:33 +01:00
akwizgran 2670d7b821 DB support for private messages. 2011-09-13 15:12:36 +01:00
akwizgran de5caca578 Basic database support for private messages. 2011-09-13 14:43:48 +01:00
akwizgran 2858c139fa Make the group field of messages optional.
Private messages have no group.
2011-09-13 14:17:22 +01:00
akwizgran 1d25b5a92e Use null instead of MessageId.NONE and AuthorId.NONE, as for other
optional fields.
2011-09-13 14:04:23 +01:00
akwizgran 70b1487140 Renamed user-defined tags "user-defined type identifiers". 2011-09-12 16:32:25 +01:00
akwizgran fd2046d984 Renumbered object identifiers to reflect removal of OFFER_ID. 2011-09-12 16:23:55 +01:00
akwizgran 64548375cc Offer IDs no longer need to be calculated or echoed in requests.
The initiator flag in the transport protocol makes this unnecessary by
linking the two sides of a stream-mode connection, making it
impossible for an attacker to replay the responder's side of a
different connection.
2011-09-12 16:21:17 +01:00
akwizgran 7ed747b2a3 Added an initiator flag (bit 31) to the IV.
The flag is used to distinguish between the initiator and responder
directions of a stream-mode connection, allowing them to use the same
connection number without risking IV reuse.

The flag is also raised for batch-mode connections, which only have
one direction.
2011-09-07 17:21:52 +01:00
akwizgran 39be97a4d6 Order sendable messages by timestamp. Also fixed some comments. 2011-09-07 15:55:03 +01:00
akwizgran bbf957cc94 We can squeeze in a few more subscriptions. 2011-09-07 14:06:35 +01:00
akwizgran cc36d9d6c3 Don't forget 8 bytes for the timestamp. 2011-09-07 13:54:19 +01:00
akwizgran 331e7e0547 Increased the maximum packet size to 1 MiB.
This should provide acceptable memory usage and database locking
granularity, while making subscription and transport updates large
enough for the incremental update issue to be kicked into the long
grass.

Removed awareness of the serialisation format from the protocol
component wherever possible, and added tests to ensure that the
constants defined in the protocol package's API are compatible with
the serialisation format.
2011-09-07 13:51:30 +01:00
akwizgran 1ac1609dc2 Renamed a couple of classes. 2011-09-07 11:30:42 +01:00
akwizgran 531d54c1d3 Removed unnecessary transaction commit. 2011-09-07 11:18:07 +01:00
akwizgran 0a84a01235 Allow identical batches to be sent to multiple contacts. 2011-09-07 11:15:34 +01:00
akwizgran e80ede4429 Map keys must be unique. 2011-09-07 11:04:03 +01:00
akwizgran 478a22c8db Removed javadocs from prototype repo (push them to the website instead). 2011-09-01 11:13:06 +01:00
akwizgran 472dff3d61 Removed redundant frame number from header. 2011-09-01 11:11:31 +01:00
akwizgran 928ae6288f Javadocs. 2011-08-31 17:44:42 +01:00
akwizgran 3b32aee6be Slightly modified ConnectionWriterImpl to write a full-size frame as
soon as possible, rather than waiting for the next write.
2011-08-19 20:10:14 +02:00
akwizgran 0132c1eff4 Fixed a typo. 2011-08-19 19:58:40 +02:00
akwizgran 7e4ff343ea Added PaddedConnectionWriterTest to the ant buildfile. 2011-08-19 19:48:48 +02:00
akwizgran d11f7ef824 Unit tests for PaddedConnectionWriter. Also broke some shared test
code out into separate classes.
2011-08-19 19:47:24 +02:00
akwizgran 4e2a74858b Writer and scheduler for fixed-rate connections (untested). 2011-08-19 17:27:29 +02:00
akwizgran 3084a6b058 Added optional padding to the frame format, so transports that are
vulnerable to traffic analysis can frame their data independently of
packet boundaries.
2011-08-19 14:47:16 +02:00
akwizgran 7a53ea7814 Unit tests for ConnectionWriterImpl. 2011-08-19 11:50:47 +02:00
akwizgran 156bafb8a6 Unit tests for ConnectionReaderImpl. 2011-08-19 11:40:30 +02:00
akwizgran a59ad23e77 Removed unused code. 2011-08-19 11:21:59 +02:00
akwizgran 9dea4d0299 The word "tag" was overloaded, so from now on use "tag" for the
predefined tags in the protocol and serial components, and "IV" for
the encrypted IVs used to identify connections in the transport
component.
2011-08-19 11:15:35 +02:00