private async Task answerPresenceProbeAsync(string from, string to, ChatTable chat, XMPPClient client, PresenceMessage msg) { XMPPAccount account = client.getXMPPAccount(); PresenceMessage answer = null; if (chat is null) { answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.FORBIDDEN); Logger.Warn("Received a presence probe message for an unknown chat from: " + from + ", to: " + to); return; } else { switch (chat.subscription) { case "both": case "from": answer = new PresenceMessage(account.getBareJid(), from, account.presence, account.status, account.presencePriorety); Logger.Debug("Answered presence probe from: " + from); break; case "none" when chat.inRoster: case "to" when chat.inRoster: answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.FORBIDDEN); Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription); break; default: answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.NOT_AUTHORIZED); Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription); break; } } await client.sendAsync(answer); }
private async Task AnswerPresenceProbeAsync(string from, string to, ChatModel chat, PresenceMessage msg) { PresenceMessage answer; if (chat is null) { Logger.Warn("Received a presence probe message for an unknown chat from: " + from + ", to: " + to); return; } else { switch (chat.subscription) { case "both": case "from": answer = new PresenceMessage(client.dbAccount.fullJid.FullJid(), from, client.dbAccount.presence, client.dbAccount.status, client.dbAccount.presencePriorety); Logger.Debug("Answered presence probe from: " + from); break; case "none" when chat.inRoster: case "to" when chat.inRoster: answer = new PresenceErrorMessage(client.dbAccount.fullJid.FullJid(), from, PresenceErrorType.FORBIDDEN); Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription); break; default: answer = new PresenceErrorMessage(client.dbAccount.fullJid.FullJid(), from, PresenceErrorType.NOT_AUTHORIZED); Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription); break; } } await client.xmppClient.SendAsync(answer); }