Ensure that the WaitGroup isn't marked done twice when edgecase errors occurr
Use sync.Once instead of bool flag
make conn a pointer again
defer the Done() call
Move defer outside the closure
Merge pull request #6 from rubyist/master

Unexpected client disconnections can cause a panic and crash the server