Commit e5617b20 authored by Dominik Charousset's avatar Dominik Charousset

Protect against nullptr access in ack_open handler

parent b566ee21
...@@ -70,7 +70,7 @@ public: ...@@ -70,7 +70,7 @@ public:
virtual void handle(inbound_path* from, downstream_msg::forced_close& x); virtual void handle(inbound_path* from, downstream_msg::forced_close& x);
virtual void handle(stream_slots, upstream_msg::ack_open& x); virtual bool handle(stream_slots, upstream_msg::ack_open& x);
virtual void handle(stream_slots slots, upstream_msg::ack_batch& x); virtual void handle(stream_slots slots, upstream_msg::ack_batch& x);
......
...@@ -58,14 +58,17 @@ void stream_manager::handle(inbound_path*, downstream_msg::forced_close& x) { ...@@ -58,14 +58,17 @@ void stream_manager::handle(inbound_path*, downstream_msg::forced_close& x) {
abort(std::move(x.reason)); abort(std::move(x.reason));
} }
void stream_manager::handle(stream_slots slots, upstream_msg::ack_open& x) { bool stream_manager::handle(stream_slots slots, upstream_msg::ack_open& x) {
CAF_LOG_TRACE(CAF_ARG(slots) << CAF_ARG(x)); CAF_LOG_TRACE(CAF_ARG(slots) << CAF_ARG(x));
auto path = out().add_path(slots.invert(), x.rebind_to); auto path = out().add_path(slots.invert(), x.rebind_to);
if (path == nullptr)
return false;
path->open_credit = x.initial_demand; path->open_credit = x.initial_demand;
path->desired_batch_size = x.desired_batch_size; path->desired_batch_size = x.desired_batch_size;
--pending_handshakes_; --pending_handshakes_;
push(); push();
in_flight_promises_.erase(slots.sender); in_flight_promises_.erase(slots.sender);
return true;
} }
void stream_manager::handle(stream_slots slots, upstream_msg::ack_batch& x) { void stream_manager::handle(stream_slots slots, upstream_msg::ack_batch& x) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment