fix: handle download not found exception in HttpDownloader and enforce IPv4 in HTTP agents

This commit is contained in:
Moyasee
2026-01-03 01:08:25 +02:00
parent 2bc0266775
commit de483da51c
5 changed files with 29 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
import aria2p
from aria2p.client import ClientException as DownloadNotFound
class HttpDownloader:
def __init__(self):
@@ -36,7 +37,11 @@ class HttpDownloader:
if self.download == None:
return None
download = self.aria2.get_download(self.download.gid)
try:
download = self.aria2.get_download(self.download.gid)
except DownloadNotFound:
self.download = None
return None
response = {
'folderName': download.name,

View File

@@ -21,6 +21,7 @@ export class Aria2 {
"--rpc-listen-all",
"--file-allocation=none",
"--allow-overwrite=true",
"--disable-ipv6",
],
{ stdio: "inherit", windowsHide: true }
);

View File

@@ -1,4 +1,6 @@
import axios from "axios";
import http from "http";
import https from "https";
import {
HOSTER_USER_AGENT,
extractHosterFilename,
@@ -28,6 +30,12 @@ export class BuzzheavierApi {
await axios.get(baseUrl, {
headers: { "User-Agent": HOSTER_USER_AGENT },
timeout: 30000,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
});
const downloadUrl = `${baseUrl}/download`;
@@ -43,6 +51,12 @@ export class BuzzheavierApi {
validateStatus: (status) =>
status === 200 || status === 204 || status === 301 || status === 302,
timeout: 30000,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
});
const hxRedirect = headResponse.headers["hx-redirect"];

View File

@@ -1,4 +1,5 @@
import axios from "axios";
import https from "https";
import { logger } from "../logger";
interface UnlockResponse {
@@ -33,6 +34,9 @@ export class VikingFileApi {
maxRedirects: 0,
validateStatus: (status) =>
status === 301 || status === 302 || status === 200,
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
});
if (

View File

@@ -1,4 +1,5 @@
import axios from "axios";
import http from "http";
import cp from "node:child_process";
import fs from "node:fs";
@@ -31,6 +32,9 @@ export class PythonRPC {
public static readonly RPC_PORT = "8084";
public static readonly rpc = axios.create({
baseURL: `http://localhost:${this.RPC_PORT}`,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
});
private static pythonProcess: cp.ChildProcess | null = null;