Skip to content

Commit

Permalink
Merge pull request #6560 from nextcloud/backport/6553/stable-3.12
Browse files Browse the repository at this point in the history
[stable-3.12] if desktop client sent a first reply: wait for the menu data
  • Loading branch information
mgallien authored Mar 20, 2024
2 parents 2f52b72 + 0e8380e commit 52f2979
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ NCClientInterface::ContextMenuInfo NCClientInterface::FetchInfo(const std::wstri
ContextMenuInfo info;
std::wstring response;
int sleptCount = 0;
while (sleptCount < 20) {
constexpr auto noReplyTimeout = 20;
constexpr auto replyTimeout = 200;
bool receivedReplyFromDesktopClient = false;
while ((!receivedReplyFromDesktopClient && sleptCount < noReplyTimeout) || (receivedReplyFromDesktopClient && sleptCount < replyTimeout)) {
if (socket.ReadLine(&response)) {
if (StringUtil::begins_with(response, wstring(L"REGISTER_PATH:"))) {
wstring responsePath = response.substr(14); // length of REGISTER_PATH
Expand All @@ -65,6 +68,9 @@ NCClientInterface::ContextMenuInfo NCClientInterface::FetchInfo(const std::wstri
if (!StringUtil::extractChunks(response, commandName, flags, title))
continue;
info.menuItems.push_back({ commandName, flags, title });
} else if (StringUtil::begins_with(response, wstring(L"GET_MENU_ITEMS:BEGIN"))) {
receivedReplyFromDesktopClient = true;
continue;
} else if (StringUtil::begins_with(response, wstring(L"GET_MENU_ITEMS:END"))) {
break; // Stop once we completely received the last sent request
}
Expand Down
2 changes: 1 addition & 1 deletion src/gui/socketapi/socketapi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1330,7 +1330,7 @@ SocketApi::FileData SocketApi::FileData::parentFolder() const

void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListener *listener)
{
listener->sendMessage(QString("GET_MENU_ITEMS:BEGIN"));
listener->sendMessage(QString("GET_MENU_ITEMS:BEGIN"), true);
const QStringList files = split(argument);

// Find the common sync folder.
Expand Down

0 comments on commit 52f2979

Please sign in to comment.