C++ libcurl-Verzögerung bei HTTP-POST

badday

Commander
Registriert
Sep. 2007
Beiträge
3.023
Moin zusammen,

ich habe folgendes Problem: Ich sende etwas via libcurl an einen Server, dabei verwende ich u. a. folgende Optionen:

Code:
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, sizeof(char)*(utf8string.length()));
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, utf8string.data());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, checkServerAnswer);

Sofort nach dem Senden erhält der Client eine Antwort, die auch sofort in checkServerAnswer() verarbeitet wird. Danach tritt aber die Verzögerung auf, und zwar während
Code:
res = curl_easy_perform(curl);

Dabei hängt er in Curl_socket_ready(), laut Debugger bei der schließenden Klammer in Z. 322 in select.c (falls jemand den Sourcecode zur Hand hat).

Als Beschreibung er Funktion steht u. A.:
This is an internal function used for waiting for read or write events on a pair of file descriptors.

Aber worauf genau wartet die Funktion? Der return-Code ist ok (CURLE_OK).


Über Hilfe wäre ich dankbar.



Gruß,

badday
 
ganz einfach.. es blockt weil die übertragung noch nicht beendet ist! deine funktion checkServerAnswer wird ggf. auch mehrfach aufgerufen. das heißt NICHT dass die daten komplett empfangen werden und dann checkServerAnswer aufgerufen wird, sondern sobald daten eintreffen wirds aufgerufen mit den daten die angekommen sind.
 
Hm... Offenbar ist das tatsächlich das Problem, er wartet auf ein FIN-Flag, was ja auch verständlich ist. Ich schaue mal, ob das vll. ein Server-Seitiges Problem ist, dass das so lange dauert.

Ggf. melde ich mich wieder.

Vielen Dank @IceMatrix.


Gruß,

badday
 

Ähnliche Themen

Antworten
5
Aufrufe
2.078
Zurück
Oben