delete punchd socket on SIGINT

This commit is contained in:
Christian Ulrich 2020-07-28 00:17:45 +02:00
parent 5d08473d86
commit e8d06b5982
No known key found for this signature in database
GPG Key ID: 8241BE099775A097
1 changed files with 15 additions and 3 deletions

View File

@ -8,6 +8,8 @@ import tcp_syni
from strutils import format, join
from nativesockets import setSockOptInt
const PunchdSocket = "/tmp/punchd.socket"
type
# Requests
TcpSyniConnect = object
@ -23,6 +25,11 @@ type
srcPorts: array[3, Port]
seqNums: seq[uint32]
Sigint = object of CatchableError
proc handleSigint() {.noconv.} =
raise newException(Sigint, "received SIGINT")
proc handleRequest(line: string, unixSock: AsyncSocket) {.async.} =
var id: string
var sock: AsyncSocket
@ -77,12 +84,17 @@ proc handleUsers(sock: AsyncSocket) {.async.} =
asyncCheck handleRequests(user)
proc main() =
removeFile("/tmp/punchd.socket")
setControlCHook(handleSigint)
removeFile(PunchdSocket)
let unixSocket = newAsyncSocket(AF_UNIX, SOCK_STREAM, IPPROTO_IP)
unixSocket.bindUnix("/tmp/punchd.socket")
unixSocket.bindUnix(PunchdSocket)
unixSocket.listen()
asyncCheck handleUsers(unixSocket)
try:
runForever()
except Sigint:
removeFile(PunchdSocket)
when isMainModule:
main()