- if (controlp && (error = tp_snd_control(controlp, so, &m)))
- break;
- if (so->so_state & SS_ISCONFIRMING) {
- if (tpcb->tp_state == TP_CONFIRMING)
- error = tp_confirm(tpcb);
- if (m) {
- if (error == 0 && m->m_len != 0)
- error = ENOTCONN;
- m_freem(m);
- m = 0;
- }
+ if (controlp) {
+ error = tp_snd_control(controlp, so, &m);
+ controlp = NULL;
+ if (error)
+ break;
+ }
+ if ((so->so_state & SS_ISCONFIRMING) &&
+ (tpcb->tp_state == TP_CONFIRMING) &&
+ (error = tp_confirm(tpcb)))
+ break;
+ if (req == PRU_SENDOOB) {
+ error = (tpcb->tp_xpd_service == 0) ?
+ EOPNOTSUPP : tp_sendoob(tpcb, so, m, outflags);