Przeglądaj źródła

Merge branch 'v0.21'

Paul-Louis Ageneau 1 rok temu
rodzic
commit
0f0d7cd250
3 zmienionych plików z 8 dodań i 3 usunięć
  1. 1 0
      src/h264rtppacketizer.cpp
  2. 6 2
      src/impl/tcpserver.cpp
  3. 1 1
      src/impl/tcptransport.cpp

+ 1 - 0
src/h264rtppacketizer.cpp

@@ -12,6 +12,7 @@
 
 #include "impl/internals.hpp"
 
+#include <algorithm>
 #include <cassert>
 
 #ifdef _WIN32

+ 6 - 2
src/impl/tcpserver.cpp

@@ -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");

+ 1 - 1
src/impl/tcptransport.cpp

@@ -69,7 +69,7 @@ TcpTransport::TcpTransport(socket_t sock, state_callback callback)
 	struct sockaddr_storage addr;
 	socklen_t addrlen = sizeof(addr);
 	if (::getpeername(mSock, reinterpret_cast<struct sockaddr *>(&addr), &addrlen) < 0)
-		throw std::runtime_error("getsockname failed");
+		throw std::runtime_error("getpeername failed");
 
 	unmap_inet6_v4mapped(reinterpret_cast<struct sockaddr *>(&addr), &addrlen);