Eu resolvi o problema. Parece que é o mesmo em todas as máquinas Ubuntu. Pelo menos em 12.04.
Foi assim que depurei o problema:
- Eu já tinha o Asterisk, o Linphone e o Wireshark já instalados. Eu corro todos eles.
- Eu faço o Wireshark para ouvir "lo". Normalmente não havia nada aparecendo no Wireshark.
- Então eu chamo um
hello world
em localhost . Eu vejo que a primeira comunicação do Linphone para asterisco acontece a 0seg, então algo acontece a 0.5seg, depois uma longa pausa e o próximo pacote é quase 3 segundos depois. Esse foi o meu problema.
Abaixo está como eu consertei. Ele se livra daquele longo atraso de 3 segundos, embora ainda haja 0.5sec, que eu não consigo me livrar.
Como se verifica dnsmasq que vem com network-manager estava resolvendo localhost perguntando um servidor DNS remoto, abre no meu caso.
Em /etc/NetworkManager/NetworkManager.conf
, comentei #dns=dnsmasq
então
sudo service network-manager stop
sudo netstat -anlp | grep -w LISTEN
elimine todos os processos dnsmasq em execução
sudo apt-get install dnsmasq
Em seguida, configure o dnsmasq, certifique-se de que em /etc/dnsmasq.conf
você tem
# Listen only on localhost
listen-address=127.0.0.1
bind-interfaces
E isso é tudo. Você terá que reiniciar, acho que logout e login também devem ser feitos.
Para ver se seu sistema está atualmente usando o Dnsmasq, execute
netstat -ulnp | grep ":53 "
Você pode executar
sudo /etc/init.d/dnsmasq restart
para ver se você não está recebendo erros. Agora "dig localhost" leva 0s.
Alguns links que me ajudaram: link