Keep the same listening socket in bssl server -loop.
When testing against a browser, multiple connections will be made in
parallel. Keeping the same listening socket lets the other connections
queue up at least rather than fail with ECONNREFUSED. Of course, this is
still far from a realistic server.
Change-Id: I984fb29da4bf8808eb40938b12782dc1730f2e19
Reviewed-on: https://boringssl-review.googlesource.com/17405
Reviewed-by: Steven Valdez <svaldez@google.com>
Commit-Queue: Steven Valdez <svaldez@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/tool/transport_common.h b/tool/transport_common.h
index 7595f45..7c157ba 100644
--- a/tool/transport_common.h
+++ b/tool/transport_common.h
@@ -26,10 +26,24 @@
// It returns true on success and false otherwise.
bool Connect(int *out_sock, const std::string &hostname_and_port);
-// Accept sets |*out_sock| to be a socket connected to the port given
-// in |port|, which should be of the form "123".
-// It returns true on success and false otherwise.
-bool Accept(int *out_sock, const std::string &port);
+class Listener {
+ public:
+ Listener() {}
+ ~Listener();
+
+ // Init initializes the listener to listen on |port|, which should be of the
+ // form "123".
+ bool Init(const std::string &port);
+
+ // Accept sets |*out_sock| to be a socket connected to the listener.
+ bool Accept(int *out_sock);
+
+ private:
+ int server_sock_ = -1;
+
+ Listener(const Listener &) = delete;
+ Listener &operator=(const Listener &) = delete;
+};
bool VersionFromString(uint16_t *out_version, const std::string &version);