Skip to content

Commit 90b6d2b

Browse files
committed
fix: ipc/server: only enter nonblocking state during cleanup
1 parent f5c5ddc commit 90b6d2b

File tree

3 files changed

+8
-12
lines changed

3 files changed

+8
-12
lines changed

src/components/ipc/server/server.nim

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,7 @@ proc acceptNewConnection*(server: var IPCServer) =
187187
conn: Socket
188188
address: string
189189

190-
while true:
191-
try:
192-
server.socket.acceptAddr(conn, address)
193-
break
194-
except OSError:
195-
continue
196-
197-
sleep(150)
190+
server.socket.acceptAddr(conn, address)
198191

199192
info "New connection from: " & address
200193
let packet = server.receive(conn, HandshakePacket)
@@ -413,9 +406,7 @@ proc bindServerPath*(server: var IPCServer): string =
413406
InitializationFailed, "Windows/non *NIX systems are not supported yet. Sorry! :("
414407
)
415408

416-
proc initialize*(server: var IPCServer, path: Option[string] = none string) {.inline.} =
417-
debug "IPC server initializing"
418-
# server.socket.setSockOpt(OptReusePort, true)
409+
proc setNonBlocking*(server: var IPCServer) =
419410
let flags = fcntl(server.socket.getFd(), F_GETFL, 0)
420411
if flags == -1:
421412
server.socket.close()
@@ -430,6 +421,10 @@ proc initialize*(server: var IPCServer, path: Option[string] = none string) {.in
430421
"fcntl(F_SETFL) returned -1; " & $strerror(errno) & " (" & $errno & ')',
431422
)
432423

424+
proc initialize*(server: var IPCServer, path: Option[string] = none string) {.inline.} =
425+
debug "IPC server initializing"
426+
# server.socket.setSockOpt(OptReusePort, true)
427+
433428
if path.isSome:
434429
server.socket.bindUnix(path.unsafeGet())
435430
server.path = unsafeGet path

src/components/master/master.nim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ proc packetHandler*(
524524

525525
# Here, we start sending "goodbye" packets to all processes.
526526
# We're essentially telling them, "Hey, start cleaning up and die."
527+
master.server.setNonBlocking() # We do not want to block at this point. We won't be receiving anything now so it doesn't matter.
527528
for i, group in master.server.groups:
528529
for process in group:
529530
debug "Telling PID " & $process.pid & " (group " & $i & "'s " & $process.kind &

src/ferus.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ proc main() {.inline.} =
7272
master.poll()
7373
for i, _ in tabs:
7474
tabs[i].heartbeat()
75-
75+
7676
for tab in tabs:
7777
tab.master.server.close() # Shut down each tab's IPC master
7878

0 commit comments

Comments
 (0)