This commit is contained in:
Max Lv
2016-10-02 13:37:45 +08:00
parent e0d6dd8f3c
commit efafb59647
7 changed files with 45 additions and 21 deletions
+19 -6
View File
@@ -298,6 +298,16 @@ get_peer_name(int fd)
return peer_name;
}
static void
reset_addr(int fd)
{
char *peer_name;
peer_name = get_peer_name(fd);
if (peer_name != NULL) {
remove_from_block_list(peer_name);
}
}
static void
report_addr(int fd, int err_level)
{
@@ -305,10 +315,10 @@ report_addr(int fd, int err_level)
peer_name = get_peer_name(fd);
if (peer_name != NULL) {
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, err_level)) {
LOGE("add %s to block list", peer_name);
// Block all requests from this IP, if the err# exceeds 128.
if (check_block_list(peer_name, err_level)) {
LOGE("add %s to block list", peer_name);
}
}
}
@@ -983,7 +993,7 @@ server_timeout_cb(EV_P_ ev_timer *watcher, int revents)
if (server->stage < 2) {
if (verbose) {
size_t len = server->stage ?
server->header_buf->len : server->buf->len;
server->header_buf->len : server->buf->len;
#ifdef __MINGW32__
LOGI("incomplete header: %u", len);
#else
@@ -1166,6 +1176,9 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
}
remote_send_ctx->connected = 1;
// Clear the state of this address in the block list
reset_addr(server->fd);
if (remote->buf->len == 0) {
server->stage = 5;
ev_io_stop(EV_A_ & remote_send_ctx->io);
@@ -1429,7 +1442,7 @@ accept_cb(EV_P_ ev_io *w, int revents)
}
if (acl) {
if ((get_acl_mode() == BLACK_LIST && acl_match_host(peer_name) == 1)
|| (get_acl_mode() == WHITE_LIST && acl_match_host(peer_name) >= 0)) {
|| (get_acl_mode() == WHITE_LIST && acl_match_host(peer_name) >= 0)) {
LOGE("Access denied from %s", peer_name);
close(serverfd);
return;