Skip to content

Commit 19bc88b

Browse files
Mygodzonyitoo
authored andcommitted
Log detected replay instead of dropping the connection
1 parent 9ce69e5 commit 19bc88b

File tree

3 files changed

+7
-19
lines changed

3 files changed

+7
-19
lines changed

crates/shadowsocks/src/relay/tcprelay/aead.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use std::{
4343
use byte_string::ByteStr;
4444
use bytes::{BufMut, Bytes, BytesMut};
4545
use futures::ready;
46-
use log::trace;
46+
use log::{trace, warn};
4747
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
4848

4949
use crate::{
@@ -223,12 +223,7 @@ impl DecryptedReader {
223223
let salt = self.salt.take().unwrap();
224224

225225
if context.check_nonce_and_set(&salt) {
226-
use std::io::Error;
227-
228-
trace!("detected repeated AEAD salt {:?}", ByteStr::new(&salt));
229-
230-
let err = Error::new(ErrorKind::Other, "detected repeated salt");
231-
return Err(err).into();
226+
warn!("detected repeated AEAD salt {:?}", ByteStr::new(&salt));
232227
}
233228
}
234229

crates/shadowsocks/src/relay/tcprelay/stream.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::{
1010
use byte_string::ByteStr;
1111
use bytes::{BufMut, Bytes, BytesMut};
1212
use futures::ready;
13-
use log::trace;
13+
use log::{trace, warn};
1414
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
1515

1616
use crate::{
@@ -113,12 +113,7 @@ impl DecryptedReader {
113113

114114
let iv = &self.buffer[..iv_len];
115115
if context.check_nonce_and_set(&iv) {
116-
use std::io::Error;
117-
118-
trace!("detected repeated stream iv {:?}", ByteStr::new(&iv));
119-
120-
let err = Error::new(ErrorKind::Other, "detected repeated iv");
121-
return Err(err).into();
116+
warn!("detected repeated stream iv {:?}", ByteStr::new(&iv));
122117
}
123118

124119
trace!("got stream iv {:?}", ByteStr::new(iv));

crates/shadowsocks/src/relay/udprelay/crypto_io.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use std::io::{self, Cursor, ErrorKind};
2323

2424
use byte_string::ByteStr;
2525
use bytes::{BufMut, BytesMut};
26-
use log::{debug, trace};
26+
use log::{trace, warn};
2727

2828
use crate::{
2929
context::Context,
@@ -182,8 +182,7 @@ async fn decrypt_payload_stream(
182182

183183
let (iv, data) = payload.split_at_mut(iv_len);
184184
if context.check_nonce_and_set(iv) {
185-
debug!("detected repeated iv {:?}", ByteStr::new(iv));
186-
return Err(io::Error::new(io::ErrorKind::Other, "detected repeated iv"));
185+
warn!("detected repeated iv {:?}", ByteStr::new(iv));
187186
}
188187

189188
trace!("UDP packet got stream IV {:?}", ByteStr::new(iv));
@@ -215,8 +214,7 @@ async fn decrypt_payload_aead(
215214

216215
let (salt, data) = payload.split_at_mut(salt_len);
217216
if context.check_nonce_and_set(salt) {
218-
debug!("detected repeated salt {:?}", ByteStr::new(salt));
219-
return Err(io::Error::new(io::ErrorKind::Other, "detected repeated salt"));
217+
warn!("detected repeated salt {:?}", ByteStr::new(salt));
220218
}
221219

222220
trace!("UDP packet got AEAD salt {:?}", ByteStr::new(salt));

0 commit comments

Comments
 (0)