|  |  | @ -45,15 +45,30 @@ exports.tcping = function (hostname, port) { | 
			
		
	
		
			
				
					|  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | exports.ping = function (hostname) { | 
			
		
	
		
			
				
					|  |  |  | exports.ping = async (hostname) => { | 
			
		
	
		
			
				
					|  |  |  |     try { | 
			
		
	
		
			
				
					|  |  |  |         await exports.pingAsync(hostname); | 
			
		
	
		
			
				
					|  |  |  |     } catch (e) { | 
			
		
	
		
			
				
					|  |  |  |         // If the host cannot be resolved, try again with ipv6
 | 
			
		
	
		
			
				
					|  |  |  |         if (e.message.includes("service not known")) { | 
			
		
	
		
			
				
					|  |  |  |             await exports.pingAsync(hostname, true); | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |             throw e; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | exports.pingAsync = function (hostname, ipv6 = false) { | 
			
		
	
		
			
				
					|  |  |  |     return new Promise((resolve, reject) => { | 
			
		
	
		
			
				
					|  |  |  |         const ping = new Ping(hostname); | 
			
		
	
		
			
				
					|  |  |  |         const ping = new Ping(hostname, { | 
			
		
	
		
			
				
					|  |  |  |             ipv6 | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         ping.send(function (err, ms) { | 
			
		
	
		
			
				
					|  |  |  |         ping.send(function (err, ms, stdout) { | 
			
		
	
		
			
				
					|  |  |  |             if (err) { | 
			
		
	
		
			
				
					|  |  |  |                 reject(err) | 
			
		
	
		
			
				
					|  |  |  |                 reject(err); | 
			
		
	
		
			
				
					|  |  |  |             } else if (ms === null) { | 
			
		
	
		
			
				
					|  |  |  |                 reject(new Error("timeout")) | 
			
		
	
		
			
				
					|  |  |  |                 reject(new Error(stdout)) | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 resolve(Math.round(ms)) | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  | 
 |