From 72d1008e25465dcd6f1f612f64aa9734d5c9a379 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Tue, 10 Feb 2015 12:43:16 +0200 Subject: [PATCH] Fixes setting allow events sip header value. --- .../impl/protocol/sip/ClientCapabilities.java | 52 +++++++++++-------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ClientCapabilities.java b/src/net/java/sip/communicator/impl/protocol/sip/ClientCapabilities.java index 71d2dbf6e..2608e88d7 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/ClientCapabilities.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/ClientCapabilities.java @@ -15,8 +15,10 @@ import javax.sip.address.*; import javax.sip.header.*; import javax.sip.message.*; +import javax.sip.message.Message; import gov.nist.javax.sip.*; +import gov.nist.javax.sip.header.*; import net.java.sip.communicator.impl.protocol.sip.net.*; import net.java.sip.communicator.service.protocol.*; @@ -107,15 +109,7 @@ public boolean processRequest(RequestEvent requestEvent) method)); } - Iterable knownEventsList = provider.getKnownEventsList(); - - synchronized (knownEventsList) - { - for (String event : knownEventsList) - optionsOK.addHeader( - provider.getHeaderFactory().createAllowEventsHeader( - event)); - } + addAllowEventsHeader(optionsOK); } catch (ParseException ex) { @@ -158,6 +152,32 @@ public boolean processRequest(RequestEvent requestEvent) return true; } + /** + * Creates a list of known events and add them to the value of + * Allow-Events header + * @param message the message to set the newly created header + * @throws ParseException error on creating header + */ + private void addAllowEventsHeader(Message message) + throws ParseException + { + Iterable knownEventsList = provider.getKnownEventsList(); + + AllowEventsList eventsList = new AllowEventsList(); + + synchronized (knownEventsList) + { + for (String event : knownEventsList) + { + eventsList.add( + (AllowEvents)provider.getHeaderFactory() + .createAllowEventsHeader(event)); + } + } + + message.setHeader(eventsList); + } + /** * Returns the next long to use as a cseq header value. * @return the next long to use as a cseq header value. @@ -323,19 +343,7 @@ public void run() provider.getHeaderFactory().createAllowHeader(method)); } - Iterator events - = provider.getKnownEventsList().iterator(); - - synchronized (provider.getKnownEventsList()) - { - while (events.hasNext()) - { - String event = events.next(); - - request.addHeader(provider.getHeaderFactory() - .createAllowEventsHeader(event)); - } - } + addAllowEventsHeader(request); //Transaction ClientTransaction optionsTrans = null;