diff options
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 22 | ||||
-rw-r--r-- | docs/BUGS | 10 | ||||
-rw-r--r-- | server/src/server_session.cpp | 4 |
3 files changed, 33 insertions, 3 deletions
diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp index fcd07ff..48ff7c8 100644 --- a/client-qt/udm-client-qt/udm_main.cpp +++ b/client-qt/udm-client-qt/udm_main.cpp @@ -251,6 +251,7 @@ void udm_main::client_connect_ssl(QString &host, QString &password, int port, QS void udm_main::server_message_received(server_msg msg) { + BOOST_LOG_TRIVIAL(trace)<<"recieved server message\n"<<msg.DebugString(); switch(msg.type()) { case SERVER_MSG_TYPE::SERVER_AUTH_REPLY: @@ -303,6 +304,7 @@ void udm_main::server_message_received(server_msg msg) s->set_module_name(""); s->mutable_download_state_change()->add_states(SDS_STARTED); //subscript to download started event s->mutable_download_state_change()->add_states(SDS_STOPPED); //subscript to download stopped event + s->mutable_download_state_change()->add_states(SDS_DELETED); //subscript to download deleted event session->send_message(msg); } @@ -373,10 +375,26 @@ void udm_main::server_message_received(server_msg msg) //TODO: break; case SUBSCRIPTION_DOWNLOAD_STATE::SDS_DELETED: + { + bool found = false; + unsigned int pos = 0; + for(auto d = downloads.begin(), end = downloads.end(); d != end; ++d, ++pos) + { + if(d->id() == i.download_id()) + { + found = true; + downloads.erase(d); + mdl_downloads->removeRows(pos, 1); + break; + } + if(!found) + BOOST_LOG_TRIVIAL(error)<<"error: deleted download which is not exist\n"<<msg.DebugString(); + } + } //TODO: break; default: - BOOST_LOG_TRIVIAL(debug)<<"error: unhandled download state in server message message\n"<<msg.DebugString(); + BOOST_LOG_TRIVIAL(error)<<"error: unhandled download state in server message message\n"<<msg.DebugString(); break; } } @@ -384,7 +402,7 @@ void udm_main::server_message_received(server_msg msg) } break; default: - BOOST_LOG_TRIVIAL(debug)<<"error: unhandled server message\n"<<msg.DebugString(); + BOOST_LOG_TRIVIAL(debug)<<"unhandled server message\n"<<msg.DebugString(); break; } } diff --git a/docs/BUGS b/docs/BUGS new file mode 100644 index 0000000..c459fad --- /dev/null +++ b/docs/BUGS @@ -0,0 +1,10 @@ +downloadser modules: + curl: + crash in curl_download::~curl_download() // curl_download.cpp:69 + + + + + +client-qt: + crash on exit if connected to server
\ No newline at end of file diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp index 2d4e1e4..a79d5b6 100644 --- a/server/src/server_session.cpp +++ b/server/src/server_session.cpp @@ -550,6 +550,7 @@ bool server_session::handle_command(client_msg *msg) } else { + downloads.erase(i.download_id()); auto dsc = s_msg.add_download_state_changes(); dsc->set_download_id(i.download_id()); dsc->set_state(SUBSCRIPTION_DOWNLOAD_STATE::SDS_DELETED); @@ -681,7 +682,8 @@ void server_session::fire_event(SUBSCRIPTION_TYPE type, server_msg &msg) *sc2 = sc; } } - send_message(&filtered_message); + if(filtered_message.download_state_changes_size()) + send_message(&filtered_message); } default: break; |