J'ai écrit un UAC SIP, et j'ai essayé plusieurs façons de détecter et d'ignorer la répétition des messages entrants provenant de l'UAS, mais à chaque approche j'ai essayé, quelque chose s'est mal passé, mon problème est que tous les messages doivent faire avec le même appel a la même signature, et de comparer tout le texte du message est trop, donc je me demandais, quel paramètre composer un message dois-je regarder en essayant de détecter ces messages répétitifs.Quelle serait la meilleure implémentation pour détecter les messages SIP répétés?
MISE À JOUR:
J'ai eu un problème avec une des options entrant, que je manipulé avec l'envoi du serveur une réponse Ok vide. (Mise à jour: après un moment de test, j'ai remarqué que je reçois toujours de temps en temps une autre requête d'Options, quelques fois chaque seconde, donc j'essaye de répondre avec une Requête Bad, et maintenant je reçois seulement une fois la requête Options actuellement je répète des messages de SessionInPogress, et différents messages d'erreur tels que occupé ici, et indisponible, je reçois beaucoup de ceux-ci, et il gâche mon journal, je voudrais les filtrer.
une idée de comment y parvenir?
MISE À JOUR:
Je vais essayer votre Technics avant de poster en arrière, peut-être cela résoudrait mes problèmes
Voici ce que je, cela fonctionne bien:
private boolean compare(SIPMessage message1, SIPMessage message2) {
if (message1.getClass() != message2.getClass())
return false;
if (message1.getCSeq().getSeqNumber() != message2.getCSeq().getSeqNumber())
return false;
if (!message1.getCSeq().getMethod().equals(message2.getCSeq().getMethod()))
return false;
if (!message1.getCallId().equals(message2.getCallId()))
return false;
if (message1.getClass()==SIPResponse.class)
if(((SIPResponse)message1).getStatusCode()!=((SIPResponse)message2).getStatusCode())
return false;
return true;
}
Merci , Adam.
Quels types de messages? Réponses provisoires Les réponses finales? Utilisez-vous UDP? Parlez-vous à un UAS RFC 2543 ou à un UAS RFC 3261? –
Est-ce vraiment important s'il s'agit d'une réponse ou d'une requête? provisoire ou final? N'y at-il pas une communalité inférieure à tous les messages, que je peux identifier des messages répétitifs? – TacB0sS
Eh bien, cela aide à répondre à la question :) Les retransmissions de requêtes/réponses sont traitées différemment. –