void wrapInFunction() { //! [0] QTransportAuth::Data *conData; QTransportAuth *a = QTransportAuth::getInstance(); conData = a->connectTransport( QTransportAuth::Trusted | QTransportAuth::UnixStreamSock, socketDescriptor ); //! [0] //! [1] // mySocket can be any QIODevice subclass AuthDevice *ad = a->recvBuf( d, mySocket ); // proxy in the auth device where the socket would have gone connect( ad, SIGNAL(readyRead()), this, SLOT(mySocketReadyRead())); //! [1] //! [2] AuthDevice *ad = a->authBuf( d, mySocket ); ad->write( someData ); //! [2] //! [3] policyCheck( QTransportAuth::Data &, const QString & ) //! [3] //! [4] QTransportAuth::Result r = d.status & QTransportAuth::ErrMask; qWarning( "error: %s", QTransportAuth::errorStrings[r] ); //! [4] //! [5] MD5(K XOR opad, MD5(K XOR ipad, text)) //! [5] }
void QCopX11Server::incomingConnection( int socketDescriptor ) { QUnixSocket * sock = new QUnixSocket; sock->setSocketDescriptor(socketDescriptor); QCopX11Client *client; #ifndef QT_NO_SXE QTransportAuth *a = QTransportAuth::getInstance(); QTransportAuth::Data *d = a->connectTransport( QTransportAuth::UnixStreamSock | QTransportAuth::Trusted, sock->socketDescriptor() ); QAuthDevice *ad = a->recvBuf( d, sock ); ad->setRequestAnalyzer( new QCopRequestAnalyzer() ); ad->setClient(sock); client = new QCopX11Client(ad, sock); #else client = new QCopX11Client(sock, sock); #endif sock->setParent(client); }
void QCopX11Client::connectToServer() { if ( !socket ) { // We are retrying the socket connection. socket = new QUnixSocket( this ); device = socket; } if ( socket->connect( qcopSocketPath() ) ) { connecting = false; #ifndef QT_NO_SXE QTransportAuth * a = QTransportAuth::getInstance(); QTransportAuth::Data * d = a->connectTransport( QTransportAuth::UnixStreamSock | QTransportAuth::Trusted, socket->socketDescriptor()); QAuthDevice *dev = a->authBuf( d, socket ); dev->setClient( socket ); device = dev; #else device = socket; #endif connectSignals(); if ( pendingData.size() > 0 ) { device->write( pendingData.constData(), pendingData.size() ); pendingData = QByteArray(); } } else { connecting = false; delete socket; socket = 0; device = 0; if ( ++retryCount < 30 ) QTimer::singleShot( 200, this, SLOT(connectToServer()) ); else qWarning() << "Could not connect to QCop server; probably not running."; } }