{ FLAG_WEBIRC, 'W' },
{ FLAG_SEE_IDLETIME,'t' },
{ FLAG_SECURITY_SERV,'D' },
+ { FLAG_KEEPCONN_ENABLED, 'K' },
{ FLAG_HIDDENHOST, 'x' },
{ FLAG_NOTCONN, 'Z' }
};
char buf[BUFSIZE];
int prop = 0;
int do_host_hiding = 0;
- char* account = NULL, *fakehost = NULL;
+ char* account = NULL, *fakehost = NULL, *keepconn = NULL;
struct Membership *chan;
what = MODE_ADD;
else
ClearWebIRC(sptr);
break;
+ case 'K':
+ if (what == MODE_ADD) {
+ if(*(p + 1) == 0)
+ break;
+ keepconn = *(++p);
+ SetKeepConnEnabled(sptr);
+ } else {
+ ClearKeepConnEnabled(sptr);
+ }
+ break;
case 'r':
if (*(p + 1) && (what == MODE_ADD)) {
account = *(++p);
ClearHiddenOper(sptr);
if (!FlagHas(&setflags, FLAG_OVERRIDECC) && IsOverrideCC(sptr) && !HasPriv(sptr, PRIV_UMODE_OVERRIDECC))
ClearOverrideCC(sptr);
+ if (!FlagHas(&setflags, FLAG_KEEPCONN_ENABLED) && IsKeepConnEnabled(sptr) && !HasPriv(sptr, PRIV_SET_KEEPCONN))
+ ClearKeepConnEnabled(sptr);
/* Opers are able to fake the webirc usermode only if FEAT_FAKE_WEBIRC is true. */
if (!FlagHas(&setflags, FLAG_WEBIRC) && IsWebIRC(sptr) && !(feature_bool(FEAT_FAKE_WEBIRC) && IsOper(sptr)))
ClearWebIRC(sptr);
if (!FlagHas(&setflags, FLAG_FAKEHOST) && IsFakeHost(sptr)) {
ircd_strncpy(cli_user(sptr)->fakehost, fakehost, HOSTLEN);
}
+ if (!FlagHas(&setflags, FLAG_KEEPCONN_ENABLED) && IsKeepConnEnabled(sptr)) {
+ sptr->keepconn = atoi(keepconn);
+ }
if (IsRegistered(sptr)) {
if(do_host_hiding)