Removed the SendEndTime and RecvEndTime members from the class and use local const auto RecvEndTime / SendEndTime variables in the two functions RecvPartial / SendPartial and removed the if (SendEndTime / RecvEndTime == 0) checks and also removed the RecvEndTime / SendEndTime = 0 invalidations that are no longed necessary.
I think they have to be class members in order that a single Send/Recv call can have a timeout that works regardless of packet size. The timeout logic was pretty lousy though; I think it's all fixed now.
Removed the SendEndTime and RecvEndTime members from the class and use local const auto RecvEndTime / SendEndTime variables in the two functions RecvPartial / SendPartial and removed the if (SendEndTime / RecvEndTime == 0) checks and also removed the RecvEndTime / SendEndTime = 0 invalidations that are no longed necessary.