This commit is contained in:
retoor 2026-01-26 10:28:47 +01:00
parent fbc1a6e294
commit 9c04068eac
2 changed files with 36 additions and 0 deletions

18
src/module/web.wren vendored
View File

@ -1,5 +1,6 @@
// retoor <retoor@molodetz.nl>
import "scheduler" for Scheduler
import "net" for Socket, Server
import "tls" for TlsSocket
import "dns" for Dns
@ -827,8 +828,25 @@ class Application {
while (true) {
var socket = server.accept()
if (socket == null) continue
var self = this
Scheduler.add {
self.handleConnectionSafe_(socket)
}
}
}
handleConnectionSafe_(socket) {
var fiber = Fiber.new {
handleConnection_(socket)
}
var error = fiber.try()
if (error != null) {
var response = Response.new()
response.status = 500
response.body = "Internal Server Error"
Fiber.new { socket.write(response.build()) }.try()
Fiber.new { socket.close() }.try()
}
}
handleConnection_(socket) {

View File

@ -4,6 +4,7 @@
static const char* webModuleSource =
"// retoor <retoor@molodetz.nl>\n"
"\n"
"import \"scheduler\" for Scheduler\n"
"import \"net\" for Socket, Server\n"
"import \"tls\" for TlsSocket\n"
"import \"dns\" for Dns\n"
@ -831,8 +832,25 @@ static const char* webModuleSource =
" while (true) {\n"
" var socket = server.accept()\n"
" if (socket == null) continue\n"
" var self = this\n"
" Scheduler.add {\n"
" self.handleConnectionSafe_(socket)\n"
" }\n"
" }\n"
" }\n"
"\n"
" handleConnectionSafe_(socket) {\n"
" var fiber = Fiber.new {\n"
" handleConnection_(socket)\n"
" }\n"
" var error = fiber.try()\n"
" if (error != null) {\n"
" var response = Response.new()\n"
" response.status = 500\n"
" response.body = \"Internal Server Error\"\n"
" Fiber.new { socket.write(response.build()) }.try()\n"
" Fiber.new { socket.close() }.try()\n"
" }\n"
" }\n"
"\n"
" handleConnection_(socket) {\n"