From fdf39019bb8b58287cc1d5ec4657e3f69abfaeb4 Mon Sep 17 00:00:00 2001 From: jrd Date: Wed, 15 Oct 2025 05:57:06 +0000 Subject: [PATCH] notify of connection at earliest step, pause, proceed --- src/server.h | 3 +++ src/serverlogging.cpp | 11 +++++++++++ src/serverlogging.h | 2 ++ src/socket.cpp | 8 ++++++-- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/server.h b/src/server.h index 6ea36ac9cb..065a3ca7b9 100644 --- a/src/server.h +++ b/src/server.h @@ -169,6 +169,9 @@ class CServer : public QObject, public CServerSlots void SetEnableDelayPanning ( bool bDelayPanningOn ) { bDelayPan = bDelayPanningOn; } bool IsDelayPanningEnabled() { return bDelayPan; } + CServerLogging* GetLogging() { return &Logging; } + + protected: // access functions for actual channels bool IsConnected ( const int iChanNum ) { return vecChannels[iChanNum].IsConnected(); } diff --git a/src/serverlogging.cpp b/src/serverlogging.cpp index 9b57502103..335ab49479 100644 --- a/src/serverlogging.cpp +++ b/src/serverlogging.cpp @@ -55,6 +55,17 @@ void CServerLogging::AddNewConnection ( const QHostAddress& ClientInetAddr, cons *this << strLogStr; // in log file } + +void CServerLogging::AddEarlyConnection(const QHostAddress& ClientInetAddr, int iNumberOfConnectedClients) +{ + const QString strLogStr = + CurTimeDatetoLogString() + ", " + ClientInetAddr.toString() + ", new connection detected (" + QString::number(iNumberOfConnectedClients) + ")"; + qInfo() << qUtf8Printable(strLogStr); // Console + *this << strLogStr; // Log file (uses operator<<, which is protected but accessible here) +} + + + void CServerLogging::AddServerStopped() { const QString strLogStr = CurTimeDatetoLogString() + ",, server idling " diff --git a/src/serverlogging.h b/src/serverlogging.h index e0ea7b8768..f40393fb18 100644 --- a/src/serverlogging.h +++ b/src/serverlogging.h @@ -44,6 +44,8 @@ class CServerLogging void AddServerStopped(); void AddNewConnection ( const QHostAddress& ClientInetAddr, const int iNumberOfConnectedClients ); + void AddEarlyConnection(const QHostAddress& ClientInetAddr, int iNumberOfConnectedClients); + protected: void operator<< ( const QString& sNewStr ); diff --git a/src/socket.cpp b/src/socket.cpp index 9ebfc21cdd..ff63fd2ae9 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -463,8 +463,12 @@ void CSocket::OnDataReceived() if ( pServer->PutAudioData ( vecbyRecBuf, iNumBytesRead, RecHostAddr, iCurChanID ) ) { - // we have a new connection, emit a signal - emit NewConnection ( iCurChanID, pServer->GetNumberOfConnectedClients(), RecHostAddr ); + // EARLY LOG: Announce new connection as soon as detected + pServer->GetLogging()->AddEarlyConnection(RecHostAddr.InetAddr, pServer->GetNumberOfConnectedClients()); + + QThread::msleep(250); + + emit NewConnection(iCurChanID, pServer->GetNumberOfConnectedClients(), RecHostAddr); // this was an audio packet, start server if it is in sleep mode if ( !pServer->IsRunning() )