This urg flag in many segments is expected to happen (the urg pointer
might not point to the current segment but something that will follow)...
...but I've hard time believing that this true since the the only place
where urg_ptr is assigned is in tcp_output.c and that's done relative
to segments seqno:
th->urg_ptr = htons(tp->snd_up - tcb->seq);
So if what you say is true, it means that snd_up should advance equally
to the segments seqno. Which means that writes would update it.
Can you prove that your application is doing what you describe, I suspect
that you e.g., forget to clear MSG_OOB... Can you strace the program
please... Getting a tcpdump at the same time wouldn't hurt either.
I've tried with this exact sequence recently (though after the rewrite of
urg handling for 2.6.28), and did get a nicely working urg after fixing
the bug that got introduced by the rewrite and just a single sigurg. It
seems that I've lost that tcpdump somewhere though. I was using sendfile
though for the normal data while you might not be doing the same.
--
i.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html