Commit 5b1fd2e5 authored by Robert Shearman's avatar Robert Shearman Committed by Alexandre Julliard

SSL doesn't need to use a different socket to unsecure communications.

parent 17cbf1cb
...@@ -61,7 +61,6 @@ typedef struct ...@@ -61,7 +61,6 @@ typedef struct
int socketFD; int socketFD;
#ifdef HAVE_OPENSSL_SSL_H #ifdef HAVE_OPENSSL_SSL_H
SSL *ssl_s; SSL *ssl_s;
int ssl_sock;
char *peek_msg; char *peek_msg;
char *peek_msg_mem; char *peek_msg_mem;
#endif #endif
......
...@@ -102,7 +102,6 @@ void NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL) ...@@ -102,7 +102,6 @@ void NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL)
{ {
#ifdef HAVE_OPENSSL_SSL_H #ifdef HAVE_OPENSSL_SSL_H
TRACE("using SSL connection\n"); TRACE("using SSL connection\n");
connection->ssl_sock = -1;
if (OpenSSL_ssl_handle) /* already initilzed everything */ if (OpenSSL_ssl_handle) /* already initilzed everything */
return; return;
OpenSSL_ssl_handle = wine_dlopen(SONAME_LIBSSL, RTLD_NOW, NULL, 0); OpenSSL_ssl_handle = wine_dlopen(SONAME_LIBSSL, RTLD_NOW, NULL, 0);
...@@ -174,22 +173,10 @@ void NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL) ...@@ -174,22 +173,10 @@ void NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL)
BOOL NETCON_connected(WININET_NETCONNECTION *connection) BOOL NETCON_connected(WININET_NETCONNECTION *connection)
{ {
if (!connection->useSSL)
{
if (connection->socketFD == -1) if (connection->socketFD == -1)
return FALSE; return FALSE;
return TRUE;
}
else else
{
#ifdef HAVE_OPENSSL_SSL_H
if (connection->ssl_sock == -1)
return FALSE;
return TRUE; return TRUE;
#else
return FALSE;
#endif
}
} }
/****************************************************************************** /******************************************************************************
...@@ -200,22 +187,15 @@ BOOL NETCON_connected(WININET_NETCONNECTION *connection) ...@@ -200,22 +187,15 @@ BOOL NETCON_connected(WININET_NETCONNECTION *connection)
BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain, BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
int type, int protocol) int type, int protocol)
{ {
if (!connection->useSSL) #ifndef HAVE_OPENSSL_SSL_H
{ if (connection->useSSL)
return FALSE;
#endif
connection->socketFD = socket(domain, type, protocol); connection->socketFD = socket(domain, type, protocol);
if (connection->socketFD == -1) if (connection->socketFD == -1)
return FALSE; return FALSE;
return TRUE; return TRUE;
}
else
{
#ifdef HAVE_OPENSSL_SSL_H
connection->ssl_sock = socket(domain, type, protocol);
return TRUE;
#else
return FALSE;
#endif
}
} }
/****************************************************************************** /******************************************************************************
...@@ -224,31 +204,27 @@ BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain, ...@@ -224,31 +204,27 @@ BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
*/ */
BOOL NETCON_close(WININET_NETCONNECTION *connection) BOOL NETCON_close(WININET_NETCONNECTION *connection)
{ {
if (!NETCON_connected(connection)) return FALSE;
if (!connection->useSSL)
{
int result; int result;
if (!NETCON_connected(connection)) return FALSE;
result = closesocket(connection->socketFD); result = closesocket(connection->socketFD);
connection->socketFD = -1; connection->socketFD = -1;
if (result == -1)
return FALSE;
return TRUE;
}
else
{
#ifdef HAVE_OPENSSL_SSL_H #ifdef HAVE_OPENSSL_SSL_H
closesocket(connection->ssl_sock); if (connection->useSSL)
connection->ssl_sock = -1; {
HeapFree(GetProcessHeap(),0,connection->peek_msg_mem); HeapFree(GetProcessHeap(),0,connection->peek_msg_mem);
connection->peek_msg = NULL; connection->peek_msg = NULL;
connection->peek_msg_mem = NULL; connection->peek_msg_mem = NULL;
/* FIXME should we call SSL_shutdown here?? Probably on whatever is the /* FIXME should we call SSL_shutdown here?? Probably on whatever is the
* opposite of NETCON_init.... */ * opposite of NETCON_init.... */
return TRUE;
#else
return FALSE;
#endif
} }
#endif
if (result == -1)
return FALSE;
return TRUE;
} }
/****************************************************************************** /******************************************************************************
...@@ -258,10 +234,10 @@ BOOL NETCON_close(WININET_NETCONNECTION *connection) ...@@ -258,10 +234,10 @@ BOOL NETCON_close(WININET_NETCONNECTION *connection)
BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr, BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr,
unsigned int addrlen) unsigned int addrlen)
{ {
if (!NETCON_connected(connection)) return FALSE;
if (!connection->useSSL)
{
int result; int result;
if (!NETCON_connected(connection)) return FALSE;
result = connect(connection->socketFD, serv_addr, addrlen); result = connect(connection->socketFD, serv_addr, addrlen);
if (result == -1) if (result == -1)
{ {
...@@ -269,31 +245,26 @@ BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *se ...@@ -269,31 +245,26 @@ BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *se
connection->socketFD = -1; connection->socketFD = -1;
return FALSE; return FALSE;
} }
return TRUE;
}
else
{
#ifdef HAVE_OPENSSL_SSL_H #ifdef HAVE_OPENSSL_SSL_H
if (connection->useSSL)
{
BIO *sbio; BIO *sbio;
ctx = pSSL_CTX_new(meth); ctx = pSSL_CTX_new(meth);
connection->ssl_s = pSSL_new(ctx); connection->ssl_s = pSSL_new(ctx);
if (connect(connection->ssl_sock, serv_addr, addrlen) == -1) sbio = pBIO_new_socket(connection->socketFD, BIO_NOCLOSE);
return FALSE;
sbio = pBIO_new_socket(connection->ssl_sock, BIO_NOCLOSE);
pSSL_set_bio(connection->ssl_s, sbio, sbio); pSSL_set_bio(connection->ssl_s, sbio, sbio);
if (pSSL_connect(connection->ssl_s) <= 0) if (pSSL_connect(connection->ssl_s) <= 0)
{ {
ERR("ssl couldn't connect\n"); ERR("ssl couldn't connect\n");
return FALSE; return FALSE;
} }
return TRUE;
#else
return FALSE;
#endif
} }
#endif
return TRUE;
} }
/****************************************************************************** /******************************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment