From 937efa520eb6f3719af14c6dd98b6fe1b9c808bd Mon Sep 17 00:00:00 2001 From: "B.Greenham" Date: Fri, 5 Mar 2010 20:06:44 -0500 Subject: [PATCH] Fix segfault on netsplit due to clearing metadata too late. --- src/chmode.c | 2 +- src/client.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chmode.c b/src/chmode.c index e0aaf66..ecff7d9 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -42,7 +42,7 @@ #include "s_newconf.h" #include "logger.h" #include "chmode.h" -#include "irc_dictionary.h"; +#include "irc_dictionary.h" /* bitmasks for error returns, so we send once per call */ #define SM_ERR_NOTS 0x00000001 /* No TS on channel */ diff --git a/src/client.c b/src/client.c index 24544f1..b76caf4 100644 --- a/src/client.c +++ b/src/client.c @@ -1146,6 +1146,9 @@ exit_generic_client(struct Client *client_p, struct Client *source_p, struct Cli if(IsOper(source_p)) rb_dlinkFindDestroy(source_p, &oper_list); + /* get rid of any metadata the user may have */ + user_metadata_clear(source_p); + sendto_common_channels_local(source_p, ":%s!%s@%s QUIT :%s", source_p->name, source_p->username, source_p->host, comment); @@ -1709,9 +1712,6 @@ free_user(struct User *user, struct Client *client_p) { free_away(client_p); - /* get rid of any metadata the user may have */ - user_metadata_clear(client_p); - if(--user->refcnt <= 0) { if(user->away)