--libcurl: fix for non-zero default options
If the default value for an option taking a long as its value is non zero, and it is set by zero by a command line option, then that command line option is not reflected in --libcurl's output. This is because line 520-521 of tool_setopt.c look like: if(!lval) skip = TRUE; An example of a command-line option doing so is the -k option that sets CURLOPT_SLL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST to 0L, when the defaults are non-zero.
This commit is contained in:
parent
533c31b785
commit
4ed6b07d8d
@ -39,6 +39,7 @@
|
|||||||
/* and finally any "NONE" value. */
|
/* and finally any "NONE" value. */
|
||||||
|
|
||||||
#define NV(e) {#e, e}
|
#define NV(e) {#e, e}
|
||||||
|
#define NV1(e, v) {#e, (v)}
|
||||||
#define NVEND {NULL, 0} /* sentinel to mark end of list */
|
#define NVEND {NULL, 0} /* sentinel to mark end of list */
|
||||||
|
|
||||||
const NameValue setopt_nv_CURLPROXY[] = {
|
const NameValue setopt_nv_CURLPROXY[] = {
|
||||||
@ -122,6 +123,13 @@ const NameValue setopt_nv_CURLPROTO[] = {
|
|||||||
NVEND,
|
NVEND,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* These options have non-zero default values. */
|
||||||
|
static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
|
||||||
|
NV1(CURLOPT_SSL_VERIFYPEER, 1),
|
||||||
|
NV1(CURLOPT_SSL_VERIFYHOST, 1),
|
||||||
|
NVEND
|
||||||
|
};
|
||||||
|
|
||||||
/* Format and add code; jump to nomem on malloc error */
|
/* Format and add code; jump to nomem on malloc error */
|
||||||
#define ADD(args) do { \
|
#define ADD(args) do { \
|
||||||
ret = easysrc_add args; \
|
ret = easysrc_add args; \
|
||||||
@ -453,10 +461,19 @@ CURLcode tool_setopt(CURL *curl, bool str, struct Configurable *config,
|
|||||||
if(tag < CURLOPTTYPE_OBJECTPOINT) {
|
if(tag < CURLOPTTYPE_OBJECTPOINT) {
|
||||||
/* Value is expected to be a long */
|
/* Value is expected to be a long */
|
||||||
long lval = va_arg(arg, long);
|
long lval = va_arg(arg, long);
|
||||||
|
long defval = 0L;
|
||||||
|
const NameValue *nv = NULL;
|
||||||
|
for(nv=setopt_nv_CURLNONZERODEFAULTS; nv->name; nv++) {
|
||||||
|
if(!strcmp(name, nv->name)) {
|
||||||
|
defval = nv->value;
|
||||||
|
break; /* found it */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%ldL", lval);
|
snprintf(buf, sizeof(buf), "%ldL", lval);
|
||||||
value = buf;
|
value = buf;
|
||||||
ret = curl_easy_setopt(curl, tag, lval);
|
ret = curl_easy_setopt(curl, tag, lval);
|
||||||
if(!lval)
|
if(lval == defval)
|
||||||
skip = TRUE;
|
skip = TRUE;
|
||||||
}
|
}
|
||||||
else if(tag < CURLOPTTYPE_OFF_T) {
|
else if(tag < CURLOPTTYPE_OFF_T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user