diff options
author | Damian Minkov <damencho@jitsi.org> | 2011-01-06 07:02:07 +0000 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2011-01-06 07:02:07 +0000 |
commit | 3e35215a9e520303e58701b4c10c09954ad5c33b (patch) | |
tree | e4be8172bf334415ab8d46fa13d1d088abb07e16 /src/net/java/sip/communicator | |
parent | 40440012726f6a9974d1aa927d924bbb0153dd41 (diff) | |
download | jitsi-3e35215a9e520303e58701b4c10c09954ad5c33b.zip jitsi-3e35215a9e520303e58701b4c10c09954ad5c33b.tar.gz jitsi-3e35215a9e520303e58701b4c10c09954ad5c33b.tar.bz2 |
Make sure we init addresses for packet logging if they are not set in sip stack, and make sure no exception comes out from sip logger. Issue #894.
Diffstat (limited to 'src/net/java/sip/communicator')
-rw-r--r-- | src/net/java/sip/communicator/impl/protocol/sip/SipLogger.java | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/sip/SipLogger.java b/src/net/java/sip/communicator/impl/protocol/sip/SipLogger.java index 8e6387e..81601b1 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/SipLogger.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/SipLogger.java @@ -238,7 +238,14 @@ public class SipLogger public void logMessage(SIPMessage message, String from, String to, String status, boolean sender, long time) { - logPacket(message, sender); + try + { + logPacket(message, sender); + } + catch(Throwable e) + { + logger.error("Error logging packet", e); + } } /** @@ -248,7 +255,7 @@ public class SipLogger * @param message the message to log * @param sender determines whether we are the origin of this message. */ - public void logPacket(SIPMessage message, boolean sender) + private void logPacket(SIPMessage message, boolean sender) { try { @@ -264,19 +271,42 @@ public class SipLogger byte[] dstAddr; int dstPort; + // if addresses are not set use empty byte array with length + // equals to the other address or just empty + // byte array with length 4 (ipv4 0.0.0.0) if(sender) { - srcAddr = message.getLocalAddress().getAddress(); srcPort = message.getLocalPort(); - dstAddr = message.getRemoteAddress().getAddress(); + if(message.getLocalAddress() != null) + srcAddr = message.getLocalAddress().getAddress(); + else if(message.getRemoteAddress() != null) + srcAddr = new byte[ + message.getRemoteAddress().getAddress().length]; + else + srcAddr = new byte[4]; + dstPort = message.getRemotePort(); + if(message.getRemoteAddress() != null) + dstAddr = message.getRemoteAddress().getAddress(); + else + dstAddr = new byte[srcAddr.length]; } else { dstPort = message.getLocalPort(); - dstAddr = message.getLocalAddress().getAddress(); - srcAddr = message.getRemoteAddress().getAddress(); + if(message.getLocalAddress() != null) + dstAddr = message.getLocalAddress().getAddress(); + else if(message.getRemoteAddress() != null) + dstAddr = new byte[ + message.getRemoteAddress().getAddress().length]; + else + dstAddr = new byte[4]; + srcPort = message.getRemotePort(); + if(message.getRemoteAddress() != null) + srcAddr = message.getRemoteAddress().getAddress(); + else + srcAddr = new byte[dstAddr.length]; } byte[] msg = message.toString().getBytes("UTF-8"); |