diff options
| author | geniusdex 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 |
|---|---|---|
| committer | geniusdex 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 |
| commit | dcfcd9302fe67bfe1aeb67db4203867d173d3073 (patch) | |
| tree | 8220b8762f7eeedad32da4325be023a1fafd9c54 /src/servers.c | |
| parent | 8c95c8f4904d3c1fd5e173f1d52356c921faf83d (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.c | 39 |
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 */ |
