SBLASTMBUFCHK(sb, __func__);
sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n){	int eor = 0;	struct mbuf *o;	while (m) {		eor |= m->m_flags & M_EOR;		if (m->m_len == 0 &&		    (eor == 0 ||		    (((o = m->m_next) || (o = n)) &&		    o->m_type == m->m_type))) {			m = m_free(m);			continue;		}		if (n && (n->m_flags & M_EOR) == 0 &&		    /* M_TRAILINGSPACE() checks buffer writeability */		    m->m_len <= MCLBYTES / 4 && /* XXX Don't copy too much */		    m->m_len <= M_TRAILINGSPACE(n) &&		    n->m_type == m->m_type) {			bcopy(mtod(m, caddr_t), mtod(n, caddr_t) + n->m_len,			    (unsigned)m->m_len);			n->m_len += m->m_len;			sb->sb_cc += m->m_len;			m = m_free(m);			continue;		}		if (n)			n->m_next = m;		else			sb->sb_mb = m;		sballoc(sb, m);		n = m;		m->m_flags &= ~M_EOR;		m = m->m_next;		n->m_next = 0;	}	if (eor) {		if (n)			n->m_flags |= eor;		else			printf("semi-panic: sbcompress\n");	}}