When the code calls uncork, trigger a queue flush, even if the queue was not corked. Most callers that explicitly cork the queue will have additional checks to see if they corked it. Callers who do not cork the queue expect packets to flow when they call uncork.
The scenario that showcased this bug happened when we were not able to bundle DATA with outgoing COOKIE-ECHO. As a result the data just sat in the outqueue and did not get transmitted. The application expected a response, but nothing happened. Signed-off-by: Vlad Yasevich <[EMAIL PROTECTED]> --- net/sctp/outqueue.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 99a3db5..fa76f23 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -662,10 +662,9 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, int sctp_outq_uncork(struct sctp_outq *q) { int error = 0; - if (q->cork) { + if (q->cork) q->cork = 0; - error = sctp_outq_flush(q, 0); - } + error = sctp_outq_flush(q, 0); return error; } -- 1.5.2.4 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html