void qws_write_command(QIODevice *socket, int type, char *simpleData, int simpleLen, char *rawData, int rawLen) { #ifdef QWSCOMMAND_DEBUG if (simpleLen) qDebug() << "WRITE simpleData " << QWSHexDump(simpleData, simpleLen); if (rawLen > 0) qDebug() << "WRITE rawData " << QWSHexDump(rawData, rawLen); #endif #ifndef QT_NO_SXE QTransportAuth *a = QTransportAuth::getInstance(); // ###### as soon as public API can be modified get rid of horrible casts QIODevice *ad = a->passThroughByClient(reinterpret_cast<QWSClient*>(socket)); if (ad) socket = ad; #endif qws_write_uint(socket, type); if (rawLen > MAX_COMMAND_SIZE) { qWarning("qws_write_command: Message of size %d too big. " "Truncated to %d", rawLen, MAX_COMMAND_SIZE); rawLen = MAX_COMMAND_SIZE; } qws_write_uint(socket, rawLen == -1 ? 0 : rawLen); if (simpleData && simpleLen) socket->write(simpleData, simpleLen); if (rawLen && rawData) socket->write(rawData, rawLen); }
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."; } }