Skip to content

Commit 320a609

Browse files
committed
Add. Support libcurl 7.52.1.
Fix. `setopt{ssl_verifyhost=true}` set option to `2` not to `1` Fix. Type and default value for `TLSAUTH_TYPE` option
1 parent 0ffad3c commit 320a609

File tree

9 files changed

+80
-4
lines changed

9 files changed

+80
-4
lines changed

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ shallow_clone: true
77

88
environment:
99
LR_EXTERNAL: c:\external
10-
CURL_VER: 7.51.0
10+
CURL_VER: 7.52.1
1111

1212
matrix:
1313
- LUA: "lua 5.1"

src/lceasy.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,22 @@ static int lcurl_opt_set_long_(lua_State *L, int opt){
253253
lcurl_easy_t *p = lcurl_geteasy(L);
254254
long val; CURLcode code;
255255

256-
if(lua_isboolean(L, 2)) val = lua_toboolean(L, 2);
256+
if(lua_isboolean(L, 2)){
257+
val = lua_toboolean(L, 2);
258+
if( val
259+
&& (opt == CURLOPT_SSL_VERIFYHOST)
260+
#if LCURL_CURL_VER_GE(7,52,0)
261+
&& (opt == CURLOPT_PROXY_SSL_VERIFYHOST)
262+
#endif
263+
){
264+
val = 2;
265+
}
266+
}
257267
else{
258268
luaL_argcheck(L, lua_type(L, 2) == LUA_TNUMBER, 2, "number or boolean expected");
259269
val = luaL_checklong(L, 2);
260270
}
261-
271+
262272
code = curl_easy_setopt(p->curl, opt, val);
263273
if(code != CURLE_OK){
264274
return lcurl_fail_ex(L, p->err_mode, LCURL_ERROR_EASY, code);

src/lcflags.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ FLG_ENTRY(PROXY_SOCKS4 ) /* added in 7.15.2 */
165165
FLG_ENTRY(PROXY_SOCKS5 ) /* added in 7.10.0 */
166166
FLG_ENTRY(PROXY_SOCKS4A ) /* added in 7.18.0 */
167167
FLG_ENTRY(PROXY_SOCKS5_HOSTNAME ) /* added in 7.18.0 */
168+
#if LCURL_CURL_VER_GE(7,52,0)
169+
FLG_ENTRY(PROXY_HTTPS )
170+
#endif
168171

169172
FLG_ENTRY(PAUSE_ALL ) /* added in 7.18.0 */
170173
FLG_ENTRY(PAUSE_CONT ) /* added in 7.18.0 */

src/lcinfoeasy.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ OPT_ENTRY( rtsp_cseq_recv, RTSP_CSEQ_RECV, LNG, 0)
4747
OPT_ENTRY( http_version, HTTP_VERSION, STR, 0)
4848
#endif
4949

50+
#if LCURL_CURL_VER_GE(7,52,0)
51+
OPT_ENTRY( proxy_ssl_verifyresult, PROXY_SSL_VERIFYRESULT, LNG, 0)
52+
OPT_ENTRY( protocol, PROTOCOL, LNG, 0)
53+
OPT_ENTRY( scheme, SCHEME, STR, 0)
54+
#endif
55+
5056
// OPT_ENTRY( PRIVATE, void )
5157
// OPT_ENTRY( CERTINFO, struct curl_certinfo *
5258
// OPT_ENTRY( TLS_SESSION, struct curl_tlssessioninfo *

src/lcopteasy.h

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ OPT_ENTRY( httpauth, HTTPAUTH, LNG, 0,
8888
#if LCURL_CURL_VER_GE(7,21,4)
8989
OPT_ENTRY( tlsauth_username, TLSAUTH_USERNAME, STR, LCURL_STORE_STRING, LCURL_DEFAULT_VALUE )
9090
OPT_ENTRY( tlsauth_password, TLSAUTH_PASSWORD, STR, LCURL_STORE_STRING, LCURL_DEFAULT_VALUE )
91-
OPT_ENTRY( tlsauth_type, TLSAUTH_TYPE, LNG, 0, CURL_TLSAUTH_NONE )
91+
OPT_ENTRY( tlsauth_type, TLSAUTH_TYPE, STR, 0, "" )
9292
#endif
9393
OPT_ENTRY( proxyauth, PROXYAUTH, LNG, 0, CURLAUTH_BASIC )
9494
#if LCURL_CURL_VER_GE(7,31,0)
@@ -355,6 +355,27 @@ OPT_ENTRY( connect_to, CONNECT_TO, LST, 0, LCUR
355355
OPT_ENTRY( keep_sending_on_error, KEEP_SENDING_ON_ERROR, LNG, 0, LCURL_DEFAULT_VALUE )
356356
#endif
357357

358+
#if LCURL_CURL_VER_GE(7,52,0)
359+
OPT_ENTRY( proxy_cainfo, PROXY_CAINFO, STR, 0, LCURL_DEFAULT_VALUE)
360+
OPT_ENTRY( proxy_capath, PROXY_CAPATH, STR, 0, LCURL_DEFAULT_VALUE)
361+
OPT_ENTRY( proxy_ssl_verifypeer, PROXY_SSL_VERIFYPEER, LNG, 0, 1)
362+
OPT_ENTRY( proxy_ssl_verifyhost, PROXY_SSL_VERIFYHOST, LNG, 0, 2)
363+
OPT_ENTRY( proxy_sslversion, PROXY_SSLVERSION, LNG, 0, CURL_SSLVERSION_DEFAULT)
364+
OPT_ENTRY( proxy_tlsauth_username, PROXY_TLSAUTH_USERNAME, STR, 0, LCURL_DEFAULT_VALUE)
365+
OPT_ENTRY( proxy_tlsauth_password, PROXY_TLSAUTH_PASSWORD, STR, 0, LCURL_DEFAULT_VALUE)
366+
OPT_ENTRY( proxy_tlsauth_type, PROXY_TLSAUTH_TYPE, STR, 0, "")
367+
OPT_ENTRY( proxy_sslcert, PROXY_SSLCERT, STR, 0, LCURL_DEFAULT_VALUE)
368+
OPT_ENTRY( proxy_sslcerttype, PROXY_SSLCERTTYPE, STR, 0, "PEM")
369+
OPT_ENTRY( proxy_sslkey, PROXY_SSLKEY, STR, 0, LCURL_DEFAULT_VALUE)
370+
OPT_ENTRY( proxy_sslkeytype, PROXY_SSLKEYTYPE, STR, 0, "PEM") /* default value not defined. Use same as for `SSLKEYTYPE` */
371+
OPT_ENTRY( proxy_keypasswd, PROXY_KEYPASSWD, STR, 0, LCURL_DEFAULT_VALUE)
372+
OPT_ENTRY( proxy_ssl_cipher_list, PROXY_SSL_CIPHER_LIST, STR, 0, LCURL_DEFAULT_VALUE)
373+
OPT_ENTRY( proxy_crlfile, PROXY_CRLFILE, STR, 0, LCURL_DEFAULT_VALUE)
374+
OPT_ENTRY( proxy_ssl_options, PROXY_SSL_OPTIONS, LNG, 0, LCURL_DEFAULT_VALUE)
375+
OPT_ENTRY( pre_proxy, PRE_PROXY, STR, 0, LCURL_DEFAULT_VALUE)
376+
OPT_ENTRY( proxy_pinnedpublickey, PROXY_PINNEDPUBLICKEY, STR, 0, LCURL_DEFAULT_VALUE)
377+
#endif
378+
358379
#ifdef LCURL__TCP_FASTOPEN
359380
# define TCP_FASTOPEN LCURL__TCP_FASTOPEN
360381
# undef LCURL__TCP_FASTOPEN

src/lcurl.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ static int lcurl_version_info(lua_State *L){
109109
#endif
110110
#ifdef CURL_VERSION_HTTP2
111111
lua_pushliteral(L, "HTTP2"); lua_pushboolean(L, data->features & CURL_VERSION_HTTP2 ); lua_rawset(L, -3);
112+
#endif
113+
#ifdef CURL_VERSION_HTTPS_PROXY
114+
lua_pushliteral(L, "HTTPS_PROXY"); lua_pushboolean(L, data->features & CURL_VERSION_HTTPS_PROXY ); lua_rawset(L, -3);
112115
#endif
113116
lua_setfield(L, -2, "features"); /* bitmask, see defines below */
114117

src/lcutils.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,32 @@ int lcurl_utils_apply_options(lua_State *L, int opt, int obj, int do_close,
304304
assert(lua_gettop(L) == top);
305305
return 0;
306306
}
307+
308+
void lcurl_stack_dump (lua_State *L){
309+
int i = 1, top = lua_gettop(L);
310+
311+
fprintf(stderr, " ---------------- Stack Dump ----------------\n" );
312+
while( i <= top ) {
313+
int t = lua_type(L, i);
314+
switch (t) {
315+
case LUA_TSTRING:
316+
fprintf(stderr, "%d(%d):`%s'\n", i, i - top - 1, lua_tostring(L, i));
317+
break;
318+
case LUA_TBOOLEAN:
319+
fprintf(stderr, "%d(%d): %s\n", i, i - top - 1,lua_toboolean(L, i) ? "true" : "false");
320+
break;
321+
case LUA_TNUMBER:
322+
fprintf(stderr, "%d(%d): %g\n", i, i - top - 1, lua_tonumber(L, i));
323+
break;
324+
default:
325+
lua_getglobal(L, "tostring");
326+
lua_pushvalue(L, i);
327+
lua_call(L, 1, 1);
328+
fprintf(stderr, "%d(%d): %s(%s)\n", i, i - top - 1, lua_typename(L, t), lua_tostring(L, -1));
329+
lua_pop(L, 1);
330+
break;
331+
}
332+
i++;
333+
}
334+
fprintf(stderr, " ------------ Stack Dump Finished ------------\n" );
335+
}

src/lcutils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,7 @@ int lcurl_util_pcall_method(lua_State *L, const char *name, int nargs, int nresu
7171
int lcurl_utils_apply_options(lua_State *L, int opt, int obj, int do_close,
7272
int error_mode, int error_type, int error_code
7373
);
74+
75+
void lcurl_stack_dump (lua_State *L);
76+
7477
#endif

src/lua/cURL/impl/cURL.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ Easy.setopt_proxytype = wrap_setopt_flags("proxytype", {
360360
["SOCKS5" ] = curl.PROXY_SOCKS5;
361361
["SOCKS4A" ] = curl.PROXY_SOCKS4A;
362362
["SOCKS5_HOSTNAME" ] = curl.PROXY_SOCKS5_HOSTNAME;
363+
["HTTPS" ] = curl.PROXY_HTTPS;
363364
})
364365

365366
Easy.setopt_httpauth = wrap_setopt_flags("httpauth", {

0 commit comments

Comments
 (0)