make sure we don't exit the handler prematurely

This commit is contained in:
Dmitriy Ryajov 2020-02-13 10:19:02 -05:00
parent f9ad113d11
commit b1dd564c32
1 changed files with 5 additions and 2 deletions

View File

@ -46,11 +46,14 @@ proc newMuxerProvider*(creator: MuxerConstructor, codec: string): MuxerProvider
method init(c: MuxerProvider) =
proc handler(conn: Connection, proto: string) {.async, gcsafe, closure.} =
let muxer = c.newMuxer(conn)
var handlerFut: Future[void] = newFuture[void]()
if not isNil(c.muxerHandler):
asyncCheck c.muxerHandler(muxer)
handlerFut = c.muxerHandler(muxer)
else:
handlerFut.complete()
if not isNil(c.streamHandler):
muxer.streamHandler = c.streamHandler
await muxer.handle()
await allFutures(muxer.handle(), handlerFut)
c.handler = handler