@@ -24,7 +24,13 @@ class DnsMonitorType extends MonitorType {
2424 let dnsMessage = "" ;
2525
2626 const resolverServers = await this . resolveDnsResolverServers ( monitor . dns_resolve_server ) ;
27- let dnsRes = await this . dnsResolve ( monitor . hostname , resolverServers , monitor . port , monitor . dns_resolve_type ) ;
27+ let dnsRes = await this . dnsResolve (
28+ monitor . hostname ,
29+ resolverServers ,
30+ monitor . port ,
31+ monitor . dns_resolve_type ,
32+ monitor . timeout != null ? monitor . timeout * 1000 : 5000
33+ ) ;
2834 heartbeat . ping = dayjs ( ) . valueOf ( ) - startTime ;
2935
3036 const conditions = ConditionExpressionGroup . fromMonitor ( monitor ) ;
@@ -169,10 +175,11 @@ class DnsMonitorType extends MonitorType {
169175 * @param {string[] } resolverServer Array of DNS server IP addresses to use
170176 * @param {string } resolverPort Port the DNS server is listening on
171177 * @param {string } rrtype The type of record to request
178+ * @param {number } timeout Timeout in milliseconds for the DNS query (defaults to c-ares default of 5000ms)
172179 * @returns {Promise<(string[] | object[] | object)> } DNS response
173180 */
174- async dnsResolve ( hostname , resolverServer , resolverPort , rrtype ) {
175- const resolver = new Resolver ( ) ;
181+ async dnsResolve ( hostname , resolverServer , resolverPort , rrtype , timeout = 5000 ) {
182+ const resolver = new Resolver ( { timeout } ) ;
176183 resolver . setServers ( resolverServer . map ( ( server ) => `[${ server } ]:${ resolverPort } ` ) ) ;
177184 if ( rrtype === "PTR" ) {
178185 return await resolver . reverse ( hostname ) ;
0 commit comments