Я написал SIP UAC, и я пробовал несколько способов обнаруживать и игнорировать повторяющиеся входящие сообщения от UAS, но с каждым подходом, который я пробовал, что-то пошло не так, моя проблема в том, что все сообщения, которые имеют отношение к тот же вызов имеет ту же подпись, и сравнивать весь текст сообщения слишком много, поэтому мне было интересно, на какой параметр, составляющий сообщение, я должен смотреть, пытаясь обнаружить эти повторяющиеся сообщения.
ОБНОВЛЕНИЕ:
У меня возникла проблема с входящими параметрами, которую я обработал, отправив серверу пустой ответ Ok. (Обновление: через некоторое время тестирования я заметил, что время от времени я все еще получаю, а затем я получаю еще один запрос параметров, несколько раз в несколько секунд, поэтому я пытаюсь ответить неверным запросом, и теперь я получаю запрос параметров только один / два раза каждую регистрацию / перерегистрацию)
в настоящее время у меня есть повторяющиеся сообщения SessionInPogress и различные сообщения об ошибках, например, здесь занято и недоступно, я получаю их так много, и это портит мой журнал, я хотел бы их отфильтровать.
есть идеи, как этого добиться?
ОБНОВЛЕНИЕ:
Я попробую вашу технику, прежде чем отправлять ответ, возможно, это решит мои проблемы
Вот что я использовал, он отлично работает:
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;
}
Спасибо, Адам.