Я пытаюсь использовать openssl bio для выполнения операции FTP STOR.Большую часть времени он работает отлично, но иногда он отправляет только частичные данные.Таким образом, логика выглядит следующим образом:
1. authentication and passive mode selection
2. open data connection
3. write data
4. QUIT
Все операции должны выполняться синхронно.Функция записи данных делает это:
while (written < toWrite && n > 0) {
n = BIO_write(bio, message.c_str() + written, toWrite - written);
written += n;
}
После этого цикла записывается == toWrite и n> 0, поэтому это будет означать, что запись была успешно завершена.Тем не менее, файл урезан.Когда я просматриваю операцию в wireshark, я могу заметить, что операция QUIT отправляется сразу после передачи первой порции данных.Клиент также продолжает отправку фрагментов данных после команды QUIT.Кто-нибудь знает, как это возможно?
РЕДАКТИРОВАТЬ: Если между записью данных и выходом есть небольшая задержка (например, спящий режим), она отлично работает.