optimize tcp log

This commit is contained in:
Nick Peng
2019-04-03 23:59:23 +08:00
parent 2da93e6420
commit 94ab84444a

View File

@@ -547,10 +547,10 @@ static int _dns_result_callback(struct dns_request *request)
goto out;
}
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[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5],
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[12], request->ipv6_addr[13], request->ipv6_addr[14], request->ipv6_addr[15]);
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[2], request->ipv6_addr[3], request->ipv6_addr[4], request->ipv6_addr[5], 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[12], request->ipv6_addr[13],
request->ipv6_addr[14], request->ipv6_addr[15]);
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 */
if (_dns_recv_addr(request, from, from_len) != 0) {
tlog(TLOG_ERROR, "get client address failed.");
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_remove(request);
request = NULL;
tlog(TLOG_ERROR, "send dns request failed.");
goto errout;
}
@@ -1890,7 +1892,7 @@ int dns_server_query(char *domain, int qtype, dns_result_callback callback, void
clean_exit:
return ret;
errout:
return ret;
return ret;
}
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);
if (fd < 0) {
tlog(TLOG_ERROR, "accept failed, %s", strerror(errno));
return -1;
}
client = malloc(sizeof(*client));
if (client == NULL) {
tlog(TLOG_ERROR, "malloc for client failed.");
goto errout;
}
@@ -1978,9 +1982,10 @@ static int _dns_server_tcp_recv(struct dns_server_conn *dnsserver)
return 1;
}
tlog(TLOG_ERROR, "recv failed, %s\n", strerror(errno));
return -1;
} else if (len == 0) {
return -1;
return -2;
}
dnsserver->recvbuff.size += len;
@@ -2047,6 +2052,10 @@ static int _dns_server_tcp_process_requests(struct dns_server_conn *client)
for (;;) {
recv_ret = _dns_server_tcp_recv(client);
if (recv_ret < 0) {
if (recv_ret == -2) {
return -2;
}
if (client->recvbuff.size > 0) {
is_eof = 1;
} 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);
if (request_ret < 0) {
/* failed */
tlog(TLOG_ERROR, "process one request failed.");
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)
{
int ret = 0;
if (dnsserver == &server.tcp_server) {
return _dns_server_accept(dnsserver, event, now);
}
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);
if (ret == -2) {
return 0;
}
tlog(TLOG_ERROR, "process tcp request failed.");
return -1;
}
}
@@ -2118,6 +2134,7 @@ static int _dns_server_process_tcp(struct dns_server_conn *dnsserver, struct epo
if (event->events & EPOLLOUT) {
if (_dns_server_tcp_send(dnsserver) != 0) {
_dns_server_client_close(dnsserver);
tlog(TLOG_ERROR, "send tcp failed.");
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) {
return _dns_server_process_tcp(dnsserver, event, now);
} else if (dnsserver->type == DNS_SERVER_TLS) {
tlog(TLOG_ERROR, "unsupport dns server type %d", dnsserver->type);
return -1;
} else {
tlog(TLOG_ERROR, "unsupport dns server type %d", dnsserver->type);
return -1;
}
}
@@ -2235,7 +2254,7 @@ static void _dns_server_period_run_second(void)
dns_cache_invalidate(NULL, 0);
tlog(TLOG_WARN, "Service paused for 180s, force invalidate cache.");
}
last = now;
if (sec % 2 == 0) {