SocketImpl* SecureSocketImpl::acceptConnection(SocketAddress& clientAddr) { poco_assert (!_pSSL); StreamSocket ss = _pSocket->acceptConnection(clientAddr); Poco::AutoPtr<SecureStreamSocketImpl> pSecureStreamSocketImpl = new SecureStreamSocketImpl(static_cast<StreamSocketImpl*>(ss.impl()), _pContext); pSecureStreamSocketImpl->acceptSSL(); pSecureStreamSocketImpl->duplicate(); return pSecureStreamSocketImpl; }
SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, const std::string& peerHostName, Context::Ptr pContext, Session::Ptr pSession) { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast<StreamSocketImpl*>(streamSocket.impl()), pContext); SecureStreamSocket result(pImpl); result.setPeerHostName(peerHostName); result.useSession(pSession); pImpl->connectSSL(); return result; }
SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, const std::string& peerHostName) { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast<StreamSocketImpl*>(streamSocket.impl()), SSLManager::instance().defaultClientContext()); SecureStreamSocket result(pImpl); result.setPeerHostName(peerHostName); pImpl->connectSSL(); return result; }
SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, Context::Ptr pContext) { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast<StreamSocketImpl*>(streamSocket.impl()), pContext); SecureStreamSocket result(pImpl); pImpl->connectSSL(); return result; }
SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket) { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast<StreamSocketImpl*>(streamSocket.impl()), SSLManager::instance().defaultClientContext()); SecureStreamSocket result(pImpl); pImpl->connectSSL(); return result; }
void HTTPSTestServer::run() { _ready.set(); Poco::Timespan span(250000); while (!_stop) { if (_socket.poll(span, Socket::SELECT_READ)) { StreamSocket ss = _socket.acceptConnection(); try { _lastRequest.clear(); char buffer[256]; int n = ss.receiveBytes(buffer, sizeof(buffer)); while (n > 0 && !_stop) { _lastRequest.append(buffer, n); if (!requestComplete()) n = ss.receiveBytes(buffer, sizeof(buffer)); else n = 0; } std::string response = handleRequest(); ss.sendBytes(response.data(), (int) response.size()); if(_lastRequest.find("/connection/abort")!=std::string::npos) { SecureStreamSocketImpl* sss = dynamic_cast<SecureStreamSocketImpl*>(ss.impl()); if(sss!=NULL) sss->abort(); } Poco::Thread::sleep(1000); } catch (Poco::Exception& exc) { std::cerr << "HTTPSTestServer: " << exc.displayText() << std::endl; } } } }