X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=net%2Fsctp%2Foutqueue.c;h=c0380cfb16ae4eb77bdab457e8310c0cb15a1c4a;hb=c1a9a291cee0890eb0f435243f3fb84fefb04348;hp=7e8f0a117106cabbf043e24e33f56b307cf4fc88;hpb=36d07e3ac7533d5029f74001a89d61eb18064421;p=deliverable%2Flinux.git diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 7e8f0a117106..c0380cfb16ae 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -324,6 +324,7 @@ int sctp_outq_tail(struct sctp_outq *q, struct sctp_chunk *chunk) sctp_cname(SCTP_ST_CHUNK(chunk->chunk_hdr->type)) : "illegal chunk"); + sctp_chunk_hold(chunk); sctp_outq_tail_data(q, chunk); if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) SCTP_INC_STATS(net, SCTP_MIB_OUTUNORDERCHUNKS); @@ -1251,6 +1252,7 @@ int sctp_outq_sack(struct sctp_outq *q, struct sctp_chunk *chunk) */ sack_a_rwnd = ntohl(sack->a_rwnd); + asoc->peer.zero_window_announced = !sack_a_rwnd; outstanding = q->outstanding_bytes; if (outstanding < sack_a_rwnd)