/usr/include/ace/SSL/SSL_SOCK_Acceptor.h is in libace-ssl-dev 6.0.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | // -*- C++ -*-
//=============================================================================
/**
* @file SSL_SOCK_Acceptor.h
*
* $Id: SSL_SOCK_Acceptor.h 82723 2008-09-16 09:35:44Z johnnyw $
*
* @author John Heitmann
* @author Chris Zimman
* @author Ossama Othman <ossama@uci.edu>
*/
//=============================================================================
#ifndef ACE_SSL_SOCK_ACCEPTOR_H
#define ACE_SSL_SOCK_ACCEPTOR_H
#include /**/ "ace/pre.h"
#include "SSL_Export.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "SSL_SOCK_Stream.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/OS_QoS.h"
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
/**
* @class ACE_SSL_SOCK_Acceptor
*
* @brief Defines a factory that creates new @c ACE_SSL_SOCK_Stream
* objects passively.
*
* The ACE_SSL_SOCK_Acceptor has its own @c ACE_SOCK_Acceptor
* which handles the basic socket acceptance. This class is a
* wrapper which adds the SSL acceptance handshake handling.
* Since SSL is record oriented, some additional steps must be taken
* after the basic socket acceptance to complete the SSL handshake that
* takes place at session establishment.
*
* @note The user must currently ensure that only one thread services
* a given SSL session at any given time since some underlying
* SSL implementations, such as OpenSSL, are not entirely
* thread-safe or reentrant.
*/
class ACE_SSL_Export ACE_SSL_SOCK_Acceptor : public ACE_SSL_SOCK
{
public:
/// Default constructor.
ACE_SSL_SOCK_Acceptor (void);
/// Default destructor.
~ACE_SSL_SOCK_Acceptor (void);
/**
* Initiate a passive mode SSL/BSD-style acceptor socket.
* @param local_sap The address that we're going to listen for
* connections on. If this is @c ACE_Addr::sap_any,
* this socket listens on an the "any" IP address
* and selects an unused port. To find out what port
* was selected, call this object's
* @c ACE_SOCK::get_local_addr(ACE_Addr&) method
* upon return.
*/
ACE_SSL_SOCK_Acceptor (const ACE_Addr &local_sap,
int reuse_addr = 0,
int protocol_family = PF_UNSPEC,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0);
/**
* Initiate a passive-mode QoS-enabled acceptor socket.
* @param local_sap The address that we're going to listen for
* connections on. If this is @c ACE_Addr::sap_any,
* this socket listens on an the "any" IP address
* and selects an unused port. To find out what port
* was selected, call this object's
* @c ACE_SOCK::get_local_addr(ACE_Addr&) method
* upon return.
*/
ACE_SSL_SOCK_Acceptor (const ACE_Addr &local_sap,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g,
u_long flags,
int reuse_addr,
int protocol_family = PF_UNSPEC,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0);
/**
* Initiate a passive mode SSL/BSD-style acceptor socket.
* @param local_sap The address that we're going to listen for
* connections on. If this is @c ACE_Addr::sap_any,
* this socket listens on an the "any" IP address
* and selects an unused port. To find out what port
* was selected, call this object's
* @c ACE_SOCK::get_local_addr(ACE_Addr&) method
* upon return.
*
* @return 0 if success; -1 for failure (errno contains error code).
*/
int open (const ACE_Addr &local_sap,
int reuse_addr = 0,
int protocol_family = PF_UNSPEC,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0);
/// Close the listening socket.
int close (void);
/**
* @name Passive Connection "accept" Methods
*
* These are the canonical methods exposed by the Acceptor pattern.
*/
//@{
/**
* Accept a new ACE_SSL_SOCK_Stream connection. On successful return,
* the socket has been accepted and the SSL handshake has been completed.
* @param new_stream The @c ACE_SSL_SOCK_Stream object that will receive
* the new SSL socket.
* @param remote_addr Pointer to an @c ACE_INET_Addr object that will
* receive the address of the peer that connected.
* @param timeout The maximum time to wait for the combined socket
* acceptance and handshake completion. 0 means
* block forever, a timeout of {0, 0} means poll.
* @param restart 1 means "restart if interrupted," that is,
* if errno == EINTR.
*
* @return 0 if success; -1 for failure (errno contains error code).
*/
int accept (ACE_SSL_SOCK_Stream &new_stream,
ACE_Addr *remote_addr = 0,
ACE_Time_Value *timeout = 0,
bool restart = true,
bool reset_new_handle = false) const;
/**
* Accept a new ACE_SSL_SOCK_Stream connection using the RVSP QoS
* information in qos_params.
* @param new_stream The @c ACE_SSL_SOCK_Stream object that will receive
* the new SSL socket.
* @param remote_addr Pointer to an @c ACE_INET_Addr object that will
* receive the address of the peer that connected.
* @param timeout The maximum time to wait for the combined socket
* acceptance and handshake completion. 0 means
* block forever, a timeout of {0, 0} means poll.
* @param restart 1 means "restart if interrupted," that is,
* if errno == EINTR.
*
* @return 0 if success; -1 for failure (errno contains error code).
*/
int accept (ACE_SSL_SOCK_Stream &new_stream,
ACE_Accept_QoS_Params qos_params,
ACE_Addr *remote_addr = 0,
ACE_Time_Value *timeout = 0,
bool restart = true,
bool reset_new_handle = false) const;
//@}
/// Meta-type info
//@{
typedef ACE_INET_Addr PEER_ADDR;
typedef ACE_SSL_SOCK_Stream PEER_STREAM;
//@}
/// Declare the dynamic allocation hooks.
ACE_ALLOC_HOOK_DECLARE;
protected:
/// Complete SSL passive connection establishment.
int ssl_accept (ACE_SSL_SOCK_Stream &new_stream,
ACE_Time_Value *timeout) const;
private:
/// The BSD-socket workhorse
ACE_SOCK_Acceptor acceptor_;
};
ACE_END_VERSIONED_NAMESPACE_DECL
#if defined (__ACE_INLINE__)
#include "SSL_SOCK_Acceptor.inl"
#endif /* __ACE_INLINE__ */
#include /**/ "ace/post.h"
#endif /* ACE_SSL_SOCK_ACCEPTOR_H */
|