[GnomeMeeting-devel-list] Re: INVITE-Problem



Hello Jan,


I have debugged the problem the whole evening.

Two things : 

1) Each time I try to call using kphone or linphone, with GnomeMeeting
registered, but with linphone/kphone not registered, I get an "Internal
Server Error".

2) The problem you describe in HandlePDU is reproducable, but it doesn't
happen when receiving an INVITE actually. It took me 2 hours to discover
this, but let me explain you. When GM registers to QSC, it starts an
OpalTransportUDP thread whith QSC. When it listens on port 5060, it does
the same. It will then wait for PDU's coming on those ports.

Periodically, it receives a connection from QSC on the registration port
and on the listening port. You could think it is an INVITE, but it is
not. Each time, HandlePDU fails. 

I sniffed the traffic with ethereal, and it is actually a simple
connection attempt on the port, with no valid SIP message in it and few
data. The data contains "hello".

I think it is a keep-alive connection to work around NAT routers. It is
simply discarded by OPAL which is correct.

If you sniff the traffic with ethereal, you will notice it. That's
funny.

So anyway, as long as I get the Internal Server Error, I can not call.
But the behavior you have found is not a discarded INVITE PDU. If you
sniff with Ethereal, you should see if it is an INVITE or not, but I'm
nearly sure the INVITE never reaches your box.


Le mercredi 13 avril 2005 à 13:12 +0200, Jan Schiefer a écrit :
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> When you receive an call from sip.qsc.de Gnomemeeting totally ingnores
> incoming INVITE reqests. Direct calls from other softphones ( you call
> the IP directly ) work.
> 
> Backtrace:
> 
> void SIPEndPoint::HandlePDU(OpalTransport & transport) {
>   // create a SIP_PDU structure, then get it to read and process PDU
>   SIP_PDU * pdu = new SIP_PDU;
> 
>   PTRACE(4, "SIP\tWaiting for PDU on " << transport);
> if (pdu->Read(transport)) { <----------------------- THIS CHECK FAILES!!
>   if (!transport.IsReliable()) {
>       // Calculate default return address
>       if (pdu->GetMethod() != SIP_PDU::NumMethods) {
>         PString via = pdu->GetMIME().GetVia();
>         transport.SetRemoteAddress(via.Mid(via.FindLast(' ')));
>       }
>     }
>     if (OnReceivedPDU(transport, pdu))
>       return;
>   }
>   else if (transport.good()) {
>     PTRACE(1, "SIP\tMalformed request received on " << transport);
>     SIP_PDU response(*pdu, SIP_PDU::Failure_BadRequest);
>     response.Write(transport);
>   }
> 
>   delete pdu;
> }
> 
> 
> Read() fails because of:
> 
> BOOL OpalTransportUDP::Read(void * buffer, PINDEX length)
> {
> 
>   if (!connectSockets.IsEmpty()) { <--- I FAIL!!!
> 
> It looks like a socket problem.
> 
> Greetings,
> Jan Schiefer!
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.5 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
> 
> iD8DBQFCXP67zC00UKXFdVcRAmuJAKCB1cYU/LUHGf3vyqhqznRkOdDQugCZAaQM
> sOQl/3zOLgsM9UXjid2iLs8=
> =WdfB
> -----END PGP SIGNATURE-----
> 
-- 
 _      Damien Sandras
(o-     GnomeMeeting: http://www.gnomemeeting.org/
//\     FOSDEM 2005 : http://www.fosdem.org
v_/_    H.323 phone : callto:ils.seconix.com/dsandras seconix com




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]