aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2011-01-06 07:02:07 +0000
committerDamian Minkov <damencho@jitsi.org>2011-01-06 07:02:07 +0000
commit3e35215a9e520303e58701b4c10c09954ad5c33b (patch)
treee4be8172bf334415ab8d46fa13d1d088abb07e16 /src/net/java/sip/communicator
parent40440012726f6a9974d1aa927d924bbb0153dd41 (diff)
downloadjitsi-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.java42
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");