# HG changeset patch # User David Demelier # Date 1511554817 -3600 # Node ID c9b703f923d009683f7a2ec1a453703e42aef08b # Parent 9b6b0d7d89c6f8ec821b4f0104d3a07a016b647d Irccd: re-recv from a client diff -r 9b6b0d7d89c6 -r c9b703f923d0 libirccd/irccd/transport_service.cpp --- a/libirccd/irccd/transport_service.cpp Fri Nov 24 21:04:32 2017 +0100 +++ b/libirccd/irccd/transport_service.cpp Fri Nov 24 21:20:17 2017 +0100 @@ -48,23 +48,29 @@ } } +void transport_service::do_recv(std::shared_ptr tc) +{ + tc->recv([this, tc] (auto code, auto json) { + if (code) + log::warning() << "transport: " << code.message() << std::endl; + else { + do_recv(tc); + handle_command(std::move(tc), json); + } + }); +} + void transport_service::do_accept(transport_server& ts) { ts.accept([this, &ts] (auto code, auto client) { if (code) log::warning() << "transport: " << code.message() << std::endl; else { - log::info() << "transport: new client connected" << std::endl; + do_accept(ts); + do_recv(std::move(client)); - client->recv([this, client] (auto code, auto json) { - if (code) - log::warning() << "transport: " << code.message() << std::endl; - else - handle_command(std::move(client), json); - }); + log::info() << "transport: new client connected" << std::endl; } - - do_accept(ts); }); } diff -r 9b6b0d7d89c6 -r c9b703f923d0 libirccd/irccd/transport_service.hpp --- a/libirccd/irccd/transport_service.hpp Fri Nov 24 21:04:32 2017 +0100 +++ b/libirccd/irccd/transport_service.hpp Fri Nov 24 21:20:17 2017 +0100 @@ -42,6 +42,7 @@ servers_t servers_; void handle_command(std::shared_ptr, const nlohmann::json&); + void do_recv(std::shared_ptr); void do_accept(transport_server&); public: