aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2014-12-04libcurl: add UNIX domain sockets supportPeter Wu
The ability to do HTTP requests over a UNIX domain socket has been requested before, in Apr 2008 [0][1] and Sep 2010 [2]. While a discussion happened, no patch seems to get through. I decided to give it a go since I need to test a nginx HTTP server which listens on a UNIX domain socket. One patch [3] seems to make it possible to use the CURLOPT_OPENSOCKETFUNCTION function to gain a UNIX domain socket. Another person wrote a Go program which can do HTTP over a UNIX socket for Docker[4] which uses a special URL scheme (though the name contains cURL, it has no relation to the cURL library). This patch considers support for UNIX domain sockets at the same level as HTTP proxies / IPv6, it acts as an intermediate socket provider and not as a separate protocol. Since this feature affects network operations, a new feature flag was added ("unix-sockets") with a corresponding CURL_VERSION_UNIX_SOCKETS macro. A new CURLOPT_UNIX_SOCKET_PATH option is added and documented. This option enables UNIX domain sockets support for all requests on the handle (replacing IP sockets and skipping proxies). A new configure option (--enable-unix-sockets) and CMake option (ENABLE_UNIX_SOCKETS) can disable this optional feature. Note that I deliberately did not mark this feature as advanced, this is a feature/component that should easily be available. [0]: http://curl.haxx.se/mail/lib-2008-04/0279.html [1]: http://daniel.haxx.se/blog/2008/04/14/http-over-unix-domain-sockets/ [2]: http://sourceforge.net/p/curl/feature-requests/53/ [3]: http://curl.haxx.se/mail/lib-2008-04/0361.html [4]: https://github.com/Soulou/curl-unix-socket Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-04tests: add two HTTP over UNIX socket testsPeter Wu
test1435: a simple test that checks whether a HTTP request can be performed over the UNIX socket. The hostname/port are interpreted by sws and should be ignored by cURL. test1436: test for the ability to do two requests to the same host, interleaved with one to a different hostname. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-04tests: add HTTP UNIX socket server testing supportPeter Wu
The variable `$ipvnum` can now contain "unix" besides the integers 4 and 6 since the variable. Functions which receive this parameter have their `$port` parameter renamed to `$port_or_path` to support a path to the UNIX domain socket (as a "port" is only meaningful for TCP). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-04sws: try to remove socket and retry bindPeter Wu
If sws is killed it might leave a stale socket file on the filesystem which would cause an EADDRINUSE error. After this patch, it is checked whether the socket is really stale and if so, the socket file gets removed and another bind is executed. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-04sws: add UNIX domain socket supportPeter Wu
This extends sws with a --unix-socket option which causes the port to be ignored (as the server now listens on the path specified by --unix-socket). This feature will be available in the following patch that enables checking for UNIX domain socket support. Proxy support (CONNECT) is not considered nor tested. It does not make sense anyway, first connecting through a TCP proxy, then let that TCP proxy connect to a UNIX socket. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-04sws: restrict TCP_NODELAY to IP socketsPeter Wu
TCP_NODELAY does not make sense for Unix sockets, so enable it only if the socket is using IP. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-12-03sws.c: Fixed compilation warning when IPv6 is disabledSteve Holme
sws.c:69: warning: comma at end of enumerator list
2014-11-30sws: move away from IPv4/IPv4-only assumptionPeter Wu
Instead of depending the socket domain type on use_ipv6, specify the domain type (AF_INET / AF_INET6) as variable. An enum is used here with switch to avoid compiler warnings in connect_to, complaining that rc is possibly undefined (which is not possible as socket_domain is always set). Besides abstracting the socket type, make the debugging messages be independent on IP (introduce location_str which points to "port XXXXX"). Rename "ipv_inuse" to "socket_type" and tighten the scope (main). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-30curl tool: Enable support for the SMB protocolBill Nagel
This patch enables SMB/CIFS support in the curl command-line tool.
2014-11-29tests: Disable test 1013 until SMB is fully addedSteve Holme
2014-11-28runtests.pl: fix startup of IPv6 serversPeter Wu
Commit curl-7_23_1-143-g8218064 changed the parameter of responsive_http_server to accept types other than IPv6 (converting from a boolean to a string), but only considered the lower-case "ipv6" and not the "IPv6" variant. This caused all servers to start in IPv4 mode instead. This patch converts the remaining cases to "ipv6". While not strictly necessary for the run*server variants, these got also converted for consistency and to prevent future errors. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-28runtests.pl: fix warning message, remove duplicate valuePeter Wu
Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-26tests: Added SMTP with --crlf test caseSteve Holme
2014-11-25testcurl: bump the version of this script!Daniel Stenberg
2014-11-25testcurl: skip reading the setup file if given enough cmdline infoDaniel Stenberg
This makes it much easier to run multiple tests in the same directory, just altering the command lines used.
2014-11-24SSL: Add PEM format support for public key pinningmoparisthebest
2014-11-22runtests.pl: Re-aligned feature support commentsSteve Holme
2014-11-22runtests.pl: Use Kerberos and SPNEGO as proxies for the crypto featureSteve Holme
In addition to NTLM, use Kerberos and SPNEGO as proxies to the crypto feature. ...and converted tab characters, from commit 4b4e8a5853, to spaces.
2014-11-22runtests.pl: Added support for SPNEGOSteve Holme
2014-11-22runtests.pl: Added Kerberos detectionSteve Holme
2014-11-22runtests.pl: Added GSS-API detectionSteve Holme
2014-11-21FILEFORMAT: Added SSPI, GSS-API and Kerberos to the features listSteve Holme
2014-11-21FILEFORMAT: Added test requires feature not present informationSteve Holme
Such as !SSPI as we do for the NTLM and Digest tests.
2014-11-20test1801: first real http2 test caseDaniel Stenberg
2014-11-20sws: initial tiny steps toward http2 supportDaniel Stenberg
2014-11-20FILEFORMAT: mention the new upgrade supportDaniel Stenberg
2014-11-20test1800: first plain-text http2 test caseDaniel Stenberg
Verifies the upgrade request, but gets a plain 1.1 response
2014-11-13test22: expand a backtick commandPeter Wu
This is the only user of the backtick operator in the command. As the commands will soon not be executed by a shell anymore (but by perl), replace the command with its output. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-10symbol-scan.pl: do not require autotoolsPeter Wu
Makes test1119 pass when building with cmake. configurehelp.pm is generated by configure (autotools). As cmake does not provide a separate variable for the C preprocessor, default to cpp. Before commit ef24ecde68a5f577a7f0f423a767620f09a0ab16 ("symbol-scan: use configure script knowledge about how to run the C preprocessor"), this tool would also use 'cpp'. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-10cmake: add ENABLE_THREADED_RESOLVER, rename ARESPeter Wu
Fix detection of the AsynchDNS feature which not just depends on pthreads support, but also on whether USE_POSIX_THREADS is set or not. Caught by test 1014. This patch adds a new ENABLE_THREADED_RESOLVER option (corresponding to --enable-threaded-resolver of autotools) which also needs a check for HAVE_PTHREAD_H. For symmetry with autotools, CURL_USE_ARES is renamed to ENABLE_ARES (--enable-ares). Checks that test for the availability actually use USE_ARES instead as that is the result of whether a-res is available or not (in practice this does not matter as CARES is marked as required package, but nevertheless it is better to write the intent). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-10cmake: build libhostname for test suitePeter Wu
Used by some test cases via LD_PRELOAD in order to fake the host name. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-10tests: fix libhostname visibilityPeter Wu
I noticed that a patched cmake build would pass tests with a fake local hostname, but the autotools build skips them: got unexpected host name back, LD_PRELOAD failed It turns out that -fvisibility=hidden hides the symbol, and since the tests are not part of libcurl, it fails too. Just remove the LIBCURL guard. Broken since cURL 7.30 (commit 83a42ee20ea7fc25abb61c0b7ef56ebe712d7093, "curl.h: stricter CURL_EXTERN linkage decorations logic"). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-10tests: fix memleak in server/resolve.cPeter Wu
This makes LeakSanitizer happy. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-11-06test552: Don't run HTTP digest tests for SSPI based buildsDan Fandrich
Technical difficulties prevented this from going into the previous commit.
2014-11-06tests: Don't run HTTP digest tests for SSPI based buildsSteve Holme
Added !SSPI to the features list of the HTTP digest tests, as SSPI based builds now use the Windows SSPI messaging API rather than the internal functions, and we can't control the random numbers that get used as part of the digest.
2014-11-05lib544.c: use duphandle for test 545Daniel Stenberg
To verify that curl_easy_duphandle() works fine on a handle that has gotten data stored with *_COPYPOSTFIELDS.
2014-11-04tests: add new feature 'SSLpinning'Daniel Stenberg
... and make test 2034 and 2035 require it, and have it set when built with OpenSSL or GnuTLS.
2014-11-01resume: consider a resume from [content-length] to be OKDaniel Stenberg
Basically since servers often then don't respond well to this and instead send the full contents and then libcurl would instead error out with the assumption that the server doesn't support resume. As the data is then already transfered, this is now considered fine. Test case 1434 added to verify this. Test case 1042 slightly modified. Reported-by: hugo Bug: http://curl.haxx.se/bug/view.cgi?id=1443
2014-10-27HTTP: return larger than 3 digit response codes tooDaniel Stenberg
HTTP 1.1 is clearly specified to only allow three digit response codes, and libcurl used sscanf("%3d") for that purpose. This made libcurl support smaller numbers but not larger. It does now, but we will not make any specific promises nor document this further since it is going outside of what HTTP is. Bug: http://curl.haxx.se/bug/view.cgi?id=1441 Reported-by: Balaji
2014-10-26Added the "flaky" keyword to a number of testsDan Fandrich
Each shows evidence of flakiness on at least one platform on the autobuilds. Users can use this keyword to skip these tests if desired.
2014-10-16test545: make it not use a trailing zeroDaniel Stenberg
CURLOPT_COPYPOSTFIELDS with a given CURLOPT_POSTFIELDSIZE does not require a trailing zero of the data and by making sure this test doesn't use one we know it works (combined with valgrind).
2014-10-13vtls: remove QsoSSLPatrick Monnerat
2014-10-13tests: move TESTCASES to Makefile.inc, add show for cmakePeter Wu
This change allows runtests.pl to be run from the CMake builddir: export srcdir=/tmp/curl/tests; perl -I$srcdir $srcdir/runtests.pl -l In order to make this possible, all test cases have been moved from Makefile.am to Makefile.inc. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-10-10tests/http_pipe.py: Python 3 supportPeter Wu
The 2to3 tool converted socketserver (which I manually fixed up with an import fallback) and the print(e) line. The xrange option was converted to range, but it seems better to use the '*' operator here for simplicity. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
2014-10-09test2036: verify -O with no slash at all in the URLDaniel Stenberg
Similar to test 76 but that test's URL has a slash just no file name part.
2014-10-09Cmake: Got rid of setup_curl_dependenciesJakub Zakrzewski
There is no need for such function. Include_directories propagate by themselves and having a function with one simple link statement makes little sense.
2014-10-07SSL: implement public key pinningmoparisthebest
Option --pinnedpubkey takes a path to a public key in DER format and only connect if it matches (currently only implemented with OpenSSL). Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt(). Extract a public RSA key from a website like so: openssl s_client -connect google.com:443 2>&1 < /dev/null | \ sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \ | openssl rsa -pubin -outform DER > google.com.der
2014-09-26test506: Fixed a couple of memory leaks in testDan Fandrich
2014-09-25CURLOPT_COOKIELIST: Added "RELOAD" commandYousuke Kimoto
2014-09-10cookies: reject incoming cookies set for TLDsDaniel Stenberg
Test 61 was modified to verify this. CVE-2014-3620 Reported-by: Tim Ruehsen URL: http://curl.haxx.se/docs/adv_20140910B.html