=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sndiod/sock.c,v retrieving revision 1.39 retrieving revision 1.40 diff -c -r1.39 -r1.40 *** src/usr.bin/sndiod/sock.c 2021/01/29 11:31:28 1.39 --- src/usr.bin/sndiod/sock.c 2021/01/29 11:36:44 1.40 *************** *** 1,4 **** ! /* $OpenBSD: sock.c,v 1.39 2021/01/29 11:31:28 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * --- 1,4 ---- ! /* $OpenBSD: sock.c,v 1.40 2021/01/29 11:36:44 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * *************** *** 906,912 **** } return 0; } ! f->ctlslot = ctlslot_new(d, &sock_ctlops, f); if (f->ctlslot == NULL) { if (log_level >= 2) { sock_log(f); --- 906,915 ---- } return 0; } ! opt = opt_byname(d, p->opt); ! if (opt == NULL) ! return 0; ! f->ctlslot = ctlslot_new(opt, &sock_ctlops, f); if (f->ctlslot == NULL) { if (log_level >= 2) { sock_log(f); *************** *** 1264,1270 **** if (m->u.ctlsub.desc) { if (!(f->ctlops & SOCK_CTLDESC)) { ctl = f->ctlslot->self; ! c = f->ctlslot->dev->ctl_list; while (c != NULL) { c->desc_mask |= ctl; c = c->next; --- 1267,1273 ---- if (m->u.ctlsub.desc) { if (!(f->ctlops & SOCK_CTLDESC)) { ctl = f->ctlslot->self; ! c = f->ctlslot->opt->dev->ctl_list; while (c != NULL) { c->desc_mask |= ctl; c = c->next; *************** *** 1298,1304 **** sock_close(f); return 0; } ! if (!dev_setctl(f->ctlslot->dev, ntohs(m->u.ctlset.addr), ntohs(m->u.ctlset.val))) { #ifdef DEBUG --- 1301,1307 ---- sock_close(f); return 0; } ! if (!dev_setctl(f->ctlslot->opt->dev, ntohs(m->u.ctlset.addr), ntohs(m->u.ctlset.val))) { #ifdef DEBUG *************** *** 1552,1558 **** desc = f->ctldesc; mask = f->ctlslot->self; size = 0; ! pc = &f->ctlslot->dev->ctl_list; while ((c = *pc) != NULL) { if ((c->desc_mask & mask) == 0 || (c->refs_mask & mask) == 0) { --- 1555,1561 ---- desc = f->ctldesc; mask = f->ctlslot->self; size = 0; ! pc = &f->ctlslot->opt->dev->ctl_list; while ((c = *pc) != NULL) { if ((c->desc_mask & mask) == 0 || (c->refs_mask & mask) == 0) { *************** *** 1609,1615 **** } if (f->ctlslot && (f->ctlops & SOCK_CTLVAL)) { mask = f->ctlslot->self; ! for (c = f->ctlslot->dev->ctl_list; c != NULL; c = c->next) { if ((c->val_mask & mask) == 0) continue; c->val_mask &= ~mask; --- 1612,1618 ---- } if (f->ctlslot && (f->ctlops & SOCK_CTLVAL)) { mask = f->ctlslot->self; ! for (c = f->ctlslot->opt->dev->ctl_list; c != NULL; c = c->next) { if ((c->val_mask & mask) == 0) continue; c->val_mask &= ~mask;