void Client_janitor()
{
- struct dlist *itr;
+ struct dlist *itr, *save;
int bwTop = maxBandwidth + maxBandwidth / 4;
- list_iterate(itr, &clients) {
+ list_iterate_safe(itr, save, &clients) {
client_t *c;
c = list_get_entry(itr, client_t, node);
Log_debug("Client %s BW available %d", c->username, c->availableBandwidth);
}
else {
if (SSLi_get_error(client->ssl, rc) == SSLI_ERROR_SYSCALL) {
- Log_info_client(client, "Connection closed by peer");
+ Log_info_client(client,"Error: %s - Closing connection", strerror(errno));
+ }
+ else if (SSLi_get_error(client->ssl, rc) == SSLI_ERROR_CONNRESET) {
+ Log_info_client(client, "Connection reset by peer");
}
else {
Log_info_client(client, "SSL error: %d - Closing connection", SSLi_get_error(client->ssl, rc));
return 0;
}
else {
- if (SSLi_get_error(client->ssl, rc) == SSLI_ERROR_SYSCALL)
- Log_warn("Client_write: Error: %s - Closing connection", strerror(errno));
- else
- Log_warn("Client_write: SSL error: %d - Closing connection.", SSLi_get_error(client->ssl, rc));
+ if (SSLi_get_error(client->ssl, rc) == SSLI_ERROR_SYSCALL) {
+ Log_info_client(client, "Error: %s - Closing connection", strerror(errno));
+ }
+ else if (SSLi_get_error(client->ssl, rc) == SSLI_ERROR_CONNRESET) {
+ Log_info_client(client, "Connection reset by peer");
+ }
+ else {
+ Log_info_client(client, "SSL error: %d - Closing connection.", SSLi_get_error(client->ssl, rc));
+ }
Client_free(client);
return -1;
}
static inline void Client_send_voice(client_t *src, client_t *dst, uint8_t *data, int len, int poslen)
{
- if (IS_AUTH(dst) && dst != src && !dst->deaf) {
+ if (IS_AUTH(dst) && dst != src && !dst->deaf && !dst->self_deaf) {
if (poslen > 0 && /* Has positional data */
src->context != NULL && dst->context != NULL && /* ...both source and destination has context */
strcmp(src->context, dst->context) == 0) /* ...and the contexts match */
channel_t *ch = (channel_t *)client->channel;
struct dlist *itr;
- if (!client->authenticated || client->mute)
+ if (!client->authenticated || client->mute || client->self_mute)
goto out;
packetsize = 20 + 8 + 4 + len;