What happends is on slow network it does not get a chance to flush the tcp/ip stack and it will give an error - which will be considered as a server lost error. This is a result of not using the blocking mode when writing to the socket.
there are 3 fixes:
1) increase RETRY_COUNT in uMysqlCT
2) wherever you find in uMysqlNet "< RETRY_COUNT" replace it with "<= RETRY_COUNT"
or
3)the "real" fix is in unit uMysqlNet:
in net_real_write you will find this line 679:
if (fvio.vio_should_retry) then //should retry?
before it you should insert this if:
if (fvio.fcntl_mode and 1=1) then //are we in
blocking mode?
begin
fvio.vio_blocking(true);
inc(retr_count);
if (retr_count <= RETRY_COUNT) then
continue;
end;
(basically switch to blocking mode).
Ideally you would apply both 2) and 3) fixes.
In the mean time i will make a note for this to include it in the next release.
Thank you very much for reporting the problem.
Cristian Nicola