I'm not sure if this is related to the problem your having but it may be useful to you;
While I was adding IOCP to Cerberus I came across a similar problem whereby after closing the client (Game or Dev) I couldn't reconnect to the server again, I don't remember what the map numbers were so I can't say if it was related to the amout of MAX players. Although I know I set it to around 5 or 10 just to cut down on the server loops.
Suffice to say I was a bit miffed about it and checked over the code and the COMSocketServer.dll I was using time and time again! As luck would have it, I had anti-spyware software running at the time and decided to check the connections analysis on what was going on when the clients connected/disconnected.
I found that when the client disconnected the server was leaving the address/port in a
'Passive close' state (now this is where I'm gonna get a bit vague I'm afraid as I don't remember what I did to fix it) and wouldn't let the client reconnect. I'm fairly sure it was something to do with the way one of the subs closes the socket either after writing data or shutting it down.
I've checked over my code against the copy of verrigans tutorial I've got but can't find any differences in the code.
All I know is that now when a client disconnects from my server it leaves the address/port in an
'Active Close' state and I can reconnect regardless of map number and MAX player settings. ( I checked this a minute ago, logged out and in again on map 25 with MAX players set to 10).
Couple of ideas:
1. I keep coming back to my - Sub AlertMsg() - where I've used - .ShutdDown(ShutDownWrite) - and not (ShutDownBoth) but I don't think this is it.
2. I think you've added extra Buffers to your code, might I be so bold as to suggest you check through the code you've added there?? :|
That's about all I can think of right now, sorry I'm tired, hope it's of some use and good luck.