Пример #1
0
void P2pConnectionProxy::writeHandshake(const P2pMessage &message) {
  CORE_SYNC_DATA coreSync;
  LevinProtocol::decode(message.data, coreSync);

  if (m_context.isIncoming()) {
    // response
    COMMAND_HANDSHAKE::response res;
    res.node_data = m_node.getNodeData();
    res.payload_data = coreSync;
    res.local_peerlist = m_node.getLocalPeerList();
    m_context.writeMessage(makeReply(COMMAND_HANDSHAKE::ID, LevinProtocol::encode(res), LEVIN_PROTOCOL_RETCODE_SUCCESS));
    m_node.tryPing(m_context);
  } else {
    // request
    COMMAND_HANDSHAKE::request req;
    req.node_data = m_node.getNodeData();
    req.payload_data = coreSync;
    m_context.writeMessage(makeRequest(COMMAND_HANDSHAKE::ID, LevinProtocol::encode(req)));
  }
}
Пример #2
0
QNetworkReply*
MailNetworkManager::createRequest(Operation op, const QNetworkRequest& req, QIODevice* outgoingData)
{
    QUrl url = req.url();
    QString scheme = url.scheme();
    QNetworkReply* reply = NULL;
    if (scheme == "cid") {
        if (op == GetOperation) {
            qDebug() <<"getting component for" <<url;
            GMimeObject* part = NULL;
            if (url.path() == "ROOT") {
                part = theMessage->getBody();
            } else {
                part = theMessage->getRelatedPart(url.path());
            }
            if (part) {
                reply = makeReply(req, part);
            } else {
                qDebug() <<url <<"not found";
                reply = StaticHTTPReply::notFound(req);
            }
        } else {
            qDebug() <<"operation" <<op <<"not supported for CID URLs";
            reply = StaticHTTPReply::denied(op, req);
        }
    } else if (f_remoteEnabled && (url.scheme() == "http" || url.scheme() == "https")) {
        qDebug() <<"delegating request for" <<url;
        return QNetworkAccessManager::createRequest(op, req, outgoingData);
    } else {
        qDebug() <<"denying remote request for" <<url;
        reply = StaticHTTPReply::denied(op, req);
        emit blockedRequest(req);
    }
    connect(reply, SIGNAL(finished()), SLOT(replyFinished()));
    return reply;
}