[jitsi-users] ice4j PseudoTCP timeout and StunKeepAliveThread throwing fatal exception


#1

Hi all,

first of all, I'd like to thank you for the amazing work you have done on ice4j.

I'm using ice4j and its PseudoTCP stack to create a connection between two
Android devices. It works great until one end of the connection is killed.

Then a connection timeout occurs which leads to a PseudoTCPBase.closedown().
After that I the following exception :

FATAL EXCEPTION: StunKeepAliveThread
java.lang.IllegalArgumentException: port=-1
  at java.net.InetSocketAddress.<init>(InetSocketAddress.java:71)
  at java.net.DatagramSocket.getLocalSocketAddress(DatagramSocket.java:549)
  at org.ice4j.socket.DelegatingDatagramSocket.getLocalSocketAddress(DelegatingDatagramSocket.java:416)
  at org.ice4j.socket.DelegatingDatagramSocket.getLocalSocketAddress(DelegatingDatagramSocket.java:417)
  at org.ice4j.socket.IceUdpSocketWrapper.getLocalSocketAddress(IceUdpSocketWrapper.java:86)
  at org.ice4j.ice.ConnectivityCheckClient.sendBindingIndicationForPair(ConnectivityCheckClient.java:147)
  at org.ice4j.ice.Agent.runInStunKeepAliveThread(Agent.java:2147)
  at org.ice4j.ice.Agent$StunKeepAliveThread.run(Agent.java:2107)

Is it a normal behavior ?

I think Agent should be freed when PseudoTCP socket is closed but I can't figure out where to do that without modifying PseudoTCP stack.
Input/OutputStream are passed to agnostic classes so it's not relevant to let them free the Agent.

Any idea are welcome !

Regards

···

--
Paul Fariello


#2

Hey Paul,

Thanks for your kind words!

Pseudo TCP does not have a way of detecting connection end. This is
normally left to the accompanying signalling protocol.

Hope this helps,
Emil

···

On Thu, Jul 11, 2013 at 12:10 PM, Paul Fariello <paul@fariello.eu> wrote:

Hi all,

first of all, I'd like to thank you for the amazing work you have done on ice4j.

I'm using ice4j and its PseudoTCP stack to create a connection between two
Android devices. It works great until one end of the connection is killed.

Then a connection timeout occurs which leads to a PseudoTCPBase.closedown().
After that I the following exception :

FATAL EXCEPTION: StunKeepAliveThread
java.lang.IllegalArgumentException: port=-1
        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:71)
        at java.net.DatagramSocket.getLocalSocketAddress(DatagramSocket.java:549)
        at org.ice4j.socket.DelegatingDatagramSocket.getLocalSocketAddress(DelegatingDatagramSocket.java:416)
        at org.ice4j.socket.DelegatingDatagramSocket.getLocalSocketAddress(DelegatingDatagramSocket.java:417)
        at org.ice4j.socket.IceUdpSocketWrapper.getLocalSocketAddress(IceUdpSocketWrapper.java:86)
        at org.ice4j.ice.ConnectivityCheckClient.sendBindingIndicationForPair(ConnectivityCheckClient.java:147)
        at org.ice4j.ice.Agent.runInStunKeepAliveThread(Agent.java:2147)
        at org.ice4j.ice.Agent$StunKeepAliveThread.run(Agent.java:2107)

Is it a normal behavior ?

I think Agent should be freed when PseudoTCP socket is closed but I can't figure out where to do that without modifying PseudoTCP stack.
Input/OutputStream are passed to agnostic classes so it's not relevant to let them free the Agent.

Any idea are welcome !

Regards

--
Paul Fariello

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users

--
Emil Ivov, Ph.D. 67000 Strasbourg,
Project Lead France
Jitsi
emcho@jitsi.org PHONE: +33.1.77.62.43.30
https://jitsi.org FAX: +33.1.77.62.47.31