summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2014-06-17 18:17:13 +0000
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2014-06-17 18:17:13 +0000
commit0a93030b3048fb160c17bd88104b7da0b470a577 (patch)
tree2f0a9314502c109ef851e83e60a44b03b5dc1c9a
parent46182cbd2715fb89cd6fc18ae74fb7fc4893bccc (diff)
- Fixed EOB logic for remote servers. Fix derived from p4
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@3962 82007160-df01-0410-b94d-b575c5fd34c7
-rw-r--r--modules/core/m_server.c3
-rw-r--r--modules/m_eob.c15
2 files changed, 14 insertions, 4 deletions
diff --git a/modules/core/m_server.c b/modules/core/m_server.c
index f1851b8..c8cefe7 100644
--- a/modules/core/m_server.c
+++ b/modules/core/m_server.c
@@ -454,9 +454,6 @@ server_estab(struct Client *client_p)
sendto_one(client_p, ":%s SERVER %s %d :%s%s",
target_p->servptr->name, target_p->name, target_p->hopcount+1,
IsHidden(target_p) ? "(H) " : "", target_p->info);
-
- if (HasFlag(target_p, FLAGS_EOB))
- sendto_one(client_p, ":%s EOB", ID_or_name(target_p, client_p));
}
server_burst(client_p);
diff --git a/modules/m_eob.c b/modules/m_eob.c
index 46982cb..cf57dd3 100644
--- a/modules/m_eob.c
+++ b/modules/m_eob.c
@@ -33,6 +33,19 @@
#include "s_serv.h"
+static void
+server_eob(struct Client *server)
+{
+ dlink_node *ptr = NULL;
+
+ assert(IsServer(source_p));
+
+ AddFlag(server, FLAGS_EOB);
+
+ DLINK_FOREACH(ptr, server->serv->server_list.head)
+ server_eob(ptr->data);
+}
+
/*
* ms_eob - EOB command handler
* parv[0] = sender prefix
@@ -50,7 +63,7 @@ ms_eob(struct Client *client_p, struct Client *source_p,
source_p->name,
(unsigned int)(CurrentTime - source_p->localClient->firsttime));
- AddFlag(source_p, FLAGS_EOB);
+ server_eob(source_p);
sendto_server(client_p, CAP_TS6, NOCAPS,
":%s EOB", ID(source_p));