1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-23 08:38:49 -05:00

gskit: fix CURL_DISABLE_PROXY build

Removed localfd and remotefd from ssl_backend_data (ued only with proxy
connection). Function pipe_ssloverssl return always 0, when proxy is not
used.

Closes #6981
This commit is contained in:
MAntoniak 2021-04-29 13:25:35 +02:00 committed by Daniel Stenberg
parent 71bffe73f8
commit ea17a022b3
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -101,8 +101,10 @@
struct ssl_backend_data { struct ssl_backend_data {
gsk_handle handle; gsk_handle handle;
int iocport; int iocport;
#ifndef CURL_DISABLE_PROXY
int localfd; int localfd;
int remotefd; int remotefd;
#endif
}; };
#define BACKEND connssl->backend #define BACKEND connssl->backend
@ -516,6 +518,7 @@ static void close_async_handshake(struct ssl_connect_data *connssl)
static int pipe_ssloverssl(struct connectdata *conn, int sockindex, static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
int directions) int directions)
{ {
#ifndef CURL_DISABLE_PROXY
struct ssl_connect_data *connssl = &conn->ssl[sockindex]; struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex]; struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex];
fd_set fds_read; fd_set fds_read;
@ -584,6 +587,9 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
} }
return ret; /* OK */ return ret; /* OK */
#else
return 0;
#endif
} }
@ -597,6 +603,7 @@ static void close_one(struct ssl_connect_data *connssl, struct Curl_easy *data,
while(pipe_ssloverssl(conn, sockindex, SOS_WRITE) > 0) while(pipe_ssloverssl(conn, sockindex, SOS_WRITE) > 0)
; ;
BACKEND->handle = (gsk_handle) NULL; BACKEND->handle = (gsk_handle) NULL;
#ifndef CURL_DISABLE_PROXY
if(BACKEND->localfd >= 0) { if(BACKEND->localfd >= 0) {
close(BACKEND->localfd); close(BACKEND->localfd);
BACKEND->localfd = -1; BACKEND->localfd = -1;
@ -605,6 +612,7 @@ static void close_one(struct ssl_connect_data *connssl, struct Curl_easy *data,
close(BACKEND->remotefd); close(BACKEND->remotefd);
BACKEND->remotefd = -1; BACKEND->remotefd = -1;
} }
#endif
} }
if(BACKEND->iocport >= 0) if(BACKEND->iocport >= 0)
close_async_handshake(connssl); close_async_handshake(connssl);
@ -711,15 +719,19 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
const char *sni; const char *sni;
unsigned int protoflags = 0; unsigned int protoflags = 0;
Qso_OverlappedIO_t commarea; Qso_OverlappedIO_t commarea;
#ifndef CURL_DISABLE_PROXY
int sockpair[2]; int sockpair[2];
static const int sobufsize = CURL_MAX_WRITE_SIZE; static const int sobufsize = CURL_MAX_WRITE_SIZE;
#endif
/* Create SSL environment, start (preferably asynchronous) handshake. */ /* Create SSL environment, start (preferably asynchronous) handshake. */
BACKEND->handle = (gsk_handle) NULL; BACKEND->handle = (gsk_handle) NULL;
BACKEND->iocport = -1; BACKEND->iocport = -1;
#ifndef CURL_DISABLE_PROXY
BACKEND->localfd = -1; BACKEND->localfd = -1;
BACKEND->remotefd = -1; BACKEND->remotefd = -1;
#endif
/* GSKit supports two ways of specifying an SSL context: either by /* GSKit supports two ways of specifying an SSL context: either by
* application identifier (that should have been defined at the system * application identifier (that should have been defined at the system
@ -758,6 +770,7 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
if(result) if(result)
return result; return result;
#ifndef CURL_DISABLE_PROXY
/* Establish a pipelining socket pair for SSL over SSL. */ /* Establish a pipelining socket pair for SSL over SSL. */
if(conn->proxy_ssl[sockindex].use) { if(conn->proxy_ssl[sockindex].use) {
if(Curl_socketpair(0, 0, 0, sockpair)) if(Curl_socketpair(0, 0, 0, sockpair))
@ -775,6 +788,7 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
curlx_nonblock(BACKEND->localfd, TRUE); curlx_nonblock(BACKEND->localfd, TRUE);
curlx_nonblock(BACKEND->remotefd, TRUE); curlx_nonblock(BACKEND->remotefd, TRUE);
} }
#endif
/* Determine which SSL/TLS version should be enabled. */ /* Determine which SSL/TLS version should be enabled. */
sni = hostname; sni = hostname;
@ -827,8 +841,13 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
if(!result) if(!result)
result = set_numeric(data, BACKEND->handle, GSK_OS400_READ_TIMEOUT, 1); result = set_numeric(data, BACKEND->handle, GSK_OS400_READ_TIMEOUT, 1);
if(!result) if(!result)
#ifndef CURL_DISABLE_PROXY
result = set_numeric(data, BACKEND->handle, GSK_FD, BACKEND->localfd >= 0? result = set_numeric(data, BACKEND->handle, GSK_FD, BACKEND->localfd >= 0?
BACKEND->localfd: conn->sock[sockindex]); BACKEND->localfd: conn->sock[sockindex]);
#else
result = set_numeric(data, BACKEND->handle, GSK_FD,
conn->sock[sockindex]);
#endif
if(!result) if(!result)
result = set_ciphers(data, BACKEND->handle, &protoflags); result = set_ciphers(data, BACKEND->handle, &protoflags);
if(!protoflags) { if(!protoflags) {
@ -897,10 +916,12 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
else if(errno != ENOBUFS) else if(errno != ENOBUFS)
result = gskit_status(data, GSK_ERROR_IO, result = gskit_status(data, GSK_ERROR_IO,
"QsoCreateIOCompletionPort()", 0); "QsoCreateIOCompletionPort()", 0);
#ifndef CURL_DISABLE_PROXY
else if(conn->proxy_ssl[sockindex].use) { else if(conn->proxy_ssl[sockindex].use) {
/* Cannot pipeline while handshaking synchronously. */ /* Cannot pipeline while handshaking synchronously. */
result = CURLE_SSL_CONNECT_ERROR; result = CURLE_SSL_CONNECT_ERROR;
} }
#endif
else { else {
/* No more completion port available. Use synchronous IO. */ /* No more completion port available. Use synchronous IO. */
result = gskit_status(data, gsk_secure_soc_init(BACKEND->handle), result = gskit_status(data, gsk_secure_soc_init(BACKEND->handle),
@ -1158,7 +1179,9 @@ static void gskit_close(struct Curl_easy *data, struct connectdata *conn,
int sockindex) int sockindex)
{ {
close_one(&conn->ssl[sockindex], data, conn, sockindex); close_one(&conn->ssl[sockindex], data, conn, sockindex);
#ifndef CURL_DISABLE_PROXY
close_one(&conn->proxy_ssl[sockindex], data, conn, sockindex); close_one(&conn->proxy_ssl[sockindex], data, conn, sockindex);
#endif
} }