diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -7,6 +7,7 @@ #include <netinet/in.h> #include <errno.h> #include <assert.h> +#include "broadcast.h" #include "command.h" #include "conn_data.h" #include "db.h" @@ -53,7 +54,10 @@ static void delete_conn_data(int fd){ struct hash_item *item=conn_hash[fd%CONN_HASH_SIZE]; assert(item); if(item->cd.fd==fd){ - if(item->cd.userid!=-1)userdata_unregister(item->cd.userid,fd); + if(item->cd.userid!=-1){ + userdata_unregister(item->cd.userid,fd); + broadcast_online_change(item->cd.userid); + } conn_hash[fd%CONN_HASH_SIZE]=item->next; conn_data_nullify(&item->cd); free(item); @@ -66,7 +70,10 @@ static void delete_conn_data(int fd){ } assert(parent); assert(item); - if(item->cd.userid!=-1)userdata_unregister(item->cd.userid,fd); + if(item->cd.userid!=-1){ + userdata_unregister(item->cd.userid,fd); + broadcast_online_change(item->cd.userid); + } conn_data_nullify(&item->cd); parent->next=item->next; free(item); |