curl_easy_perform
является полностью синхронным и вернется только после завершения всей передачи. На самом деле нет никакого способа обойти это (вы уже упомянули CURLOPT_CONNECT_ONLY
, и я бы не рекомендовал этого) с этим API.
Если вы хотите, чтобы управление вернулось в тот же поток до того, как будет завершена вся передача, что, как показывает ваш вопрос, вам, скорее всего, лучше использовать мультиинтерфейс.
Используя этот интерфейс, curl_multi_perform
будет делать только столько, сколько может, без блокировки и возврата управления обратно к вашей функции. Однако он возлагает на ваш код ответственность за ожидание активности сокетов и повторный вызов libcurl, когда он есть.
(Извините, но я не знаю, какие ограничения есть у "плагина GSOAP", и вы не указали их здесь, так что, возможно, это все дерьмо)