Hi all, > @ring team, what can cause 100% call failure after 45..90s ?
I've often seen this kind of question: what's happening when I do a call, and why it fails? So this is the long answer :-) When calling a RingID number, following steps happen in order: 1/ The caller initializes a ICE transport: - this step blocks until all ICE "services" are initialized/contacted (Host/UPnP/STUN/TURN) - this step can fail: initialization fails after 5 seconds (ICE_INIT_TIMEOUT in src/ringdht/ringaccount.cpp) 2/ The caller does a DHT put with its local ICE attributes as value and the callee RingID as key (well a bit more complex, but it's the concept). - this step is asynchronous - this step can fail: bound on DHT backend failures. 3/ The caller adds a listen point on DHT for the callee's response on our put. - this step is asynchronous - listen success callback starts ICE negotiation on callee ICE attributes 4/ The call ID is put into a pending list: a paced loop checks the ICE transport status. - if ICE negotiation succeed before 60 seconds (ICE_NEGOTIATION_TIMEOUT in src/ringdht/ringaccount.cpp) the call goes into connected state and SIP protocol proceed as in IP2IP/SIP account. - after this time: the call is marked as failed and removed. On the callee, a similar process happens: it starts from a DHT listen that trigs when a ICE msg comming (see point 2/). In short: when a ICE is initialized at the caller side, the callee has 60 seconds to: - receive the DHT msg - start its own ICE transport - send back its local ICE attributes to caller - negotiate ICE transport with caller Only both daemon logs (at each point) can answer where is the problem. Regards, Guillaume _______________________________________________ Ring mailing list Ring@lists.savoirfairelinux.net https://lists.savoirfairelinux.net/mailman/listinfo/ring