libcurl + chunked transfer = problem
От: gwg-605 Россия  
Дата: 21.05.19 11:08
Оценка:
При использовании libcurl для chunked transfer получили проблему.

Примерная инициализация:
req_headers.Append( _T( "Expect:" ) ) ;
req_headers.Append( _T( "Transfer-Encoding: chunked" ) ) ;
req_headers.Append( _T( "Content-Type: application/binary-octet")) ;
curl_easy_setopt( m_CURLHandle, CURLOPT_HEADERFUNCTION, SReceiveHeaders ) ;
curl_easy_setopt( m_CURLHandle, CURLOPT_WRITEFUNCTION, SReceiveResponse );
curl_easy_setopt( m_CURLHandle, CURLOPT_READFUNCTION, SReadRequestBody ) ;
curl_easy_setopt( m_CURLHandle, CURLOPT_URL, full_url_utf8.c_ptr() );
curl_easy_setopt( m_CURLHandle, CURLOPT_POST, 1L );

Вызов:
CURLcode res = curl_easy_perform( m_CURLHandle ) ;


Курл начинает дергать SReadRequestBody для получения данных, в функции есть задержка для готовности данных, данные готовы выдаем, объем данных десятки и сотни гигабайт, все работает хорошо за исключением обработки HTTP респонса от сервера, он просто игнорируется вернее раньше работал когда использовали .59 версию, а сейчас .61 просто игнорируется, причем HTTP response пришел и лежит во внутреннем буфере, но реакции нет. те мы сидим в curl_easy_perform и шлем данные серверу бесконечно.

Попытался в функции SReadRequestBody мониторить состояние m_CURLHandle контекста через паблик АПИ, но ничего не меняется по приходу HTTP response.

Может кто сталкивался с такой проблемой?
Re: libcurl + chunked transfer = problem
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 21.05.19 11:17
Оценка:
Здравствуйте, gwg-605, Вы писали:

G6>Может кто сталкивался с такой проблемой?

Вряд ли. Попробуй посомтреть в релиз нотисах или на их гитхабе/сайте, может что-то написали по этому поводу.
Sic luceat lux!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.