Working FT rejecting

This commit is contained in:
HanzZ 2011-10-02 11:11:08 +02:00
parent 260262c393
commit 46f5c51d00
6 changed files with 29 additions and 1 deletions

View file

@ -108,7 +108,7 @@ else()
endif()
if(CMAKE_BUILD_TYPE MATCHES Debug)
ADD_DEFINITIONS(-O3)
ADD_DEFINITIONS(-O0)
ADD_DEFINITIONS(-ggdb)
ADD_DEFINITIONS(-DDEBUG)
ADD_DEFINITIONS(-Wall)

View file

@ -829,6 +829,14 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
}
}
void handleFTFinishRequest(const std::string &user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID) {
PurpleXfer *xfer = m_unhandledXfers[user + fileName + buddyName];
if (xfer) {
m_unhandledXfers.erase(user + fileName + buddyName);
purple_xfer_request_denied(xfer);
}
}
void handleFTPauseRequest(unsigned long ftID) {
PurpleXfer *xfer = m_xfers[ftID];
if (!xfer)

View file

@ -80,6 +80,7 @@ void MyOutgoingSIFileTransfer::finish(boost::optional<FileTransferError> error)
ibbSession.reset();
}
socksServer->removeReadBytestream(id, from, to);
onStateChange(FileTransfer::State(FileTransfer::State::Canceled));
onFinished(error);
}

View file

@ -216,6 +216,7 @@ class NetworkPlugin {
virtual void handleAttentionRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*message*/) {}
virtual void handleFTStartRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*fileName*/, unsigned long size, unsigned long ftID) {}
virtual void handleFTFinishRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*fileName*/, unsigned long size, unsigned long ftID) {}
virtual void handleFTPauseRequest(unsigned long ftID) {}
virtual void handleFTContinueRequest(unsigned long ftID) {}
@ -236,6 +237,7 @@ class NetworkPlugin {
void handleChatStatePayload(const std::string &payload, Swift::ChatState::ChatStateType type);
void handleAttentionPayload(const std::string &payload);
void handleFTStartPayload(const std::string &payload);
void handleFTFinishPayload(const std::string &payload);
void handleFTPausePayload(const std::string &payload);
void handleFTContinuePayload(const std::string &payload);
void handleDataRead(boost::shared_ptr<Swift::SafeByteArray> data);

View file

@ -373,6 +373,16 @@ void NetworkPlugin::handleFTStartPayload(const std::string &data) {
handleFTStartRequest(payload.username(), payload.buddyname(), payload.filename(), payload.size(), payload.ftid());
}
void NetworkPlugin::handleFTFinishPayload(const std::string &data) {
pbnetwork::File payload;
if (payload.ParseFromString(data) == false) {
// TODO: ERROR
return;
}
handleFTFinishRequest(payload.username(), payload.buddyname(), payload.filename(), payload.size(), payload.ftid());
}
void NetworkPlugin::handleFTPausePayload(const std::string &data) {
pbnetwork::FileTransferData payload;
if (payload.ParseFromString(data) == false) {
@ -543,6 +553,9 @@ void NetworkPlugin::handleDataRead(boost::shared_ptr<Swift::SafeByteArray> data)
case pbnetwork::WrapperMessage_Type_TYPE_FT_START:
handleFTStartPayload(wrapper.payload());
break;
case pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH:
handleFTFinishPayload(wrapper.payload());
break;
case pbnetwork::WrapperMessage_Type_TYPE_FT_PAUSE:
handleFTPausePayload(wrapper.payload());
break;

View file

@ -1252,6 +1252,7 @@ void NetworkPluginServer::handleFTRejected(User *user, const std::string &buddyN
f.set_buddyname(buddyName);
f.set_filename(fileName);
f.set_size(size);
f.set_ftid(0);
std::string message;
f.SerializeToString(&message);
@ -1273,6 +1274,9 @@ void NetworkPluginServer::handleFTStateChanged(Swift::FileTransfer::State state,
if (state.state == Swift::FileTransfer::State::Transferring) {
handleFTAccepted(user, buddyName, fileName, size, id);
}
else if (state.state == Swift::FileTransfer::State::Canceled) {
handleFTRejected(user, buddyName, fileName, size);
}
}
void NetworkPluginServer::sendPing(Backend *c) {