dns_server: make the TTL of the first request to 2s & fix hostname issue.
This commit is contained in:
@@ -1566,6 +1566,7 @@ static int _dns_server_force_dualstack(struct dns_request *request)
|
|||||||
static int _dns_server_request_complete(struct dns_request *request)
|
static int _dns_server_request_complete(struct dns_request *request)
|
||||||
{
|
{
|
||||||
int ttl = DNS_SERVER_TMOUT_TTL;
|
int ttl = DNS_SERVER_TMOUT_TTL;
|
||||||
|
int reply_ttl = ttl;
|
||||||
|
|
||||||
if (request->rcode == DNS_RC_SERVFAIL || request->rcode == DNS_RC_NXDOMAIN) {
|
if (request->rcode == DNS_RC_SERVFAIL || request->rcode == DNS_RC_NXDOMAIN) {
|
||||||
ttl = DNS_SERVER_FAIL_TTL;
|
ttl = DNS_SERVER_FAIL_TTL;
|
||||||
@@ -1617,6 +1618,15 @@ out:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reply_ttl = ttl;
|
||||||
|
if (request->passthrough == 0 && dns_conf_cachesize > 0 &&
|
||||||
|
request->check_order_list->orders[0].type != DOMAIN_CHECK_NONE) {
|
||||||
|
reply_ttl = dns_conf_serve_expired_reply_ttl;
|
||||||
|
if (reply_ttl < 2) {
|
||||||
|
reply_ttl = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct dns_server_post_context context;
|
struct dns_server_post_context context;
|
||||||
_dns_server_post_context_init(&context, request);
|
_dns_server_post_context_init(&context, request);
|
||||||
context.do_cache = 1;
|
context.do_cache = 1;
|
||||||
@@ -1624,7 +1634,7 @@ out:
|
|||||||
context.do_force_soa = request->dualstack_selection_force_soa;
|
context.do_force_soa = request->dualstack_selection_force_soa;
|
||||||
context.do_audit = 1;
|
context.do_audit = 1;
|
||||||
context.do_reply = 1;
|
context.do_reply = 1;
|
||||||
context.reply_ttl = ttl;
|
context.reply_ttl = reply_ttl;
|
||||||
context.skip_notify_count = 1;
|
context.skip_notify_count = 1;
|
||||||
|
|
||||||
_dns_request_post(&context);
|
_dns_request_post(&context);
|
||||||
@@ -3023,7 +3033,7 @@ static int _dns_server_reply_request_eth_ip(struct dns_request *request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
request->rcode = DNS_RC_NOERROR;
|
request->rcode = DNS_RC_NOERROR;
|
||||||
request->ip_ttl = 600;
|
request->ip_ttl = dns_conf_local_ttl;
|
||||||
request->has_ip = 1;
|
request->has_ip = 1;
|
||||||
|
|
||||||
struct dns_server_post_context context;
|
struct dns_server_post_context context;
|
||||||
@@ -3813,10 +3823,6 @@ static int _dns_server_process_special_query(struct dns_request *request)
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (_dns_server_process_smartdns_domain(request) == 0) {
|
|
||||||
goto clean_exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (request->qtype) {
|
switch (request->qtype) {
|
||||||
case DNS_T_PTR:
|
case DNS_T_PTR:
|
||||||
/* return PTR record */
|
/* return PTR record */
|
||||||
@@ -4057,6 +4063,10 @@ static int _dns_server_do_query(struct dns_request *request)
|
|||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_dns_server_process_smartdns_domain(request) == 0) {
|
||||||
|
goto clean_exit;
|
||||||
|
}
|
||||||
|
|
||||||
if (_dns_server_process_host(request) == 0) {
|
if (_dns_server_process_host(request) == 0) {
|
||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user