Hello there, For a small chat server thingie I'm making, I decided to use D; finding myself with a very neat example from listener.d to get a kick start I decided to pretty much take the example over! However, I'm stuck on a bug I can't truly wrap my finger around. Most likely it's my own fault and I'm doing something wrong, but considering I took the code pretty much from the example I am more inclined to believe the example is broken.
I'll explain what happens: -- I start up my server (nothing wrong, it's running as it should and listening) -- I telnet to it. My server accepts the connection. -- I use telnet to send some information. Server handles the information properly, again, no issue. -- I quit telnet by using ^] and then writing quit. Breaking the connection rather ungracefully. -- The server properly recognises this isn't a clean disconnect and executes the code to remove the socket. -- I then get a range violation. This is the main process and it's loop: https://github.com/JGBrands/BlaatServer/blob/master/source/bserver.d This is the server class, the code where it deletes the socket is at the complete bottom in the function void destroySocket(int index); https://github.com/JGBrands/BlaatServer/blob/master/source/server.d The code is primarily taken over from the listener.d example like I said, the error I get is this: core.exception.RangeError@server(61): Range violation ---------------- ---------------- I'm lead to believe the function is deleting something it shouldn't, for those interested, this is line 61 in server.d: if (this.sset.isSet(this.reads[i])) {