Skip to content

Commit

Permalink
curl_easy_perform_ev: debug/test function
Browse files Browse the repository at this point in the history
This function is meant to work *exactly* as curl_easy_perform() but will
use the event-based libcurl API internally instead of
curl_multi_perform(). To avoid relying on an actual event-based library
and to not use non-portable functions (like epoll or similar), there's a
rather inefficient emulation layer implemented on top of Curl_poll()
instead.

There's currently some convenience logging done in curl_easy_perform_ev
which helps when tracking down problems. They may be suitable to remove
or change once things seem to be fine enough.

curl has a new --test-event option when built with debug enabled that
then uses curl_easy_perform_ev() instead of curl_easy_perform(). If
built without debug, using --test-event will only output a warning
message.

NOTE: curl_easy_perform_ev() is not part if the public API on purpose.
It is only present in debug builds of libcurl and MUST NOT be considered
stable even then. Use it for libcurl-testing purposes only.

runtests.pl now features an -e command line option that makes it use
--test-event for all curl command line tests. The man page is updated.
  • Loading branch information
bagder committed Aug 20, 2013
1 parent 062e5bf commit 6cf8413
Show file tree
Hide file tree
Showing 7 changed files with 406 additions and 58 deletions.
Loading

2 comments on commit 6cf8413

@gvanem
Copy link
Contributor

@gvanem gvanem commented on 6cf8413 Aug 21, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I build curl.exe (using MingW) with '-DCURLDEBUG' and by importing from libcurl.dll.
Which means the new curl_easy_perform_ev() must be exported from libcurl.dll.
Hence:

--- Git-latest/lib/easyif.h  2013-08-21 15:48:14 +0000
+++ lib/easyif.h    2013-08-21 15:57:25 +0000
@@ -26,7 +26,7 @@
  * Prototypes for library-wide functions provided by easy.c
  */
 #ifdef CURLDEBUG
-CURLcode curl_easy_perform_ev(CURL *easy);
+CURL_EXTERN CURLcode curl_easy_perform_ev(CURL *easy);
 #endif

 #endif /* HEADER_CURL_EASYIF_H */

@bagder
Copy link
Member Author

@bagder bagder commented on 6cf8413 Aug 21, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, merged!

Please sign in to comment.