i already know from what i read in this forum that calling socket_recv() when there is no data to receive hangs the server so let's take this as a fact (search for socket_recv and you'll find those posts).
the next fact is that i noticed that socket_change() sometimes keeps on returning true no matter how often you receive. i have made a counter in the while loop (while socket_change()...) called nEndlessProtection that gets incremented each run and when it was 500 it would break the loop. this endless loop break was triggered! i am quite sure that it didn't receive 500 packets then

and i know that it would never have stopped.
if we add both it seems like this is exactly what's happening:
socket_change() returns true although there is no data and then socket_recv() is called and hangs the server, because there is nothing to receive.
__________________