cbus: introduce lcpipe - light cpipe
Introduced a new type of cbus pipe - lcpipe. The current pipe in the cbus - cpipe, has a number of limitations, first of all - the cpipe cannot be used from the 3rd party threads, cpipe only works as a channel between two cords. That why lcpipe is needed. Its main responsibility - create channel between any thread and tarantool cord. Internally lcpipe is a cpipe, but: - on flush triggers removed, cause triggers use thread-local mem-pool, this is not possible on a third party thread - producer event loop removed, cause there is no libev event loop in third party thread Also, lcpipe interface is exported to the outside world. fix: use-after-free in `cbus_endpoint_delete` Calling a `TRASH` macro after calling the `free` function dereferences the pointer to the already freed memory. NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch NO_TEST=picodata internal patch
Showing
- changelogs/unreleased/fork-3-lcpipe.md 8 additions, 0 deletionschangelogs/unreleased/fork-3-lcpipe.md
- extra/exports 11 additions, 0 deletionsextra/exports
- src/lib/core/cbus.c 191 additions, 13 deletionssrc/lib/core/cbus.c
- src/lib/core/cbus.h 82 additions, 0 deletionssrc/lib/core/cbus.h
- test/unit/CMakeLists.txt 3 additions, 0 deletionstest/unit/CMakeLists.txt
- test/unit/cbus_lcpipe.c 218 additions, 0 deletionstest/unit/cbus_lcpipe.c
Loading
Please register or sign in to comment