Skip to content

Instantly share code, notes, and snippets.

@iffy

iffy/baddesc.nim Secret

Last active October 8, 2019 01:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iffy/4cd33aaa7af421fe37759570178c10ec to your computer and use it in GitHub Desktop.
Save iffy/4cd33aaa7af421fe37759570178c10ec to your computer and use it in GitHub Desktop.
proc processClient(db: DbConn, client: AsyncSocket) {.async.} =
debug "client connected"
var ss = newStringSocket()
var handler = db.createHandler(ss)
echo "client.attachTo(ss)"
asyncCheck client.attachTo(ss)
yield handler.connected
echo "handler.connected done"
if handler.connected.failed:
warn "handshake failed"
else:
debug "handshake complete"
let name = await handler.get_remote_name()
debug "client processing done"
echo "about to close"
echo "client closed"
proc serve(db: DbConn, port: Port, address = "") {.async.} =
var server = newAsyncSocket()
server.setSockOpt(OptReuseAddr, true)
server.bindAddr(port, address)
server.listen()
info "Accepting connections on port: ", $port
while true:
echo "awaiting client"
let client = await server.accept()
echo "gonna process client"
asyncCheck processClient(db, client)
echo "done processing client"
var keepgoing = false
proc sharing_start_server*(db: DbConn, port: Port, address = "") =
## Turn on the sharing server
info "Starting share server"
asyncCheck serve(db, port, address)
info "Starting the reactor..."
keepgoing = true
while keepgoing:
try:
echo "about to poll"
poll()
echo "polled"
except:
echo "Error encountered: ", getCurrentExceptionMsg()
raise
info "Stopped the reactor..."
handler.connected done
WARN handshake failed
DEBUG client processing done
about to close
client closed
Error encountered: Bad file descriptor
Async traceback:
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare
/Users/matt/m/nim-argparse/src/argparse.nim(724) run
/Users/matt/m/nim-argparse/src/argparse.nim(715) run
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read
Exception message: Bad file descriptor
Exception type:
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare
/Users/matt/m/nim-argparse/src/argparse.nim(724) run
/Users/matt/m/nim-argparse/src/argparse.nim(715) run
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read
[[reraised from:
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare
/Users/matt/m/nim-argparse/src/argparse.nim(724) run
/Users/matt/m/nim-argparse/src/argparse.nim(715) run
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(422) asyncCheckCallback
]]
Error: unhandled exception: Bad file descriptor
Async traceback:
/Users/matt/m/proj.git/ccore/dummyshare.nim(24) dummyshare
/Users/matt/m/nim-argparse/src/argparse.nim(724) run
/Users/matt/m/nim-argparse/src/argparse.nim(715) run
/Users/matt/m/nim-argparse/src/argparse.nim(698) parse
/Users/matt/m/nim-argparse/src/argparse.nim(676) parse
/Users/matt/m/nim-argparse/src/argparse.nim(913) :anonymous
/Users/matt/m/proj.git/ccore/dummyshare.nim(10) startServer
/Users/matt/m/proj.git/ccore/src/proj/sharing.nim(317) sharing_start_server
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1562) poll
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(1328) runOnce
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncdispatch.nim(210) processPendingCallbacks
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncmacro.nim(34) sendNimAsyncContinue
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncnet.nim(445) sendIter
/Users/matt/.choosenim/toolchains/nim-0.20.2/lib/pure/asyncfutures.nim(374) read
Exception message: Bad file descriptor
Exception type: [OSError]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment