aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r--net/dccp/output.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 1b3168307586..bfda071559f4 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -305,6 +305,8 @@ void dccp_write_xmit(struct sock *sk, int block)
305 if (err) 305 if (err)
306 DCCP_BUG("err=%d after ccid_hc_tx_packet_sent", 306 DCCP_BUG("err=%d after ccid_hc_tx_packet_sent",
307 err); 307 err);
308 if (dp->dccps_sync_scheduled)
309 dccp_send_sync(sk, dp->dccps_gsr, DCCP_PKT_SYNC);
308 } else { 310 } else {
309 dccp_pr_debug("packet discarded due to err=%d\n", err); 311 dccp_pr_debug("packet discarded due to err=%d\n", err);
310 kfree_skb(skb); 312 kfree_skb(skb);
@@ -591,6 +593,12 @@ void dccp_send_sync(struct sock *sk, const u64 ackno,
591 DCCP_SKB_CB(skb)->dccpd_type = pkt_type; 593 DCCP_SKB_CB(skb)->dccpd_type = pkt_type;
592 DCCP_SKB_CB(skb)->dccpd_ack_seq = ackno; 594 DCCP_SKB_CB(skb)->dccpd_ack_seq = ackno;
593 595
596 /*
597 * Clear the flag in case the Sync was scheduled for out-of-band data,
598 * such as carrying a long Ack Vector.
599 */
600 dccp_sk(sk)->dccps_sync_scheduled = 0;
601
594 dccp_transmit_skb(sk, skb); 602 dccp_transmit_skb(sk, skb);
595} 603}
596 604