Compare commits

..

1 Commits

Author SHA1 Message Date
Ferenc Hammerl 91d3933eb5 Prepend http:// to http(s)_proxy env if missing (#1439)
* Prepend http:// to http(s)_proxy env if missing

* Formatting

* Fix linting
2023-06-22 11:03:38 +02:00
3 changed files with 13 additions and 40 deletions
+1 -39
View File
@@ -37,12 +37,9 @@ export class DownloadProgress {
segmentSize: number
segmentOffset: number
receivedBytes: number
previouslyReceivedBytes: number
lastTimeOfNewBytes?: number
startTime: number
displayedComplete: boolean
timeoutHandle?: ReturnType<typeof setTimeout>
abortController?: AbortController
constructor(contentLength: number) {
this.contentLength = contentLength
@@ -50,11 +47,8 @@ export class DownloadProgress {
this.segmentSize = 0
this.segmentOffset = 0
this.receivedBytes = 0
this.previouslyReceivedBytes = 0
this.lastTimeOfNewBytes = undefined
this.displayedComplete = false
this.startTime = Date.now()
this.abortController = undefined
}
/**
@@ -68,7 +62,6 @@ export class DownloadProgress {
this.segmentIndex = this.segmentIndex + 1
this.segmentSize = segmentSize
this.receivedBytes = 0
this.previouslyReceivedBytes = 0
core.debug(
`Downloading segment at offset ${this.segmentOffset} with length ${this.segmentSize}...`
@@ -91,22 +84,6 @@ export class DownloadProgress {
return this.segmentOffset + this.receivedBytes
}
setLastTimeOfNewBytes(): void {
this.lastTimeOfNewBytes = Date.now()
}
getLastTimeOfNewBytes(): number | undefined {
return this.lastTimeOfNewBytes
}
setAbortController(abortReference: AbortController): void {
this.abortController = abortReference
}
triggerAbortController(): void {
this.abortController?.abort()
}
/**
* Returns true if the download is complete.
*/
@@ -148,21 +125,7 @@ export class DownloadProgress {
*/
onProgress(): (progress: TransferProgressEvent) => void {
return (progress: TransferProgressEvent) => {
if (progress.loadedBytes > this.getTransferredBytes()) {
this.setReceivedBytes(progress.loadedBytes)
this.setLastTimeOfNewBytes()
} else {
// if download hanging for more than 2 minutes
if (
this.getLastTimeOfNewBytes() !== undefined &&
Date.now() - this.getLastTimeOfNewBytes()! > 120000
) {
this.triggerAbortController()
throw new Error(
'Aborting cache download as the download has stalled for more than 2 minutes.'
)
}
}
this.setReceivedBytes(progress.loadedBytes)
}
}
@@ -289,7 +252,6 @@ export async function downloadCacheStorageSDK(
try {
downloadProgress.startDisplayTimer()
const controller = new AbortController()
downloadProgress.setAbortController(controller)
const abortSignal = controller.signal
while (!downloadProgress.isDone()) {
const segmentStart =
@@ -91,6 +91,12 @@ describe('proxy', () => {
expect(proxyUrl).toBeDefined()
})
it('getProxyUrl returns proxyUrl if http_proxy has no protocol', () => {
process.env['http_proxy'] = 'myproxysvr'
const proxyUrl = pm.getProxyUrl(new URL('http://github.com'))
expect(proxyUrl?.toString()).toBe('http://myproxysvr/')
})
it('checkBypass returns true if host as no_proxy list', () => {
process.env['no_proxy'] = 'myserver'
const bypass = pm.checkBypass(new URL('https://myserver'))
+6 -1
View File
@@ -14,7 +14,12 @@ export function getProxyUrl(reqUrl: URL): URL | undefined {
})()
if (proxyVar) {
return new URL(proxyVar)
try {
return new URL(proxyVar)
} catch {
if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))
return new URL(`http://${proxyVar}`)
}
} else {
return undefined
}