summaryrefslogtreecommitdiff
path: root/src/servers.c
diff options
context:
space:
mode:
authorgeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-03-14 18:01:08 +0000
committergeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-03-14 18:01:08 +0000
commitdcfcd9302fe67bfe1aeb67db4203867d173d3073 (patch)
tree8220b8762f7eeedad32da4325be023a1fafd9c54 /src/servers.c
parent8c95c8f4904d3c1fd5e173f1d52356c921faf83d (diff)
BUILD : 1.7.8 (619) BUGS : NOTES : Fixed the recording of server sync state more reliable, which fixes a bug where servers which did not report bursts would always remain in burst-mode internally
git-svn-id: svn://svn.anope.org/anope/trunk@619 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@467 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/servers.c')
-rw-r--r--src/servers.c39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/servers.c b/src/servers.c
index 211d27fce..e5579bca0 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -15,7 +15,8 @@
#include "services.h"
Server *servlist = NULL;
-Server *me_server = NULL; /* Our uplink server */
+Server *me_server = NULL; /* This are we */
+Server *serv_uplink = NULL; /* This is our uplink */
uint32 uplink_capab;
char *uplink;
char *TS6UPLINK;
@@ -103,7 +104,10 @@ Server *new_server(Server * uplink, const char *name, const char *desc,
} else {
serv->suid = NULL;
}
- serv->sync = -1;
+ if (ircd->sync)
+ serv->sync = SSYNC_IN_PROGRESS;
+ else
+ serv->sync = SSYNC_UNKNOWN;
serv->links = NULL;
serv->prev = NULL;
@@ -120,6 +124,9 @@ Server *new_server(Server * uplink, const char *name, const char *desc,
uplink->links->prev = serv;
uplink->links = serv;
}
+ /* Check if this is our uplink server */
+ if ((uplink == me_server) && !(flags & SERVER_JUPED))
+ serv_uplink = serv;
return serv;
}
@@ -289,14 +296,13 @@ int anope_check_sync(const char *name)
Server *s;
s = findserver(servlist, name);
- if (!s) {
- return 0;
- }
- if (s->sync) {
- return s->sync;
- } else {
+ if (!s)
return 0;
- }
+
+ if (is_sync(s))
+ return 1;
+ else
+ return -1;
}
/*************************************************************************/
@@ -522,4 +528,19 @@ int is_ulined(char *server)
return 0;
}
+/*************************************************************************/
+
+/**
+ * See if the current server is synced, or has an unknown sync state
+ * (in which case we pretend it is always synced)
+ * @param server Server of which we want to know the state
+ * @return int 0 if not synced, 1 if synced
+ */
+int is_sync(Server * server)
+{
+ if ((server->sync == SSYNC_DONE) || (server->sync == SSYNC_UNKNOWN))
+ return 1;
+ return 0;
+}
+
/* EOF */