Skip to content

Conversation

@duartenfonseca
Copy link
Collaborator

No description provided.

duartefonseca and others added 8 commits August 18, 2025 12:39
Summary
Fixing change to cmakelists that was breaking builds with
ENABLE_SIGNAL_HANDLING and ENABLE_COMPAT flags
Details
Reverted a change from 39f6770 was breaking apps using the
ENABLE_SIGNAL_HANDLING flag.
Also fixed ENABLE_COMPAT flags
Summary
Enforce a client reconnect by dropping the connection client->routingd
Details
This will place the responsibility of the reconnect on the client. In the same spirit as:
Summary
Ensure that a broken connection is forwarded to the app
Details
When executing test under stress it sometimes happend that an
inner_close tried to inject an error into a read handler that wasn't set atm.
Summary
Check if last subscriber was removed before clearing multicast endpoint
Details
When two clients are subscribed to a multicast eventgroup,
the function clear_multicast_endpoints was
called when one of the clients unsubscribed to the eventgroup,
even if there were other clients still subscribed to the multicast
eventgroup.
This lead to a situation where the endpoint leaved the multicast
group and the clients that were still subscribed did not get
notifications sent by the service until the multicast group was rejoined.
To fix this situation, now the unsubscribe function checks if the
client is the last subscriber to the eventgroup.
Summary
Refactoring of udp_server_endpoint_impl.
Details
The issues identified:

Poor lock management. This has been corrected by removing three
mutexes and not using reentrant locks, which indicated a design issue.
Shutdown management: A complicated state machine has been
replaced by a cycle counter. If an operation from a previous cycle is
executed, it is ignored. No need to wait for the previous cycle to end.
Management of join operations. It lacked a data structure to know
which groups had already been joined. It was in a shared structure, but
it didn't allow for proper leave implementation.
Complicated socket lifecycle: Firstly, no socket is created before start.
Previously, multicast could be created beforehand. Secondly,
asynchronous reading has a clearly identified beginning and end. Thirdly,
these asynchronous operations were started several times for each
multicast group, which is no longer the case.
Logging: The traces have been made more consistent by naming
each instance.
Summary
Revert General CMakeLists improvements
Details
This cmake refactor is causing the following issues:

Export symbols
CMake build flags (ENABLE_SIGNAL_HANDLING, ENABLE_COMPAT)
BATH_PATH flag was wrongly removed
internal.hpp and android_internal.hpp paths in cmake and *.hpp

In the future, if this refactor is to be merged, all of the above issues need to
be addressed.
In addition to not braking the Android build, the following build flags need to be
validated:

ENABLE_SIGNAL_HANDLING
ENABLE_DEFAULT_EVENT_CACHING
ENABLE_COMPAT
ENABLE_MULTIPLE_ROUTING_MANAGERS
DISABLE_SECURITY
Summary
It makes no sense to do selective clang-format - it is error prune,
difficult with rebases, overall a PITA. Therefore clang-format the
entire codebase
Summary
In order to ignore the big codebase format when doing git blame
@duartenfonseca duartenfonseca merged commit e343172 into master Aug 18, 2025
1 of 2 checks passed
@duartenfonseca duartenfonseca deleted the 3.5.7_batch2 branch September 5, 2025 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants