mirror of
https://github.com/curl/curl.git
synced 2026-04-11 12:01:42 +08:00
parent
86ea3abd41
commit
1495489c41
1
.github/scripts/badwords.txt
vendored
1
.github/scripts/badwords.txt
vendored
@ -93,3 +93,4 @@ file names\b:filenames
|
||||
\bmanpages[^./;=&{:-]:man pages
|
||||
\bmanpage[^si./;=&{:-]:man page
|
||||
favour:favor
|
||||
basically:rephrase?
|
||||
|
||||
14
docs/FAQ.md
14
docs/FAQ.md
@ -431,10 +431,10 @@ can imagine.
|
||||
|
||||
## What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
|
||||
|
||||
curl adheres to the HTTP spec, which basically means you can play with *any*
|
||||
protocol that is built on top of HTTP. Protocols such as SOAP, WebDAV and
|
||||
XML-RPC are all such ones. You can use `-X` to set custom requests and -H to
|
||||
set custom headers (or replace internally generated ones).
|
||||
curl adheres to the HTTP spec, which means you can play with *any* protocol
|
||||
that is built on top of HTTP. Protocols such as SOAP, WebDAV and XML-RPC are
|
||||
all such ones. You can use `-X` to set custom requests and -H to set custom
|
||||
headers (or replace internally generated ones).
|
||||
|
||||
Using libcurl of course also works and you would use the proper library
|
||||
options to do the same.
|
||||
@ -1330,9 +1330,9 @@ their projects, no matter what license they already have in use.
|
||||
## What are my obligations when using libcurl in my commercial apps?
|
||||
|
||||
Next to none. All you need to adhere to is the MIT-style license (stated in
|
||||
the COPYING file) which basically says you have to include the copyright
|
||||
notice in *all copies* and that you may not use the copyright holder's name
|
||||
when promoting your software.
|
||||
the COPYING file) which says you have to include the copyright notice in *all
|
||||
copies* and that you may not use the copyright holder's name when promoting
|
||||
your software.
|
||||
|
||||
You do not have to release any of your source code.
|
||||
|
||||
|
||||
15
docs/TODO.md
15
docs/TODO.md
@ -92,8 +92,8 @@ pings to keep such ones alive even when not actively doing transfers on them.
|
||||
|
||||
Given a URL that for example contains spaces, libcurl could have an option
|
||||
that would try somewhat harder than it does now and convert spaces to %20 and
|
||||
perhaps URL encoded byte values over 128 etc (basically do what the redirect
|
||||
following code already does).
|
||||
perhaps URL encoded byte values over 128 etc (do what the redirect following
|
||||
code already does).
|
||||
|
||||
[curl issue 514](https://github.com/curl/curl/issues/514)
|
||||
|
||||
@ -880,12 +880,11 @@ See [curl issue 6150](https://github.com/curl/curl/issues/6150)
|
||||
## `-J` and `-O` with %-encoded filenames
|
||||
|
||||
`-J`/`--remote-header-name` does not decode %-encoded filenames. RFC 6266
|
||||
details how it should be done. The can of worm is basically that we have no
|
||||
charset handling in curl and ASCII >=128 is a challenge for us. Not to mention
|
||||
that decoding also means that we need to check for nastiness that is
|
||||
attempted, like `../` sequences and the like. Probably everything to the left
|
||||
of any embedded slashes should be cut off. See
|
||||
https://curl.se/bug/view.cgi?id=1294
|
||||
details how it should be done. The can of worm is that we have no charset
|
||||
handling in curl and ASCII >=128 is a challenge for us. Not to mention that
|
||||
decoding also means that we need to check for nastiness that is attempted,
|
||||
like `../` sequences and the like. Probably everything to the left of any
|
||||
embedded slashes should be cut off. See https://curl.se/bug/view.cgi?id=1294
|
||||
|
||||
`-O` also does not decode %-encoded names, and while it has even less
|
||||
information about the charset involved the process is similar to the `-J`
|
||||
|
||||
@ -201,10 +201,9 @@ Example, send two POSTs:
|
||||
|
||||
Sometimes you need to operate on several URLs in a single command line and do
|
||||
different HTTP methods on each. For this, you might enjoy the
|
||||
[`--next`](https://curl.se/docs/manpage.html#-:) option. It is basically a
|
||||
separator that separates a bunch of options from the next. All the URLs
|
||||
before `--next` get the same method and get all the POST data merged into
|
||||
one.
|
||||
[`--next`](https://curl.se/docs/manpage.html#-:) option. It is a separator
|
||||
that separates a bunch of options from the next. All the URLs before `--next`
|
||||
get the same method and get all the POST data merged into one.
|
||||
|
||||
When curl reaches the `--next` on the command line, it resets the method and
|
||||
the POST data and allow a new set.
|
||||
|
||||
@ -105,10 +105,10 @@ issues.
|
||||
|
||||
Who is on this list? There are a couple of criteria you must meet, and then we
|
||||
might ask you to join the list or you can ask to join it. It really is not a
|
||||
formal process. We basically only require that you have a long-term presence
|
||||
in the curl project and you have shown an understanding for the project and
|
||||
its way of working. You must have been around for a good while and you should
|
||||
have no plans of vanishing in the near future.
|
||||
formal process. We only require that you have a long-term presence in the curl
|
||||
project and you have shown an understanding for the project and its way of
|
||||
working. You must have been around for a good while and you should have no
|
||||
plans of vanishing in the near future.
|
||||
|
||||
We do not make the list of participants public mostly because it tends to vary
|
||||
somewhat over time and a list somewhere only risks getting outdated.
|
||||
|
||||
@ -162,9 +162,9 @@ understanding.
|
||||
# Handle the Easy libcurl
|
||||
|
||||
To use the easy interface, you must first create yourself an easy handle. You
|
||||
need one handle for each easy session you want to perform. Basically, you
|
||||
should use one handle for every thread you plan to use for transferring. You
|
||||
must never share the same handle in multiple threads.
|
||||
need one handle for each easy session you want to perform. You should use one
|
||||
handle for every thread you plan to use for transferring. You must never share
|
||||
the same handle in multiple threads.
|
||||
|
||||
Get an easy handle with
|
||||
~~~c
|
||||
@ -794,8 +794,8 @@ CURLOPT_PROGRESSDATA(3). libcurl does not touch it.
|
||||
|
||||
# libcurl with C++
|
||||
|
||||
There is basically only one thing to keep in mind when using C++ instead of C
|
||||
when interfacing libcurl:
|
||||
There is only one thing to keep in mind when using C++ instead of C when
|
||||
interfacing libcurl:
|
||||
|
||||
The callbacks CANNOT be non-static class member functions
|
||||
|
||||
@ -931,8 +931,8 @@ for such innovative actions either!
|
||||
|
||||
## Proxy Auto-Config
|
||||
|
||||
Netscape first came up with this. It is basically a webpage (usually using a
|
||||
.pac extension) with a JavaScript that when executed by the browser with the
|
||||
Netscape first came up with this. It is a webpage (usually using a .pac
|
||||
extension) with a JavaScript that when executed by the browser with the
|
||||
requested URL as input, returns information to the browser on how to connect
|
||||
to the URL. The returned information might be "DIRECT" (which means no proxy
|
||||
should be used), "PROXY host:port" (to tell the browser where the proxy for
|
||||
|
||||
@ -275,10 +275,10 @@ New tests are added by finding a free number in `tests/data/Makefile.am`.
|
||||
|
||||
## Write tests
|
||||
|
||||
Here's a quick description on writing test cases. We basically have three
|
||||
kinds of tests: the ones that test the curl tool, the ones that build small
|
||||
applications and test libcurl directly and the unit tests that test
|
||||
individual (possibly internal) functions.
|
||||
Here's a quick description on writing test cases. We have three kinds of
|
||||
tests: the ones that test the curl tool, the ones that build small
|
||||
applications and test libcurl directly and the unit tests that test individual
|
||||
(possibly internal) functions.
|
||||
|
||||
### test data
|
||||
|
||||
|
||||
@ -3099,11 +3099,10 @@ typedef enum {
|
||||
CURLVERSION_LAST /* never actually use this */
|
||||
} CURLversion;
|
||||
|
||||
/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
|
||||
basically all programs ever that want to get version information. It is
|
||||
meant to be a built-in version number for what kind of struct the caller
|
||||
expects. If the struct ever changes, we redefine the NOW to another enum
|
||||
from above. */
|
||||
/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by programs
|
||||
that want to get version information. It is meant to be a built-in
|
||||
version number for what kind of struct the caller expects. If the struct
|
||||
ever changes, we redefine the NOW to another enum from above. */
|
||||
#define CURLVERSION_NOW CURLVERSION_TWELFTH
|
||||
|
||||
struct curl_version_info_data {
|
||||
|
||||
@ -266,11 +266,11 @@ static CURLcode sock_assign_addr(struct Curl_sockaddr_ex *dest,
|
||||
uint8_t transport)
|
||||
{
|
||||
/*
|
||||
* The Curl_sockaddr_ex structure is basically libcurl's external API
|
||||
* curl_sockaddr structure with enough space available to directly hold
|
||||
* any protocol-specific address structures. The variable declared here
|
||||
* will be used to pass / receive data to/from the fopensocket callback
|
||||
* if this has been set, before that, it is initialized from parameters.
|
||||
* The Curl_sockaddr_ex structure is libcurl's external API curl_sockaddr
|
||||
* structure with enough space available to directly hold any
|
||||
* protocol-specific address structures. The variable declared here will be
|
||||
* used to pass / receive data to/from the fopensocket callback if this has
|
||||
* been set, before that, it is initialized from parameters.
|
||||
*/
|
||||
dest->family = ai->ai_family;
|
||||
switch(transport) {
|
||||
|
||||
@ -35,8 +35,8 @@ struct Curl_sockaddr_ex;
|
||||
struct ip_quadruple;
|
||||
|
||||
/*
|
||||
* The Curl_sockaddr_ex structure is basically libcurl's external API
|
||||
* curl_sockaddr structure with enough space available to directly hold any
|
||||
* The Curl_sockaddr_ex structure is libcurl's external API curl_sockaddr
|
||||
* structure with enough space available to directly hold any
|
||||
* protocol-specific address structures. The variable declared here will be
|
||||
* used to pass / receive data to/from the fopensocket callback if this has
|
||||
* been set, before that, it is initialized from parameters.
|
||||
|
||||
@ -2264,8 +2264,7 @@ static CURLcode ftp_statemach(struct Curl_easy *data,
|
||||
* connected.
|
||||
*
|
||||
* 'complete' can return 0 for incomplete, 1 for done and -1 for go back
|
||||
* (which basically is only for when PASV is being sent to retry a failed
|
||||
* EPSV).
|
||||
* (which is for when PASV is being sent to retry a failed EPSV).
|
||||
*/
|
||||
static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
|
||||
{
|
||||
|
||||
@ -974,9 +974,8 @@ static CURLcode auth_basic(struct Curl_easy *data,
|
||||
*availp |= CURLAUTH_BASIC;
|
||||
authp->avail |= CURLAUTH_BASIC;
|
||||
if(authp->picked == CURLAUTH_BASIC) {
|
||||
/* We asked for Basic authentication but got a 40X back
|
||||
anyway, which basically means our name+password is not
|
||||
valid. */
|
||||
/* We asked for Basic authentication but got a 40X back anyway, which
|
||||
means our name+password is not valid. */
|
||||
authp->avail = CURLAUTH_NONE;
|
||||
infof(data, "Basic authentication problem, ignoring.");
|
||||
data->state.authproblem = TRUE;
|
||||
@ -993,8 +992,8 @@ static CURLcode auth_bearer(struct Curl_easy *data,
|
||||
*availp |= CURLAUTH_BEARER;
|
||||
authp->avail |= CURLAUTH_BEARER;
|
||||
if(authp->picked == CURLAUTH_BEARER) {
|
||||
/* We asked for Bearer authentication but got a 40X back
|
||||
anyway, which basically means our token is not valid. */
|
||||
/* We asked for Bearer authentication but got a 40X back anyway, which
|
||||
means our token is not valid. */
|
||||
authp->avail = CURLAUTH_NONE;
|
||||
infof(data, "Bearer authentication problem, ignoring.");
|
||||
data->state.authproblem = TRUE;
|
||||
|
||||
14
lib/multi.c
14
lib/multi.c
@ -693,10 +693,10 @@ static CURLcode multi_done(struct Curl_easy *data,
|
||||
case CURLE_ABORTED_BY_CALLBACK:
|
||||
case CURLE_READ_ERROR:
|
||||
case CURLE_WRITE_ERROR:
|
||||
/* When we are aborted due to a callback return code it basically have to
|
||||
be counted as premature as there is trouble ahead if we do not. We have
|
||||
many callbacks and protocols work differently, we could potentially do
|
||||
this more fine-grained in the future. */
|
||||
/* When we are aborted due to a callback return code it has to be counted
|
||||
as premature as there is trouble ahead if we do not. We have many
|
||||
callbacks and protocols work differently, we could potentially do this
|
||||
more fine-grained in the future. */
|
||||
premature = TRUE;
|
||||
FALLTHROUGH();
|
||||
default:
|
||||
@ -1694,9 +1694,9 @@ static CURLcode multi_do(struct Curl_easy *data, bool *done)
|
||||
}
|
||||
|
||||
/*
|
||||
* multi_do_more() is called during the DO_MORE multi state. It is basically a
|
||||
* second stage DO state which (wrongly) was introduced to support FTP's
|
||||
* second connection.
|
||||
* multi_do_more() is called during the DO_MORE multi state. It is a second
|
||||
* stage DO state which (wrongly) was introduced to support FTP's second
|
||||
* connection.
|
||||
*
|
||||
* 'complete' can return 0 for incomplete, 1 for done and -1 for go back to
|
||||
* DOING state there is more work to do!
|
||||
|
||||
@ -935,8 +935,8 @@ static CURLcode tftp_connect(struct Curl_easy *data, bool *done)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* we do not keep TFTP connections up basically because there is none or
|
||||
* little gain for UDP */
|
||||
/* we do not keep TFTP connections up because there is none or little gain
|
||||
* for UDP */
|
||||
connclose(conn, "TFTP");
|
||||
|
||||
state->data = data;
|
||||
|
||||
@ -574,8 +574,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
|
||||
|
||||
/*
|
||||
* Set user-agent. Used for HTTP, but since we can attempt to tunnel
|
||||
* basically anything through an HTTP proxy we cannot limit this based on
|
||||
* protocol.
|
||||
* anything through an HTTP proxy we cannot limit this based on protocol.
|
||||
*/
|
||||
if(!result && data->set.str[STRING_USERAGENT]) {
|
||||
curlx_free(data->state.aptr.uagent);
|
||||
|
||||
@ -514,8 +514,8 @@ struct Curl_scheme {
|
||||
const struct Curl_protocol *run; /* implementation */
|
||||
curl_prot_t protocol; /* See CURLPROTO_* - this needs to be the single
|
||||
specific protocol bit */
|
||||
curl_prot_t family; /* single bit for protocol family; basically the
|
||||
non-TLS name of the protocol this is */
|
||||
curl_prot_t family; /* single bit for protocol family; the non-TLS name
|
||||
of the protocol this is */
|
||||
uint32_t flags; /* Extra particular characteristics, see PROTOPT_* */
|
||||
uint16_t defport; /* Default port. */
|
||||
};
|
||||
|
||||
@ -1984,7 +1984,7 @@ static int test_sws(int argc, const char *argv[])
|
||||
int keepalive_secs = 5;
|
||||
const char *protocol_type = "HTTP";
|
||||
|
||||
/* a default CONNECT port is basically pointless but still ... */
|
||||
/* a default CONNECT port is pointless, but still ... */
|
||||
size_t socket_idx;
|
||||
|
||||
pidname = ".http.pid";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user