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);
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 (<OOC>) by (%#C)", sptr);
- cli_handler(sptr) = OPER_HANDLER;
}
if(*cli_connclass(sptr))