mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-11-01 03:49:24 +08:00 
			
		
		
		
	Fix/axios abort signal for 1.23.X (#3971)
* Fix: Add axios abort signal * Chore: Fix comment --------- Co-authored-by: Nelson Chan <chakflying@hotmail.com>
This commit is contained in:
		| @@ -6,7 +6,7 @@ const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger, MAX_INTERVA | ||||
|     SQL_DATETIME_FORMAT, isDev, sleep, getRandomInt | ||||
| } = require("../../src/util"); | ||||
| const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery, | ||||
|     redisPingAsync, mongodbPing, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints | ||||
|     redisPingAsync, mongodbPing, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints, axiosAbortSignal | ||||
| } = require("../util-server"); | ||||
| const { R } = require("redbean-node"); | ||||
| const { BeanModel } = require("redbean-node/dist/bean-model"); | ||||
| @@ -475,6 +475,7 @@ class Monitor extends BeanModel { | ||||
|                         validateStatus: (status) => { | ||||
|                             return checkStatusCode(status, this.getAcceptedStatuscodes()); | ||||
|                         }, | ||||
|                         signal: axiosAbortSignal(this.timeout * 1000), | ||||
|                     }; | ||||
|  | ||||
|                     if (bodyValue) { | ||||
|   | ||||
| @@ -1124,3 +1124,26 @@ if (process.env.TEST_BACKEND) { | ||||
|         return module.exports.__test[functionName]; | ||||
|     }; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Generates an abort signal with the specified timeout. | ||||
|  * @param {number} timeoutMs - The timeout in milliseconds. | ||||
|  * @returns {AbortSignal | null} - The generated abort signal, or null if not supported. | ||||
|  */ | ||||
| module.exports.axiosAbortSignal = (timeoutMs) => { | ||||
|     try { | ||||
|         return AbortSignal.timeout(timeoutMs); | ||||
|     } catch (_) { | ||||
|         // v16-: AbortSignal.timeout is not supported | ||||
|         try { | ||||
|             const abortController = new AbortController(); | ||||
|  | ||||
|             setTimeout(() => abortController.abort(), timeoutMs || 0); | ||||
|  | ||||
|             return abortController.signal; | ||||
|         } catch (_) { | ||||
|             // v15-: AbortController is not supported | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user