From 6b37fbc287f702e217764647c702a245a467f916 Mon Sep 17 00:00:00 2001 From: pk910 Date: Tue, 28 Jun 2011 15:43:30 +0200 Subject: [PATCH] Fix oper-on-connect to correctly broadcast +o to neighbour servers. --- ircd/s_user.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ircd/s_user.c b/ircd/s_user.c index 87c006d..d234262 100644 --- a/ircd/s_user.c +++ b/ircd/s_user.c @@ -491,7 +491,15 @@ int register_user(struct Client *cptr, struct Client *sptr) if (IsOper(sptr)) ++UserStats.opers; if (MyUser(sptr)) - client_set_uprivs(sptr, cli_confs(sptr)->value.aconf); + { + if(IsOper(sptr)) { + FlagSet(&cli_confs(sptr)->value.aconf->conn_class->privs_dirty, PRIV_PROPAGATE); + client_set_privs(sptr, cli_confs(sptr)->value.aconf); + cli_handler(sptr) = OPER_HANDLER; + } + else + client_set_uprivs(sptr, cli_confs(sptr)->value.aconf); + } if (MyUser(sptr) && HasPriv(sptr, PRIV_SEE_IDLETIME)) SetSeeIdletime(sptr); @@ -531,13 +539,10 @@ int register_user(struct Client *cptr, struct Client *sptr) if(IsOper(sptr)) { send_reply(sptr, RPL_YOUREOPER); - FlagSet(&cli_confs(sptr)->value.aconf->conn_class->privs_dirty, PRIV_PROPAGATE); - client_set_privs(sptr, cli_confs(sptr)->value.aconf); sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (%c)", cli_name(sptr), cli_user(sptr)->username, cli_sockhost(sptr), IsOper(sptr) ? 'O' : 'o'); log_write(LS_OPER, L_INFO, 0, "OPER () by (%#C)", sptr); - cli_handler(sptr) = OPER_HANDLER; } if(*cli_connclass(sptr)) -- 2.20.1