Переглянути джерело

The client acceptor socket needs to be long lived

Ian Goldberg 1 рік тому
батько
коміт
518cdb8a14
2 змінених файлів з 7 додано та 4 видалено
  1. 6 4
      App/net.cpp
  2. 1 0
      App/net.hpp

+ 6 - 4
App/net.cpp

@@ -281,11 +281,13 @@ NetIO::NetIO(boost::asio::io_context &io_context, const Config &config)
 
 
     if(me==0) {
-        tcp::acceptor async_acceptor(io_context,
-            resolver.resolve(myconf.clistenhost, myconf.clistenport)->endpoint());
+        client_acceptor = std::shared_ptr<tcp::acceptor>(
+            new tcp::acceptor(io_context,
+                resolver.resolve(myconf.clistenhost,
+                myconf.clistenport)->endpoint()));
         std::shared_ptr<tcp::socket> new_socket(new tcp::socket(io_context));
-        std::cout << myconf.clistenhost << ":" <<  myconf.clistenport;
-        async_acceptor.async_accept(*new_socket, accept_handler);
+        std::cout << "Accepting on " << myconf.clistenhost << ":" << myconf.clistenport << "\n";
+        client_acceptor->async_accept(*new_socket, accept_handler);
     }
 
 

+ 1 - 0
App/net.hpp

@@ -128,6 +128,7 @@ class NetIO {
     const Config &conf;
     const NodeConfig &myconf;
     std::deque<std::optional<NodeIO>> nodeios;
+    std::shared_ptr<tcp::acceptor> client_acceptor;
 
 public:
     NetIO(boost::asio::io_context &io_context, const Config &config);