mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-28 19:53:46 +00:00
apply onetime auth to the first packet
This commit is contained in:
+6
-2
@@ -473,8 +473,6 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
if (!remote->direct) {
|
||||
if (auth) {
|
||||
ss_addr_to_send[0] |= ONETIMEAUTH_FLAG;
|
||||
ss_onetimeauth(ss_addr_to_send + addr_len, ss_addr_to_send, addr_len);
|
||||
addr_len += ONETIMEAUTH_BYTES;
|
||||
}
|
||||
|
||||
memcpy(remote->buf, ss_addr_to_send, addr_len);
|
||||
@@ -482,6 +480,12 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
memcpy(remote->buf + addr_len, buf, r);
|
||||
}
|
||||
r += addr_len;
|
||||
|
||||
if (auth) {
|
||||
ss_onetimeauth(remote->buf + r, remote->buf, r);
|
||||
r += ONETIMEAUTH_BYTES;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (r > 0) {
|
||||
memcpy(remote->buf, buf, r);
|
||||
|
||||
+2
-2
@@ -641,13 +641,13 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
offset += 2;
|
||||
|
||||
if (auth || (atyp & ONETIMEAUTH_MASK)) {
|
||||
if (ss_onetimeauth_verify(server->buf + offset, server->buf, offset)) {
|
||||
r -= ONETIMEAUTH_BYTES;
|
||||
if (ss_onetimeauth_verify(server->buf + r, server->buf, r)) {
|
||||
LOGE("authentication error %d", atyp);
|
||||
report_addr(server->fd);
|
||||
close_and_free_server(EV_A_ server);
|
||||
return;
|
||||
};
|
||||
offset += ONETIMEAUTH_BYTES;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
|
||||
Reference in New Issue
Block a user