bug fix: server list ping times may not be accurate and client list may not be retrieved

This commit is contained in:
Volker Fischer 2020-04-03 21:45:36 +02:00
parent 324287beda
commit b9c6d87766
4 changed files with 14 additions and 8 deletions

View file

@ -12,13 +12,15 @@
- changed the maximum number of clients supported by the server from 20 to 50 - changed the maximum number of clients supported by the server from 20 to 50
TODO x64 deploy version for Windows -> change deploy script - Windows installer now contains a 32 and 64 bit version of Jamulus (the version to
be installed is selected automatically according to the detected operating system)
- bug fix: server list ping times may not be accurate and client list may not be retrieved
TODO client: larger sound card buffers are managed by conversion buffer, not in processintern for loop (note iSndCrdFrameSizeFactor!) TODO client: larger sound card buffers are managed by conversion buffer, not in processintern for loop (note iSndCrdFrameSizeFactor!)
TODO check why for some servers we do not get client list in server list TODO #12 A server in the same NAT region as the client is not visible (https://sourceforge.net/p/llcon/bugs/12/)
TODO check server list registration for correct behavior

View file

@ -512,8 +512,12 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
QObject::connect ( &ConnectDlg, SIGNAL ( ReqServerListQuery ( CHostAddress ) ), QObject::connect ( &ConnectDlg, SIGNAL ( ReqServerListQuery ( CHostAddress ) ),
this, SLOT ( OnReqServerListQuery ( CHostAddress ) ) ); this, SLOT ( OnReqServerListQuery ( CHostAddress ) ) );
// note that this connection must be a queued connection, otherwise the server list ping
// times are not accurate and the client list may not be retrieved for all servers listed
// (it seems the sendto() function needs to be called from different threads to fire the
// packet immediately and do not collect packets before transmitting)
QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListPingMes ( CHostAddress ) ), QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListPingMes ( CHostAddress ) ),
this, SLOT ( OnCreateCLServerListPingMes ( CHostAddress ) ) ); this, SLOT ( OnCreateCLServerListPingMes ( CHostAddress ) ), Qt::QueuedConnection );
QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListReqVerAndOSMes ( CHostAddress ) ), QObject::connect ( &ConnectDlg, SIGNAL ( CreateCLServerListReqVerAndOSMes ( CHostAddress ) ),
this, SLOT ( OnCreateCLServerListReqVerAndOSMes ( CHostAddress ) ) ); this, SLOT ( OnCreateCLServerListReqVerAndOSMes ( CHostAddress ) ) );

View file

@ -110,9 +110,9 @@ LED bar: lbr
// defined port number for client and server // defined port number for client and server
#if ( SYSTEM_FRAME_SIZE_SAMPLES == 64 ) #if ( SYSTEM_FRAME_SIZE_SAMPLES == 64 )
# define LLCON_DEFAULT_PORT_NUMBER 22064 // different port number for 64 samples frame size version # define LLCON_DEFAULT_PORT_NUMBER 22064 // different port number for 64 samples frame size version
#else #else
# define LLCON_DEFAULT_PORT_NUMBER 22124 # define LLCON_DEFAULT_PORT_NUMBER 22124
#endif #endif
// system sample rate (the sound card and audio coder works on this sample rate) // system sample rate (the sound card and audio coder works on this sample rate)

View file

@ -169,7 +169,7 @@ void CSocket::SendPacket ( const CVector<uint8_t>& vecbySendBuf,
const int iVecSizeOut = vecbySendBuf.Size(); const int iVecSizeOut = vecbySendBuf.Size();
if ( iVecSizeOut != 0 ) if ( iVecSizeOut > 0 )
{ {
// send packet through network (we have to convert the constant unsigned // send packet through network (we have to convert the constant unsigned
// char vector in "const char*", for this we first convert the const // char vector in "const char*", for this we first convert the const