|
@@ -66,8 +66,12 @@ shared_ptr<TcpTransport> TcpServer::accept() {
|
|
|
socket_t incomingSock = ::accept(mSock, (struct sockaddr *)&addr, &addrlen);
|
|
|
|
|
|
if (incomingSock != INVALID_SOCKET) {
|
|
|
- return std::make_shared<TcpTransport>(incomingSock, nullptr); // no state callback
|
|
|
-
|
|
|
+ try {
|
|
|
+ return std::make_shared<TcpTransport>(incomingSock, nullptr); // no state callback
|
|
|
+ } catch(const std::exception &e) {
|
|
|
+ PLOG_WARNING << e.what();
|
|
|
+ ::closesocket(incomingSock);
|
|
|
+ }
|
|
|
} else if (sockerrno != SEAGAIN && sockerrno != SEWOULDBLOCK) {
|
|
|
PLOG_ERROR << "TCP server failed, errno=" << sockerrno;
|
|
|
throw std::runtime_error("TCP server failed");
|