Compare commits

...

1 Commits

Author SHA1 Message Date
7d0231c004 Handle submit API response safely and avoid 500 crash 2026-04-12 18:44:48 +02:00

View File

@@ -1168,6 +1168,7 @@ def index():
@app.post("/submit") @app.post("/submit")
def submit(url: str = Form(...), package_name: str = Form(""), library: str = Form("auto")): def submit(url: str = Form(...), package_name: str = Form(""), library: str = Form("auto")):
try:
ensure_env() ensure_env()
url = url.strip() url = url.strip()
package_name = (package_name or "").strip() or "WebGUI" package_name = (package_name or "").strip() or "WebGUI"
@@ -1189,9 +1190,18 @@ def submit(url: str = Form(...), package_name: str = Form(""), library: str = Fo
"packageName": package_name, "packageName": package_name,
}]) }])
jobid = str(resp.get("id", "")) jobid = ""
if isinstance(resp, dict):
jobid = str(resp.get("id", "")).strip()
elif isinstance(resp, (str, int)):
jobid = str(resp).strip()
elif isinstance(resp, list) and resp and isinstance(resp[0], dict):
jobid = str(resp[0].get("id", "")).strip()
if not jobid: if not jobid:
return HTMLResponse(render_page(f"Unerwartete Antwort von add_links: {resp}"), status_code=500) msg = f"Unerwartete Antwort von add_links (kein Job-ID): {resp!r}"
log_connection(msg)
return HTMLResponse(render_page(msg), status_code=502)
with lock: with lock:
jobs[jobid] = Job( jobs[jobid] = Job(
@@ -1208,6 +1218,9 @@ def submit(url: str = Form(...), package_name: str = Form(""), library: str = Fo
t.start() t.start()
return RedirectResponse(url="/", status_code=303) return RedirectResponse(url="/", status_code=303)
except Exception as e:
log_connection(f"Submit-Fehler: {e}")
return HTMLResponse(render_page(f"Interner Fehler beim Absenden: {e}"), status_code=500)
@app.post("/cancel/{jobid}") @app.post("/cancel/{jobid}")
def cancel(jobid: str): def cancel(jobid: str):