- 17 Mar, 2020 2 commits
-
-
Dominik Charousset authored
This change fixes a race on the routing tables when spinning up multiple connections between two nodes simultaneously. With 2 nodes A and B, this is the sequence causing an error: - A publish an actor on port x. - A publish an actor on port y. - B connects to A:x with connection handle b1. - B connects to A:y with connection handle b2. - A sees a new connection handle a1 for the connection to A:x. - A writes server handshake A:x. - A reads client handshake A:x, adds (B, a1) to the routing table. - A sees a new connection handle a2 for the connection to A:y. - A writes server handshake A:y. - A reads client handshake A:y and drops it. - B reads server handshake on b2 and adds (A, b2) to the routing table. - B reads server handshake on b1 and closes the redundant connection. After that point, B uses the connection `a2 <-> b2`. However, the server believes `a1 <-> b1` is the active connection. When receiving data via `a2`, the server has no mapping for the handle in its routing table. Consequently, it cannot attribute incoming data on this connection to node B. To fix this dilemma, this change adds additional steps: - The server now adds *all* connection handles to its routing table. The first handle is going to be the default route. However, additional handles get added as alternatives. When receiving data on any of these sockets, the server is able to attribute it to right node ID. - The client dictates which connection gets used. After reading the server handshake and setting a direct route to the server, the client repeats its handshake with the new select connection flag. - When the server receives a handshake where the select connection flag is set, it updates it routing table to have the node ID resolve to the right connection handle. This patch is backwards compatible. Older versions of CAF in the network simply ignore the unrecognized flag.
-
Dominik Charousset authored
(cherry picked from commit f3c6d319)
-
- 06 Mar, 2020 4 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
(cherry picked from commit 2cf81be9)
-
Dominik Charousset authored
(cherry picked from commit 73bd12e6)
-
Dominik Charousset authored
(cherry picked from commit ab7b9114)
-
- 29 Feb, 2020 8 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
(cherry picked from commit 3d4021b9)
-
Dominik Charousset authored
(cherry picked from commit 23efb520)
-
Dominik Charousset authored
(cherry picked from commit e1f57de6)
-
Dominik Charousset authored
(cherry picked from commit 58a477f8)
-
Dominik Charousset authored
(cherry picked from commit 5c274689)
-
Dominik Charousset authored
(cherry picked from commit c0b7fcd9)
-
- 28 Feb, 2020 3 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
(cherry picked from commit 043151fa)
-
- 25 Feb, 2020 1 commit
-
-
Dominik Charousset authored
(cherry picked from commit 7b5919d7)
-
- 22 Feb, 2020 3 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
Passing CAF variables only to the direct parent breaks setups with deeper nesting. Setting the variables as cache variables instead makes them visible everywhere.
-
- 08 Feb, 2020 1 commit
-
-
Dominik Charousset authored
-
- 04 Feb, 2020 2 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 03 Feb, 2020 2 commits
-
-
Dominik Charousset authored
Add -pthread flag when looking for libc++
-
Dominik Charousset authored
-
- 02 Feb, 2020 2 commits
-
-
Dominik Charousset authored
Remove doc target an properly handle OPENSSL_INCLUDE_DIR in submodule mode
-
Dominik Charousset authored
-
- 30 Jan, 2020 2 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 25 Jan, 2020 3 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
Suppress flag and compiler setup in subdir mode
-
- 24 Jan, 2020 1 commit
-
-
Dominik Charousset authored
Avoid touching compiler flags if CAF builds as a sub directory of another CMake project. Further, check whether the parent project has already select an OpenSSL version for us and use that rather than trying to locate it ourselves.
-
- 23 Jan, 2020 3 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 22 Jan, 2020 2 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
Using a code generator that requires compiling a C++ tool breaks when crosscompiling CAF. It can also interact badly with projects that include CAF as a submodule. As a compromise between easy consumption / integration of CAF and maintainability of the `to_string` implementations, this set of changes adds two new targets to CMake: - `check-consistency` runs the code generator and checks whether all files in the repository are still up-to-date. We can run this target automatically in our CI to fail builds that introduce inconsistencies. - `update-enum-strings` runs the code generator to replace the files in the source tree. This is meant for CAF developers to update `.cpp` files after changing enum headers. Both new targets are excluded from `ALL` in CMake and thus do not run automatically.
-
- 20 Jan, 2020 1 commit
-
-
Dominik Charousset authored
-