Refine error levels

This commit is contained in:
Max Lv
2016-09-27 12:11:37 +08:00
parent 248fdcb610
commit 34fe1a71a6
3 changed files with 23 additions and 18 deletions
+14 -14
View File
@@ -299,7 +299,7 @@ get_peer_name(int fd)
}
static void
report_addr(int fd)
report_addr(int fd, int err_level)
{
char *peer_name;
peer_name = get_peer_name(fd);
@@ -307,7 +307,7 @@ report_addr(int fd)
LOGE("failed to handshake with %s", peer_name);
}
// Block all requests from this IP, if the err# exceeds 128.
if (check_block_list(peer_name, 128)) {
if (check_block_list(peer_name, err_level)) {
LOGE("block all requests from %s", peer_name);
}
}
@@ -610,7 +610,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
if (err) {
LOGE("invalid password or cipher");
report_addr(server->fd);
report_addr(server->fd, ATTACK);
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
return;
@@ -652,7 +652,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
if (server->stage == 5) {
if (server->auth && !ss_check_hash(remote->buf, server->chunk, server->d_ctx, BUF_SIZE)) {
LOGE("hash error");
report_addr(server->fd);
report_addr(server->fd, BAD);
close_and_free_server(EV_A_ server);
close_and_free_remote(EV_A_ remote);
return;
@@ -721,14 +721,14 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
size_t len = server->buf->len;
if (len < offset + header_len + ONETIMEAUTH_BYTES) {
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
server->buf->len = offset + header_len + ONETIMEAUTH_BYTES;
if (ss_onetimeauth_verify(server->buf, server->d_ctx->evp.iv)) {
report_addr(server->fd);
report_addr(server->fd, BAD);
close_and_free_server(EV_A_ server);
return;
}
@@ -750,7 +750,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
offset += in_addr_len;
} else {
LOGE("invalid header with addr type %d", atyp);
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
@@ -768,7 +768,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
offset += name_len + 1;
} else {
LOGE("invalid name length: %d", name_len);
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
@@ -796,7 +796,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
} else {
if (!validate_hostname(host, name_len)) {
LOGE("invalid host name");
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
@@ -814,7 +814,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
offset += in6_addr_len;
} else {
LOGE("invalid header with addr type %d", atyp);
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
@@ -828,7 +828,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
if (offset == 1) {
LOGE("invalid header with addr type %d", atyp);
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
}
@@ -842,7 +842,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
}
if (server->buf->len < offset) {
report_addr(server->fd);
report_addr(server->fd, MALFORMED);
close_and_free_server(EV_A_ server);
return;
} else {
@@ -859,7 +859,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
if (server->auth && !ss_check_hash(server->buf, server->chunk, server->d_ctx, BUF_SIZE)) {
LOGE("hash error");
report_addr(server->fd);
report_addr(server->fd, BAD);
close_and_free_server(EV_A_ server);
return;
}
@@ -990,7 +990,7 @@ server_timeout_cb(EV_P_ ev_timer *watcher, int revents)
LOGI("incomplete header: %zu", len);
#endif
}
report_addr(server->fd);
report_addr(server->fd, ATTACK);
}
close_and_free_remote(EV_A_ remote);