and if is_sending_ was set nothing will unset. Later in connect_cbk():
auto its_entry = get_front();
if (its_entry.first) {
is_sending_ = true;
strand_.dispatch(std::bind(&client_endpoint_impl::send_queued,
this->shared_from_this(), its_entry));
VSOMEIP_WARNING << __func__ << ": resume sending to: "
<< get_remote_information();
}
there's nothing queued, no reason to call send_queued, therefore no callback is going to clear the flag. Flag is_sending_ remains set "forever" and the train logic remains blocked from sending. From a user perspective the client endpoint would receive notifications but never transmit anything again.
This needs to be cleared during restart() when queue_ gets drained
fixes #668
During
tcp_client_endpoint_impl::restart()
thequeue_
will be drained, messages printed likeand if
is_sending_
was set nothing will unset. Later inconnect_cbk()
:there's nothing queued, no reason to call
send_queued
, therefore no callback is going to clear the flag. Flagis_sending_
remains set "forever" and the train logic remains blocked from sending. From a user perspective the client endpoint would receive notifications but never transmit anything again.This needs to be cleared during
restart()
whenqueue_
gets drained