delete punchd socket on SIGINT
This commit is contained in:
parent
5d08473d86
commit
e8d06b5982
18
punchd.nim
18
punchd.nim
|
@ -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)
|
||||
runForever()
|
||||
try:
|
||||
runForever()
|
||||
|
||||
except Sigint:
|
||||
removeFile(PunchdSocket)
|
||||
|
||||
when isMainModule:
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue