Ignore:
Timestamp:
Jan 9, 2017, 11:09:38 AM (2 years ago)
Author:
jrpelegrina
Message:

Update new version: 3.15.02

File:
1 edited

Legend:

Unmodified
Added
Removed
  • filezilla/trunk/fuentes/src/engine/tlssocket.cpp

    r130 r3185  
    33#include "tlssocket.h"
    44#include "ControlSocket.h"
     5
     6#include <libfilezilla/iputils.hpp>
    57
    68#include <gnutls/x509.h>
     
    2628#endif
    2729
    28 CTlsSocket::CTlsSocket(CEventHandler* pEvtHandler, CSocket& socket, CControlSocket* pOwner)
    29         : CEventHandler(pOwner->event_loop_)
     30CTlsSocket::CTlsSocket(event_handler* pEvtHandler, CSocket& socket, CControlSocket* pOwner)
     31        : event_handler(pOwner->event_loop_)
    3032        , CBackend(pEvtHandler)
    3133        , m_pOwner(pOwner)
     
    4042CTlsSocket::~CTlsSocket()
    4143{
    42         RemoveHandler();
     44        remove_handler();
    4345
    4446        Uninit();
     
    8183}
    8284
     85bool CTlsSocket::SetClientCertificate(fz::native_string const& keyfile, fz::native_string const& certs, fz::native_string const& password)
     86{
     87        if (!m_certCredentials) {
     88                return false;
     89        }
     90
     91        int res = gnutls_certificate_set_x509_key_file2(m_certCredentials, fz::to_string(certs).c_str(),
     92                fz::to_string(keyfile).c_str(), GNUTLS_X509_FMT_PEM, password.empty() ? 0 : fz::to_utf8(password).c_str(), 0);
     93        if (res < 0) {
     94                LogError(res, _T("gnutls_certificate_set_x509_key_file2"));
     95                Uninit();
     96                return false;
     97        }
     98
     99        return true;
     100}
     101
    83102bool CTlsSocket::InitSession()
    84103{
     104        if (!m_certCredentials) {
     105                Uninit();
     106                return false;
     107        }
     108
    85109        int res = gnutls_init(&m_session, GNUTLS_CLIENT);
    86110        if (res) {
     
    276300                if (error == EAGAIN) {
    277301                        if (m_canCheckCloseSocket && !m_pSocketBackend->IsWaiting(CRateLimiter::inbound)) {
    278                                 SendEvent<CSocketEvent>(m_pSocketBackend, SocketEventType::close, 0);
     302                                send_event<CSocketEvent>(m_pSocketBackend, SocketEventType::close, 0);
    279303                        }
    280304                }
     
    290314
    291315        if (m_canCheckCloseSocket) {
    292                 SendEvent<CSocketEvent>(m_pSocketBackend, SocketEventType::close, 0);
     316                send_event<CSocketEvent>(m_pSocketBackend, SocketEventType::close, 0);
    293317        }
    294318
     
    304328}
    305329
    306 void CTlsSocket::operator()(CEventBase const& ev)
    307 {
    308         Dispatch<CSocketEvent>(ev, this, &CTlsSocket::OnSocketEvent);
     330void CTlsSocket::operator()(fz::event_base const& ev)
     331{
     332        fz::dispatch<CSocketEvent>(ev, this, &CTlsSocket::OnSocketEvent);
    309333}
    310334
     
    343367
    344368                        //Uninit();
    345                         m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::close, 0);
     369                        m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::close, 0);
    346370                }
    347371                break;
     
    459483        }
    460484
    461         if( !hostname.empty() && !IsIpAddress(hostname) ) {
     485        if (!hostname.empty() && fz::get_address_type(hostname.ToStdWstring()) == fz::address_type::unknown) {
    462486                const wxWX2MBbuf utf8 = hostname.mb_str(wxConvUTF8);
    463                 if( utf8 ) {
     487                if (utf8) {
    464488                        int res = gnutls_server_name_set( m_session, GNUTLS_NAME_DNS, utf8, strlen(utf8) );
    465                         if( res ) {
     489                        if (res) {
    466490                                LogError(res, _T("gnutls_server_name_set"), MessageType::Debug_Warning );
    467491                        }
     
    505529                        int error = Shutdown();
    506530                        if (!error || error != EAGAIN) {
    507                                 m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::close, 0);
     531                                m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::close, 0);
    508532                        }
    509533                }
     
    647671
    648672        if (m_canTriggerRead) {
    649                 m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::read, 0);
     673                m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::read, 0);
    650674                m_canTriggerRead = false;
    651675        }
    652676
    653677        if (m_canTriggerWrite) {
    654                 m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::write, 0);
     678                m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::write, 0);
    655679                m_canTriggerWrite = false;
    656680        }
     
    724748
    725749        if (send_close) {
    726                 m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::close, m_socket_error);
     750                m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::close, m_socket_error);
    727751        }
    728752}
     
    796820                m_tlsState = TlsState::closed;
    797821
    798                 m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::close, 0);
     822                m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::close, 0);
    799823
    800824                return;
     
    820844
    821845                if (m_tlsState == TlsState::conn) {
    822                         m_pEvtHandler->SendEvent<CSocketEvent>(this, SocketEventType::connection, 0);
     846                        m_pEvtHandler->send_event<CSocketEvent>(this, SocketEventType::connection, 0);
    823847                }
    824848
     
    860884        }
    861885
    862         CDateTime expirationTime(gnutls_x509_crt_get_expiration_time(cert), CDateTime::seconds);
    863         CDateTime activationTime(gnutls_x509_crt_get_activation_time(cert), CDateTime::seconds);
     886        fz::datetime expirationTime(gnutls_x509_crt_get_expiration_time(cert), fz::datetime::seconds);
     887        fz::datetime activationTime(gnutls_x509_crt_get_activation_time(cert), fz::datetime::seconds);
    864888
    865889        // Get the serial number of the certificate
     
    10021026}
    10031027
    1004 bool CTlsSocket::CertificateIsBlacklisted(std::vector<CCertificate> const& certificates)
     1028bool CTlsSocket::CertificateIsBlacklisted(std::vector<CCertificate> const&)
    10051029{
    10061030        return false;
     
    11591183}
    11601184
    1161 void CTlsSocket::OnRateAvailable(enum CRateLimiter::rate_direction)
     1185void CTlsSocket::OnRateAvailable(CRateLimiter::rate_direction)
    11621186{
    11631187}
Note: See TracChangeset for help on using the changeset viewer.