struct hs_user *huser = hs_get_user(hi, 0);
if(huser) {
- struct hs_assignment *assignment;
- struct hs_secondlevel *slfh;
struct devnull_class *devc;
- for(assignment = huser->assignments; assignment; assignment = assignment->unext) {
- slfh = assignment->secondlevel;
- if(slfh->devnull_id) {
- devc = devnull_find_id(slfh->devnull_id);
- if(!devc) {
- slfh->devnull_id = 0;
- continue;
- }
+ if(hi->devnull_id != 0) {
+ devc = devnull_find_id(huser->hi->devnull_id);
+ if(devc) {
if(DEVNULL_HAS_PRIV(devc, CHANLIMIT) && (!DEVNULL_HAS_PRIV(&th, CHANLIMIT) || th.maxchan < devc->maxchan))
th.maxchan = devc->maxchan;
if(DEVNULL_HAS_PRIV(devc, MAXSENDQ) && (!DEVNULL_HAS_PRIV(&th, MAXSENDQ) || th.maxsendq < devc->maxsendq))
if(!th.name)
th.name = devc->name;
}
+ } else {
+ struct hs_assignment *assignment;
+ struct hs_secondlevel *slfh;
+ for(assignment = huser->assignments; assignment; assignment = assignment->unext) {
+ slfh = assignment->secondlevel;
+ if(slfh->devnull_id) {
+ devc = devnull_find_id(slfh->devnull_id);
+ if(!devc) {
+ slfh->devnull_id = 0;
+ continue;
+ }
+ if(DEVNULL_HAS_PRIV(devc, CHANLIMIT) && (!DEVNULL_HAS_PRIV(&th, CHANLIMIT) || th.maxchan < devc->maxchan))
+ th.maxchan = devc->maxchan;
+ if(DEVNULL_HAS_PRIV(devc, MAXSENDQ) && (!DEVNULL_HAS_PRIV(&th, MAXSENDQ) || th.maxsendq < devc->maxsendq))
+ th.maxsendq = devc->maxsendq;
+ th.modes |= devc->modes;
+ if(!th.name)
+ th.name = devc->name;
+ }
+ }
}
}
return th;