summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/os_jupe.c3
-rw-r--r--src/servers.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/core/os_jupe.c b/src/core/os_jupe.c
index f25977f5e..2b6146d64 100644
--- a/src/core/os_jupe.c
+++ b/src/core/os_jupe.c
@@ -74,8 +74,11 @@ int do_jupe(User * u)
if (!jserver) {
syntax_error(s_OperServ, u, "JUPE", OPER_JUPE_SYNTAX);
} else {
+ Server *server = findserver(servlist, jserver);
if (!isValidHost(jserver, 3)) {
notice_lang(s_OperServ, u, OPER_JUPE_HOST_ERROR);
+ } else if (server && ((server->flags & SERVER_ISME) || (server->flags & SERVER_ISUPLINK))) {
+ notice_lang(s_OperServ, u, OPER_JUPE_INVALID_SERVER);
} else {
anope_cmd_jupe(jserver, u->nick, reason);
diff --git a/src/servers.c b/src/servers.c
index 08391e823..8aa5b2a12 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -155,8 +155,10 @@ Server *new_server(Server * uplink, const char *name, const char *desc,
uplink->links = serv;
}
/* Check if this is our uplink server */
- if ((uplink == me_server) && !(flags & SERVER_JUPED))
+ if ((uplink == me_server) && !(flags & SERVER_JUPED)) {
serv_uplink = serv;
+ serv->flags |= SERVER_ISUPLINK;
+ }
/* Write the StartGlobal (to non-juped servers) */
if (GlobalOnCycle && GlobalOnCycleUP && !(flags & SERVER_JUPED))