diff options
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r-- | net/dccp/output.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c index e97584aa4898..b2e17910930d 100644 --- a/net/dccp/output.c +++ b/net/dccp/output.c | |||
@@ -567,8 +567,10 @@ void dccp_send_close(struct sock *sk, const int active) | |||
567 | 567 | ||
568 | /* Reserve space for headers and prepare control bits. */ | 568 | /* Reserve space for headers and prepare control bits. */ |
569 | skb_reserve(skb, sk->sk_prot->max_header); | 569 | skb_reserve(skb, sk->sk_prot->max_header); |
570 | DCCP_SKB_CB(skb)->dccpd_type = dp->dccps_role == DCCP_ROLE_CLIENT ? | 570 | if (dp->dccps_role == DCCP_ROLE_SERVER && !dp->dccps_server_timewait) |
571 | DCCP_PKT_CLOSE : DCCP_PKT_CLOSEREQ; | 571 | DCCP_SKB_CB(skb)->dccpd_type = DCCP_PKT_CLOSEREQ; |
572 | else | ||
573 | DCCP_SKB_CB(skb)->dccpd_type = DCCP_PKT_CLOSE; | ||
572 | 574 | ||
573 | if (active) { | 575 | if (active) { |
574 | dccp_write_xmit(sk, 1); | 576 | dccp_write_xmit(sk, 1); |