-+ /* Temporary hack for robustness against wrong xid values */
-+ if (((*pskb)->mark!=-1) && (*pskb)->mark && ct->xid[0]==-1 && (hooknum != NF_IP_LOCAL_IN))
-+ ct->xid[0]=(*pskb)->mark;
-+ if (ct->xid[0])
-+ mark = ct->xid[0];
++ if ((*pskb)->mark>0) /* The packet is marked, it's going out */
++ {
++ if (ct->xid[0]>0 && ct->xid[0]!=(*pskb)->mark && hooknum==NF_IP_LOCAL_IN) {
++ /* Neil Spring's bug. */
++ printk(KERN_CRIT "Neil Spring's bug\n");
++ break;
++ }
++ else
++ ct->xid[0]=(*pskb)->mark;
++ }