OpenSSL BIO пишет частичный файл - PullRequest
       0

OpenSSL BIO пишет частичный файл

0 голосов
/ 26 сентября 2018

Я пытаюсь использовать 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.Кто-нибудь знает, как это возможно?

РЕДАКТИРОВАТЬ: Если между записью данных и выходом есть небольшая задержка (например, спящий режим), она отлично работает.

1 Ответ

0 голосов
/ 27 сентября 2018

Я обнаружил проблему.Я не дождался ответа на контрольном разъеме между закрытием соединения для передачи данных и отправкой QUIT. Этот вопрос был полезен для поиска ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...