Increased delay between listener restarts to deal with segvaults. Still no 100% fix

This commit is contained in:
Jakob Friedl
2025-08-19 21:37:29 +02:00
parent 4a38f76331
commit 24208f3b4b

View File

@@ -100,6 +100,7 @@ proc restartListeners*(cq: Conquest) =
# Restart all active listeners that are stored in the database # Restart all active listeners that are stored in the database
for l in listeners: for l in listeners:
try:
let let
settings = newSettings( settings = newSettings(
appName = l.listenerId, appName = l.listenerId,
@@ -110,7 +111,6 @@ proc restartListeners*(cq: Conquest) =
listener = newApp(settings = settings) listener = newApp(settings = settings)
# Define API endpoints based on C2 profile # Define API endpoints based on C2 profile
# TODO: Store endpoints for already running listeners is DB (comma-separated) and use those values for restarts
# GET requests # GET requests
for endpoint in cq.profile.getArray("http-get.endpoints"): for endpoint in cq.profile.getArray("http-get.endpoints"):
listener.get(endpoint.getStringValue(), routes.httpGet) listener.get(endpoint.getStringValue(), routes.httpGet)
@@ -129,18 +129,19 @@ proc restartListeners*(cq: Conquest) =
listener.registerErrorHandler(Http404, routes.error404) listener.registerErrorHandler(Http404, routes.error404)
try:
discard listener.runAsync() discard listener.runAsync()
cq.add(l) cq.add(l)
cq.writeLine(fgGreen, "[+] ", resetStyle, "Restarted listener", fgGreen, fmt" {l.listenerId} ", resetStyle, fmt"on {l.address}:{$l.port}.") cq.writeLine(fgGreen, "[+] ", resetStyle, "Restarted listener", fgGreen, fmt" {l.listenerId} ", resetStyle, fmt"on {l.address}:{$l.port}.")
# Delay before serving another listener to avoid crashing the application
waitFor sleepAsync(100)
except CatchableError as err: except CatchableError as err:
cq.writeLine(fgRed, styleBright, "[-] Failed to restart listener: ", err.msg) cq.writeLine(fgRed, styleBright, "[-] Failed to restart listener: ", err.msg)
# Delay before starting serving another listener to avoid crashing the application
waitFor sleepAsync(10)
cq.writeLine("") cq.writeLine("")
# Remove listener from database, preventing automatic startup on server restart # Remove listener from database, preventing automatic startup on server restart
proc listenerStop*(cq: Conquest, name: string) = proc listenerStop*(cq: Conquest, name: string) =