Files
scylladb/thrift/server.hh
Kefu Chai 7a05cc3a06 thrift: initiaize _config first to avoid dangling reference
in c642ca9e73, a reference to the
a parameter `config` passed to the `thrift_server` 's constructor is
passed down to `create_handler_factory()`, which keeps it so it can
create connection handler on demand. but unfortunately,

- the `config` parameter is a temporary variable
- the `config` parameter is moved away in the constructor after
  `create_handler_factory()` is called

hence we have a dangling reference when the factory created by
`create_handler_factory()` tries to deference the reference when
handling a new incoming connection.

in this change,

- the definitions of `_config` and `_handler_factory` member
  variables are transposed, so that the former is initialized
  first.
- `_handler_factory` now keeps a reference to `_config`'s member
  variable, so that the weak reference it holds is always valid.

Fixes #13455
Branches: none
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>

Closes #13456
2023-04-09 11:34:34 +03:00

4.1 KiB