Go to file
Patrick Monnerat e44ddfd477 mime: clone mime tree upon easy handle duplication.
A mime tree attached to an easy handle using CURLOPT_MIMEPOST is
strongly bound to the handle: there is a pointer to the easy handle in
each item of the mime tree and following the parent pointer list
of mime items ends in a dummy part stored within the handle.

Because of this binding, a mime tree cannot be shared between different
easy handles, thus it needs to be cloned upon easy handle duplication.

There is no way for the caller to get the duplicated mime tree
handle: it is then set to be automatically destroyed upon freeing the
new easy handle.

New test 654 checks proper mime structure duplication/release.

Add a warning note in curl_mime_data_cb() documentation about sharing
user data between duplicated handles.

Closes #2235
2018-01-14 19:43:12 +01:00
.github ISSUE_TEMPLATE: Add a comment not to file security issues on github 2017-07-11 11:48:37 -04:00
CMake cmake: Export libcurl and curl targets to use by other cmake projects 2017-10-28 17:22:47 +02:00
docs mime: clone mime tree upon easy handle duplication. 2018-01-14 19:43:12 +01:00
include system.h: Additionally check __LONG_MAX__ for defining curl_off_t 2018-01-09 17:46:49 +13:00
lib mime: clone mime tree upon easy handle duplication. 2018-01-14 19:43:12 +01:00
m4 configure: use -Wno-varargs on clang 3.9[.X] debug builds 2017-09-08 23:16:16 +02:00
packages setopt: reintroduce non-static Curl_vsetopt() for OS400 support 2018-01-13 01:28:19 +01:00
projects build: Added Visual Studio 2017 project files 2017-12-22 17:58:41 +00:00
scripts scripts: allow all perl scripts to be run directly 2018-01-07 15:42:11 -05:00
src mail-rcpt.d: fix short-text description 2018-01-07 01:04:36 -05:00
tests mime: clone mime tree upon easy handle duplication. 2018-01-14 19:43:12 +01:00
winbuild Makefile.vc: Added our standard copyright header 2017-12-22 18:49:37 +00:00
.dir-locals.el Add .dir-locals and set c-basic-offset to 2. 2015-12-23 10:16:14 +01:00
.gitattributes .gitattributes: force shell scripts to LF 2017-04-17 08:32:13 +02:00
.gitignore ossfuzz: Move to C++ for curl_fuzzer. 2017-09-02 11:07:55 +02:00
.mailmap mailmap: added/clarified several names 2017-12-12 08:37:13 +01:00
.travis.yml travis: use pip2 instead of pip 2017-12-02 11:53:11 +01:00
CHANGES CHANGES: spell fix, use correct path to script 2017-02-07 08:22:37 +01:00
CMakeLists.txt build: remove HAVE_LIMITS_H check 2018-01-05 23:34:30 -05:00
COPYING COPYING: it's 2018! 2018-01-09 17:08:14 +13:00
GIT-INFO CHANGES.0: removed 2017-02-07 08:20:10 +01:00
MacOSX-Framework includes: remove curl/curlbuild.h and curl/curlrules.h 2017-06-14 11:07:33 +02:00
Makefile.am build: Fixed incorrect script termination from commit ad1dc10e61 2017-12-22 20:21:40 +00:00
Makefile.dist VC: remove the makefile.vc6 build infra 2017-01-23 14:27:32 +01:00
README URLs: follow GitHub project rename (also Travis CI) 2016-02-04 23:01:38 +01:00
README.md README.md: fixed layout 2017-11-12 00:07:38 +01:00
RELEASE-NOTES RELEASE-NOTES: synced with 6fa10c8fa 2018-01-13 10:30:25 +01:00
acinclude.m4 CURL_SIZEOF_LONG: removed, use only SIZEOF_LONG 2017-08-17 10:27:00 +02:00
appveyor.yml appveyor: add a win32 build 2017-10-27 23:40:04 +02:00
buildconf includes: remove curl/curlbuild.h and curl/curlrules.h 2017-06-14 11:07:33 +02:00
buildconf.bat includes: remove curl/curlbuild.h and curl/curlrules.h 2017-06-14 11:07:33 +02:00
configure.ac configure.ac: append extra linker flags instead of prepending them. 2018-01-13 10:46:57 +01:00
curl-config.in curl-config: add --ssl-backends 2017-12-06 00:12:48 +01:00
libcurl.pc.in URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
maketgz maketgz: remove old *.dist files before making the tarball 2017-08-10 22:56:49 +02:00

README.md

curl logo

CII Best Practices Coverity passed Build Status Coverage Status

Curl is a command-line tool for transferring data specified with URL syntax. Find out how to use curl by reading the curl.1 man page or the MANUAL document. Find out how to install Curl by reading the INSTALL document.

libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl.3 man page to learn how!

You find answers to the most frequent questions we get in the FAQ document.

Study the COPYING file for distribution terms and similar. If you distribute curl binaries or other binaries that involve libcurl, you might enjoy the LICENSE-MIXING document.

Contact

If you have problems, questions, ideas or suggestions, please contact us by posting to a suitable mailing list.

All contributors to the project are listed in the THANKS document.

Website

Visit the curl web site for the latest news and downloads.

Git

To download the very latest source off the Git server do this:

git clone https://github.com/curl/curl.git

(you'll get a directory named curl created, filled with the source code)

Notice

Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms.