optimize tcp log
This commit is contained in:
@@ -547,10 +547,10 @@ static int _dns_result_callback(struct dns_request *request)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(ip, "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x",
|
sprintf(ip, "%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x:%.2x%.2x", request->ipv6_addr[0], request->ipv6_addr[1],
|
||||||
request->ipv6_addr[0], request->ipv6_addr[1], request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5],
|
request->ipv6_addr[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], request->ipv6_addr[6], request->ipv6_addr[7],
|
||||||
request->ipv6_addr[6], request->ipv6_addr[7], request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11],
|
request->ipv6_addr[8], request->ipv6_addr[9], request->ipv6_addr[10], request->ipv6_addr[11], request->ipv6_addr[12], request->ipv6_addr[13],
|
||||||
request->ipv6_addr[12], request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]);
|
request->ipv6_addr[14], request->ipv6_addr[15]);
|
||||||
|
|
||||||
return request->result_callback(request->domain, request->rcode, request->qtype, ip, request->user_ptr);
|
return request->result_callback(request->domain, request->rcode, request->qtype, ip, request->user_ptr);
|
||||||
}
|
}
|
||||||
@@ -1638,6 +1638,7 @@ static int _dns_server_recv(struct dns_server_conn *client, unsigned char *inpac
|
|||||||
|
|
||||||
/* get client request address type */
|
/* get client request address type */
|
||||||
if (_dns_recv_addr(request, from, from_len) != 0) {
|
if (_dns_recv_addr(request, from, from_len) != 0) {
|
||||||
|
tlog(TLOG_ERROR, "get client address failed.");
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1739,6 +1740,7 @@ static int _dns_server_recv(struct dns_server_conn *client, unsigned char *inpac
|
|||||||
_dns_server_request_release(request);
|
_dns_server_request_release(request);
|
||||||
_dns_server_request_remove(request);
|
_dns_server_request_remove(request);
|
||||||
request = NULL;
|
request = NULL;
|
||||||
|
tlog(TLOG_ERROR, "send dns request failed.");
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1890,7 +1892,7 @@ int dns_server_query(char *domain, int qtype, dns_result_callback callback, void
|
|||||||
clean_exit:
|
clean_exit:
|
||||||
return ret;
|
return ret;
|
||||||
errout:
|
errout:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _dns_server_client_touch(struct dns_server_conn *client)
|
static void _dns_server_client_touch(struct dns_server_conn *client)
|
||||||
@@ -1922,11 +1924,13 @@ static int _dns_server_accept(struct dns_server_conn *dnsserver, struct epoll_ev
|
|||||||
|
|
||||||
fd = accept4(dnsserver->fd, (struct sockaddr *)&addr, &addr_len, SOCK_NONBLOCK | SOCK_CLOEXEC);
|
fd = accept4(dnsserver->fd, (struct sockaddr *)&addr, &addr_len, SOCK_NONBLOCK | SOCK_CLOEXEC);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
|
tlog(TLOG_ERROR, "accept failed, %s", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
client = malloc(sizeof(*client));
|
client = malloc(sizeof(*client));
|
||||||
if (client == NULL) {
|
if (client == NULL) {
|
||||||
|
tlog(TLOG_ERROR, "malloc for client failed.");
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1978,9 +1982,10 @@ static int _dns_server_tcp_recv(struct dns_server_conn *dnsserver)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tlog(TLOG_ERROR, "recv failed, %s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
} else if (len == 0) {
|
} else if (len == 0) {
|
||||||
return -1;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
dnsserver->recvbuff.size += len;
|
dnsserver->recvbuff.size += len;
|
||||||
@@ -2047,6 +2052,10 @@ static int _dns_server_tcp_process_requests(struct dns_server_conn *client)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
recv_ret = _dns_server_tcp_recv(client);
|
recv_ret = _dns_server_tcp_recv(client);
|
||||||
if (recv_ret < 0) {
|
if (recv_ret < 0) {
|
||||||
|
if (recv_ret == -2) {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
if (client->recvbuff.size > 0) {
|
if (client->recvbuff.size > 0) {
|
||||||
is_eof = 1;
|
is_eof = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -2057,6 +2066,7 @@ static int _dns_server_tcp_process_requests(struct dns_server_conn *client)
|
|||||||
request_ret = _dns_server_tcp_process_one_request(client);
|
request_ret = _dns_server_tcp_process_one_request(client);
|
||||||
if (request_ret < 0) {
|
if (request_ret < 0) {
|
||||||
/* failed */
|
/* failed */
|
||||||
|
tlog(TLOG_ERROR, "process one request failed.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2104,13 +2114,19 @@ static int _dns_server_tcp_send(struct dns_server_conn *client)
|
|||||||
|
|
||||||
static int _dns_server_process_tcp(struct dns_server_conn *dnsserver, struct epoll_event *event, unsigned long now)
|
static int _dns_server_process_tcp(struct dns_server_conn *dnsserver, struct epoll_event *event, unsigned long now)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
if (dnsserver == &server.tcp_server) {
|
if (dnsserver == &server.tcp_server) {
|
||||||
return _dns_server_accept(dnsserver, event, now);
|
return _dns_server_accept(dnsserver, event, now);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->events & EPOLLIN) {
|
if (event->events & EPOLLIN) {
|
||||||
if (_dns_server_tcp_process_requests(dnsserver) != 0) {
|
ret = _dns_server_tcp_process_requests(dnsserver);
|
||||||
|
if (ret != 0) {
|
||||||
_dns_server_client_close(dnsserver);
|
_dns_server_client_close(dnsserver);
|
||||||
|
if (ret == -2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
tlog(TLOG_ERROR, "process tcp request failed.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2118,6 +2134,7 @@ static int _dns_server_process_tcp(struct dns_server_conn *dnsserver, struct epo
|
|||||||
if (event->events & EPOLLOUT) {
|
if (event->events & EPOLLOUT) {
|
||||||
if (_dns_server_tcp_send(dnsserver) != 0) {
|
if (_dns_server_tcp_send(dnsserver) != 0) {
|
||||||
_dns_server_client_close(dnsserver);
|
_dns_server_client_close(dnsserver);
|
||||||
|
tlog(TLOG_ERROR, "send tcp failed.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2133,8 +2150,10 @@ static int _dns_server_process(struct dns_server_conn *dnsserver, struct epoll_e
|
|||||||
} else if (dnsserver->type == DNS_SERVER_TCP) {
|
} else if (dnsserver->type == DNS_SERVER_TCP) {
|
||||||
return _dns_server_process_tcp(dnsserver, event, now);
|
return _dns_server_process_tcp(dnsserver, event, now);
|
||||||
} else if (dnsserver->type == DNS_SERVER_TLS) {
|
} else if (dnsserver->type == DNS_SERVER_TLS) {
|
||||||
|
tlog(TLOG_ERROR, "unsupport dns server type %d", dnsserver->type);
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
|
tlog(TLOG_ERROR, "unsupport dns server type %d", dnsserver->type);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2235,7 +2254,7 @@ static void _dns_server_period_run_second(void)
|
|||||||
dns_cache_invalidate(NULL, 0);
|
dns_cache_invalidate(NULL, 0);
|
||||||
tlog(TLOG_WARN, "Service paused for 180s, force invalidate cache.");
|
tlog(TLOG_WARN, "Service paused for 180s, force invalidate cache.");
|
||||||
}
|
}
|
||||||
|
|
||||||
last = now;
|
last = now;
|
||||||
|
|
||||||
if (sec % 2 == 0) {
|
if (sec % 2 == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user