remote_port: allow connect to port 0
Port number zero is perfectly allowed to connect to. I moved to storing the remote port number in an int so that -1 means undefined and 0-65535 can be used for legitimate port numbers.
This commit is contained in:
parent
0b3750b5c2
commit
219a0fbe76
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -92,7 +92,7 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
|
|||||||
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
|
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
|
||||||
int sockindex,
|
int sockindex,
|
||||||
const char *hostname,
|
const char *hostname,
|
||||||
unsigned short remote_port)
|
int remote_port)
|
||||||
{
|
{
|
||||||
int subversion=0;
|
int subversion=0;
|
||||||
struct SessionHandle *data=conn->data;
|
struct SessionHandle *data=conn->data;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -26,7 +26,7 @@
|
|||||||
/* ftp can use this as well */
|
/* ftp can use this as well */
|
||||||
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
|
CURLcode Curl_proxyCONNECT(struct connectdata *conn,
|
||||||
int tunnelsocket,
|
int tunnelsocket,
|
||||||
const char *hostname, unsigned short remote_port);
|
const char *hostname, int remote_port);
|
||||||
|
|
||||||
/* Default proxy timeout in milliseconds */
|
/* Default proxy timeout in milliseconds */
|
||||||
#define PROXY_TIMEOUT (3600*1000)
|
#define PROXY_TIMEOUT (3600*1000)
|
||||||
|
@ -3553,6 +3553,7 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
|
|||||||
conn->tempsock[1] = CURL_SOCKET_BAD; /* no file descriptor */
|
conn->tempsock[1] = CURL_SOCKET_BAD; /* no file descriptor */
|
||||||
conn->connection_id = -1; /* no ID */
|
conn->connection_id = -1; /* no ID */
|
||||||
conn->port = -1; /* unknown at this point */
|
conn->port = -1; /* unknown at this point */
|
||||||
|
conn->remote_port = -1; /* unknown */
|
||||||
|
|
||||||
/* Default protocol-independent behavior doesn't support persistent
|
/* Default protocol-independent behavior doesn't support persistent
|
||||||
connections, so we set this to force-close. Protocols that support
|
connections, so we set this to force-close. Protocols that support
|
||||||
@ -4075,7 +4076,7 @@ static CURLcode setup_connection_internals(struct connectdata *conn)
|
|||||||
|
|
||||||
/* only if remote_port was not already parsed off the URL we use the
|
/* only if remote_port was not already parsed off the URL we use the
|
||||||
default port number */
|
default port number */
|
||||||
if(!conn->remote_port)
|
if(conn->remote_port < 0)
|
||||||
conn->remote_port = (unsigned short)conn->given->defport;
|
conn->remote_port = (unsigned short)conn->given->defport;
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
|
@ -388,7 +388,7 @@ struct curl_ssl_session {
|
|||||||
void *sessionid; /* as returned from the SSL layer */
|
void *sessionid; /* as returned from the SSL layer */
|
||||||
size_t idsize; /* if known, otherwise 0 */
|
size_t idsize; /* if known, otherwise 0 */
|
||||||
long age; /* just a number, the higher the more recent */
|
long age; /* just a number, the higher the more recent */
|
||||||
unsigned short remote_port; /* remote port to connect to */
|
int remote_port; /* remote port to connect to */
|
||||||
struct ssl_config_data ssl_config; /* setup for this session */
|
struct ssl_config_data ssl_config; /* setup for this session */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -868,8 +868,7 @@ struct connectdata {
|
|||||||
struct hostname proxy;
|
struct hostname proxy;
|
||||||
|
|
||||||
long port; /* which port to use locally */
|
long port; /* which port to use locally */
|
||||||
unsigned short remote_port; /* what remote port to connect to,
|
int remote_port; /* what remote port to connect to, not the proxy port! */
|
||||||
not the proxy port! */
|
|
||||||
|
|
||||||
/* 'primary_ip' and 'primary_port' get filled with peer's numerical
|
/* 'primary_ip' and 'primary_port' get filled with peer's numerical
|
||||||
ip address and port number whenever an outgoing connection is
|
ip address and port number whenever an outgoing connection is
|
||||||
|
Loading…
x
Reference in New Issue
Block a user