- uint64_t now;\r
- unsigned int cc = 0;\r
- client_t *client_itr = NULL;\r
-\r
- memset( &shmptr->client[0], 0, shmptr->shmclient_size );\r
- shmptr->clientcount = Client_count();\r
- \r
- if( shmptr->clientcount )\r
- {\r
- Timer_init( &now );\r
- while( Client_iterate(&client_itr) != NULL )\r
- { \r
- if( client_itr->authenticated )\r
- { \r
- channel_t *channel = client_itr->channel;\r
- \r
- strncpy( shmptr->client[cc].username, client_itr->username, 120 );\r
- strncpy( shmptr->client[cc].ipaddress, Util_clientAddressToString( client_itr ), INET6_ADDRSTRLEN - 1 );\r
- strncpy( shmptr->client[cc].channel, channel->name, 120 );\r
- \r
- strncpy( shmptr->client[cc].os, client_itr->os, 120 );\r
- strncpy( shmptr->client[cc].release, client_itr->release, 120 );\r
- strncpy( shmptr->client[cc].os_version, client_itr->os_version, 120 );\r
- \r
- shmptr->client[cc].tcp_port = Util_clientAddressToPortTCP( client_itr );\r
- shmptr->client[cc].udp_port = Util_clientAddressToPortUDP( client_itr ); \r
- \r
- shmptr->client[cc].online_secs = ( now - client_itr->connectTime ) / 1000000LL;\r
- shmptr->client[cc].idle_secs = ( now - client_itr->idleTime ) / 1000000LL;\r
- \r
- shmptr->client[cc].bUDP = client_itr->bUDP;\r
- shmptr->client[cc].deaf = client_itr->deaf;\r
- shmptr->client[cc].mute = client_itr->mute;\r
- shmptr->client[cc].bOpus = client_itr->bOpus;\r
- shmptr->client[cc].self_deaf = client_itr->self_deaf;\r
- shmptr->client[cc].self_mute = client_itr->self_mute;\r
- shmptr->client[cc].recording = client_itr->recording;\r
- shmptr->client[cc].authenticated = client_itr->authenticated;\r
- \r
- shmptr->client[cc].availableBandwidth = client_itr->availableBandwidth;\r
- \r
- shmptr->client[cc].UDPPingAvg = client_itr->UDPPingAvg;\r
- shmptr->client[cc].UDPPingVar = client_itr->UDPPingVar;\r
- shmptr->client[cc].TCPPingAvg = client_itr->TCPPingAvg;\r
- shmptr->client[cc].TCPPingVar = client_itr->TCPPingVar;\r
- \r
- shmptr->client[cc].isAdmin = client_itr->isAdmin;\r
- shmptr->client[cc].isSuppressed = client_itr->isSuppressed;\r
- \r
- shmptr->client[cc].UDPPackets = client_itr->UDPPackets;\r
- shmptr->client[cc].TCPPackets = client_itr->TCPPackets;\r
- \r
- } \r
- cc++; \r
- }\r
- } \r
+ uint64_t now;\r
+ unsigned int cc = 0;\r
+ client_t *client_itr = NULL;\r
+\r
+ memset( &shmptr->client[0], 0, shmptr->shmclient_size );\r
+ shmptr->clientcount = Client_count();\r
+\r
+ if( shmptr->clientcount )\r
+ {\r
+ Timer_init( &now );\r
+ while( Client_iterate(&client_itr) != NULL )\r
+ {\r
+ if( client_itr->authenticated )\r
+ {\r
+ channel_t *channel = client_itr->channel;\r
+\r
+ char* clientAddressString = Util_clientAddressToString( client_itr );\r
+\r
+ strncpy( shmptr->client[cc].username, client_itr->username, 120 );\r
+ strncpy( shmptr->client[cc].ipaddress, clientAddressString, INET6_ADDRSTRLEN - 1 );\r
+ strncpy( shmptr->client[cc].channel, channel->name, 120 );\r
+\r
+ strncpy( shmptr->client[cc].os, client_itr->os, 120 );\r
+ strncpy( shmptr->client[cc].release, client_itr->release, 120 );\r
+ strncpy( shmptr->client[cc].os_version, client_itr->os_version, 120 );\r
+\r
+ shmptr->client[cc].tcp_port = Util_clientAddressToPortTCP( client_itr );\r
+ shmptr->client[cc].udp_port = Util_clientAddressToPortUDP( client_itr );\r
+\r
+ shmptr->client[cc].online_secs = ( now - client_itr->connectTime ) / 1000000LL;\r
+ shmptr->client[cc].idle_secs = ( now - client_itr->idleTime ) / 1000000LL;\r
+\r
+ shmptr->client[cc].bUDP = client_itr->bUDP;\r
+ shmptr->client[cc].deaf = client_itr->deaf;\r
+ shmptr->client[cc].mute = client_itr->mute;\r
+ shmptr->client[cc].bOpus = client_itr->bOpus;\r
+ shmptr->client[cc].self_deaf = client_itr->self_deaf;\r
+ shmptr->client[cc].self_mute = client_itr->self_mute;\r
+ shmptr->client[cc].recording = client_itr->recording;\r
+ shmptr->client[cc].authenticated = client_itr->authenticated;\r
+\r
+ shmptr->client[cc].availableBandwidth = client_itr->availableBandwidth;\r
+\r
+ shmptr->client[cc].UDPPingAvg = client_itr->UDPPingAvg;\r
+ shmptr->client[cc].UDPPingVar = client_itr->UDPPingVar;\r
+ shmptr->client[cc].TCPPingAvg = client_itr->TCPPingAvg;\r
+ shmptr->client[cc].TCPPingVar = client_itr->TCPPingVar;\r
+\r
+ shmptr->client[cc].isAdmin = client_itr->isAdmin;\r
+ shmptr->client[cc].isSuppressed = client_itr->isSuppressed;\r
+\r
+ shmptr->client[cc].UDPPackets = client_itr->UDPPackets;\r
+ shmptr->client[cc].TCPPackets = client_itr->TCPPackets;\r
+\r
+ free(clientAddressString);\r
+ }\r
+ cc++;\r
+ }\r
+ }\r