diff --git a/client/debian/changelog b/client/debian/changelog index baf1fea5..c1f426a8 100644 --- a/client/debian/changelog +++ b/client/debian/changelog @@ -8,13 +8,15 @@ snapclient (0.12.0) unstable; urgency=low * Bugfixes -Snapclient: more reliable unique client id (Issue #249) -Snapserver: fix config file permissions (Issue #251) - -Fix linker error (Issue #255, #274) - -Snapserver: fix crash on "bye" from control client (Issue #238) + -Fix linker error (Issue #255, #274) + -Snapserver: fix crash on "bye" from control client (Issue #238) + -Snapserver: fix crash on port scan (Issue #267) * General -Improved logging: Use "--debug" for debug logging -Log to file: Use "--debug=" -Improved exception handling and error logging (Issue #276) -Android: update to NDK r16 and clang++ + -hide spotify credentials in json control message (Issue #282) -- Johannes Pohl Tue, 04 Oct 2017 00:13:37 +0200 diff --git a/server/controlServer.cpp b/server/controlServer.cpp index 292a5251..79cd244b 100644 --- a/server/controlServer.cpp +++ b/server/controlServer.cpp @@ -109,19 +109,26 @@ void ControlServer::startAccept() void ControlServer::handleAccept(socket_ptr socket) { - struct timeval tv; - tv.tv_sec = 5; - tv.tv_usec = 0; - setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); - setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); -// socket->set_option(boost::asio::ip::tcp::no_delay(false)); - SLOG(NOTICE) << "ControlServer::NewConnection: " << socket->remote_endpoint().address().to_string() << endl; - shared_ptr session = make_shared(this, socket); + try { - std::lock_guard mlock(mutex_); - session->start(); - sessions_.insert(session); - cleanup(); + struct timeval tv; + tv.tv_sec = 5; + tv.tv_usec = 0; + setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); + setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); + // socket->set_option(boost::asio::ip::tcp::no_delay(false)); + SLOG(NOTICE) << "ControlServer::NewConnection: " << socket->remote_endpoint().address().to_string() << endl; + shared_ptr session = make_shared(this, socket); + { + std::lock_guard mlock(mutex_); + session->start(); + sessions_.insert(session); + cleanup(); + } + } + catch (const std::exception& e) + { + SLOG(ERROR) << "Exception in ControlServer::handleAccept: " << e.what() << endl; } startAccept(); } diff --git a/server/debian/changelog b/server/debian/changelog index 5b6bf994..c2e94adc 100644 --- a/server/debian/changelog +++ b/server/debian/changelog @@ -8,13 +8,15 @@ snapserver (0.12.0) unstable; urgency=low * Bugfixes -Snapclient: more reliable unique client id (Issue #249) -Snapserver: fix config file permissions (Issue #251) - -Fix linker error (Issue #255, #274) - -Snapserver: fix crash on "bye" from control client (Issue #238) + -Fix linker error (Issue #255, #274) + -Snapserver: fix crash on "bye" from control client (Issue #238) + -Snapserver: fix crash on port scan (Issue #267) * General -Improved logging: Use "--debug" for debug logging -Log to file: Use "--debug=" -Improved exception handling and error logging (Issue #276) -Android: update to NDK r16 and clang++ + -hide spotify credentials in json control message (Issue #282) -- Johannes Pohl Tue, 04 Oct 2017 00:13:37 +0200 diff --git a/server/streamServer.cpp b/server/streamServer.cpp index e1b637c9..50949e63 100644 --- a/server/streamServer.cpp +++ b/server/streamServer.cpp @@ -576,24 +576,30 @@ void StreamServer::startAccept() void StreamServer::handleAccept(socket_ptr socket) { - struct timeval tv; - tv.tv_sec = 5; - tv.tv_usec = 0; - setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); - setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); + try + { + struct timeval tv; + tv.tv_sec = 5; + tv.tv_usec = 0; + setsockopt(socket->native_handle(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); + setsockopt(socket->native_handle(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); - /// experimental: turn on tcp::no_delay - socket->set_option(tcp::no_delay(true)); + /// experimental: turn on tcp::no_delay + socket->set_option(tcp::no_delay(true)); - SLOG(NOTICE) << "StreamServer::NewConnection: " << socket->remote_endpoint().address().to_string() << endl; - shared_ptr session = make_shared(this, socket); + SLOG(NOTICE) << "StreamServer::NewConnection: " << socket->remote_endpoint().address().to_string() << endl; + shared_ptr session = make_shared(this, socket); - session->setBufferMs(settings_.bufferMs); - session->start(); - - std::lock_guard mlock(sessionsMutex_); - sessions_.insert(session); + session->setBufferMs(settings_.bufferMs); + session->start(); + std::lock_guard mlock(sessionsMutex_); + sessions_.insert(session); + } + catch (const std::exception& e) + { + SLOG(ERROR) << "Exception in StreamServer::handleAccept: " << e.what() << endl; + } startAccept(); }