Contatti SIP multipli: un racconto dell'orrore
Ho provato a far parlare Ekiga (ora abbandonato e già ex GnomeMeeting... andiamo bene) con Asterisk e ho scoperto il vero dolore.
Dopo molto debug scopro che:
- Ekiga manda un elenco di Contact senza ragionare sul routing;
- Asterisk, usando PJSIP, supporta contatti multipli, ma a metà;
- i contatti multipli sono sostanzialmente un'idea del cazzo.
In particolare Ekiga pubblicizza un contatto per ogni indirizzo IPv4, quando avrebbe senso usarne solo uno: quello attraverso cui raggiunge il server. Che senso ha pubblicizzare altri IP? Crea ovviamente solo confusione. A parziale discolpa imposta una preferenza sul contatto da usare (q=1.0), ma Asterisk la ignora, quindi con buona probabilità di default le chiamate in entrata andranno al contatto sbagliato.
In Asterisk è possibile fare Dial verso tutti i contatti usando Dial(${PJSIP_DIAL_CONTACTS(${endpoint})), ma non è possibile usare le code (in modo diretto); inoltre se state facendo squillare n contatti, declinare la chiamata in uno continuerà a fare squillare gli altri (che probabilmente non sentite) in eterno o fino al timeout.
Quindi da una parte il server SIP è schizzinoso e ha un comportamento imprevedibile; dall'altra la configurazione SIP di Ekiga, come ormai quella di tutti i softphone SIP, è ridicola: non permette di scegliere NESSUNO di questi comportamenti, restringere i contatti, niente di niente.
Fortunatamente potevo mettere le mani su entrambi gli endpoint... non voglio neanche immaginare un setup più complesso e magari in cui l'endpoint del server non è controllato da noi...