mirror of
https://github.com/adulau/aha.git
synced 2025-01-01 05:36:24 +00:00
[DCCP]: Send Reset upon Sync in state REQUEST
This fixes the code to correspond to RFC 4340, 7.5.4, which states the exception that a Sync received in state REQUEST generates a Reset (not a SyncAck). To achieve this, only a small change is required. Since dccp_rcv_request_sent_state_process() already uses the correct Reset Code number 4 ("Packet Error"), we only need to shift the if-statement a few lines further down. (To test this case: replace DCCP_PKT_RESPONSE with DCCP_PKT_SYNC in dccp_make_response.) Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
This commit is contained in:
parent
53465eb4ab
commit
08831700cc
1 changed files with 3 additions and 5 deletions
|
@ -540,11 +540,6 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely(dh->dccph_type == DCCP_PKT_SYNC)) {
|
|
||||||
dccp_send_sync(sk, dcb->dccpd_seq, DCCP_PKT_SYNCACK);
|
|
||||||
goto discard;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (sk->sk_state) {
|
switch (sk->sk_state) {
|
||||||
case DCCP_CLOSED:
|
case DCCP_CLOSED:
|
||||||
dcb->dccpd_reset_code = DCCP_RESET_CODE_NO_CONNECTION;
|
dcb->dccpd_reset_code = DCCP_RESET_CODE_NO_CONNECTION;
|
||||||
|
@ -575,6 +570,9 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
|
||||||
sk_wake_async(sk, 0, POLL_OUT);
|
sk_wake_async(sk, 0, POLL_OUT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else if (unlikely(dh->dccph_type == DCCP_PKT_SYNC)) {
|
||||||
|
dccp_send_sync(sk, dcb->dccpd_seq, DCCP_PKT_SYNCACK);
|
||||||
|
goto discard;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!queued) {
|
if (!queued) {
|
||||||
|
|
Loading…
Reference in a new issue