From aa18ac047d546bfa7cfc4378a9cf2357609c8971 Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 19 May 2009 09:38:57 +0200 Subject: [PATCH] Crash fix --- src/netevent.c | 8 ++++---- src/user.c | 2 +- src/usermanager.c | 10 +++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/netevent.c b/src/netevent.c index 176ab4e..13d881c 100644 --- a/src/netevent.c +++ b/src/netevent.c @@ -86,10 +86,10 @@ void net_on_read(int fd, short ev, void *arg) } else { - if (msglen < user->hub->config->max_recv_buffer) + if (msglen < g_hub->config->max_recv_buffer) { // FIXME: hub is not set???? - if (hub_handle_message(user->hub, user, &buf[handled], msglen) == -1) + if (hub_handle_message(g_hub, user, &buf[handled], msglen) == -1) { flag_close = quit_protocol_error; more = 0; @@ -109,7 +109,7 @@ void net_on_read(int fd, short ev, void *arg) if (handled < buflen) { - if ((buflen - handled) > user->hub->config->max_recv_buffer) + if ((buflen - handled) > g_hub->config->max_recv_buffer) { user_flag_set(user, flag_maxbuf); hub_free(user->recv_buf); @@ -119,7 +119,7 @@ void net_on_read(int fd, short ev, void *arg) else { if (!user->recv_buf) - user->recv_buf = hub_malloc(user->hub->config->max_recv_buffer); + user->recv_buf = hub_malloc(g_hub->config->max_recv_buffer); if (user->recv_buf) { diff --git a/src/user.c b/src/user.c index f982857..05385e0 100644 --- a/src/user.c +++ b/src/user.c @@ -43,7 +43,7 @@ struct user* user_create(struct hub_info* hub, int sd) user->sd = sd; user->tm_connected = time(NULL); - user->hub = hub; +// user->hub = hub; user->feature_cast = 0; user->send_queue = list_create(); diff --git a/src/usermanager.c b/src/usermanager.c index 089fd6f..fb6210a 100644 --- a/src/usermanager.c +++ b/src/usermanager.c @@ -160,7 +160,15 @@ int uman_remove(struct hub_info* hub, struct user* user) return -1; list_remove(hub->users->list, user); - hub->users->count--; + + if (hub->users->count > 0) + { + hub->users->count--; + } + else + { + assert(!"negative count!"); + } hub->users->shared_size -= user->limits.shared_size; hub->users->shared_files -= user->limits.shared_files;