diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ConfigHeaders.java b/src/net/java/sip/communicator/impl/protocol/sip/ConfigHeaders.java index ddad53d86..b01626f28 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/ConfigHeaders.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/ConfigHeaders.java @@ -8,6 +8,7 @@ import net.java.sip.communicator.util.*; +import javax.sip.address.*; import javax.sip.header.*; import javax.sip.message.*; import java.util.*; @@ -91,13 +92,15 @@ static void attachConfigHeaders( for(Map.Entry entry : props.entrySet()) { String pName = entry.getKey(); - String prefStr = entry.getValue().trim(); + String prefStr = entry.getValue(); String name; String ix; - if(!pName.startsWith(ACC_PROPERTY_CONFIG_HEADER)) + if(!pName.startsWith(ACC_PROPERTY_CONFIG_HEADER) || prefStr == null) continue; + prefStr = prefStr.trim(); + if(pName.contains(".")) { pName = pName.replaceAll(ACC_PROPERTY_CONFIG_HEADER + ".", ""); @@ -191,6 +194,31 @@ private static String processParams(String value, Request request) } } + if(value.indexOf("${to.userID}") != -1) + { + ToHeader toHeader = + (ToHeader)request.getHeader(ToHeader.NAME); + + if(toHeader != null) + { + URI toURI = toHeader.getAddress().getURI(); + String toAddr = toURI.toString(); + + // strips sip: or sips: + if(toURI.isSipURI()) + { + toAddr = toAddr.replaceFirst(toURI.getScheme() + ":", ""); + } + + // take the userID part + int index = toAddr.indexOf('@'); + if ( index > -1 ) + toAddr = toAddr.substring(0, index); + + value = value.replace("${to.userID}", toAddr); + } + } + return value; } }