Jon Griffiths jon_p_griffiths@yahoo.com writes:
while (send_len){wsabuf.len = send_len;if (wsabuf.len > chunk_len)wsabuf.len = chunk_len;if (!ReadFile(packet->u.s.hFile, wsabuf.buf, wsabuf.len, NULL, NULL) ||WSASendTo(s, &wsabuf, 1, &n, 0, NULL, 0, NULL, NULL) == SOCKET_ERROR)goto TransmitPackets_fail;
Both ReadFile and WSASendTo will return the number of bytes read/written, you need to take that into account.
if (WSASendTo(s, &wsabuf, 1, &n, 0, NULL, 0, NULL, NULL) == SOCKET_ERROR)goto TransmitPackets_fail;send_len -= wsabuf.len;wsabuf.buf += wsabuf.len;
Same here.
packet->cLength = total_len;/* FIXME: I'm not certain we should always use the current file* position (rather than the start of the file), though it works* for mapache.exe.*/
Some test cases would be a good idea.