md-test fails between two Linux devices - it works if the test runs between two BSD devices. If either caller or replier is Linux, it fails.
Additionally, the following was observered:
The TCP socket read returns no data although the select call claims the socket descriptor to be ready for reading.
If the read is delayed by 5ms after select returns with readable descriptor, the read is successful.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Further findings:
Looks like 'uncompleted TCP' feature is broken! If TCP read returns with less data than the header datalength anounces, the read should be repeated the next (tlc_process - ) time - until all data has been read. This seems to fail (and would explain the dependency on slow devices)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
md-test fails between two Linux devices - it works if the test runs between two BSD devices. If either caller or replier is Linux, it fails.
Additionally, the following was observered:
The TCP socket read returns no data although the select call claims the socket descriptor to be ready for reading.
If the read is delayed by 5ms after select returns with readable descriptor, the read is successful.
Further findings:
Looks like 'uncompleted TCP' feature is broken! If TCP read returns with less data than the header datalength anounces, the read should be repeated the next (tlc_process - ) time - until all data has been read. This seems to fail (and would explain the dependency on slow devices)
Fixed error return value handling in mdCheckListenSockets, error handling prevented partial telegram transfer.