Investigación, Desarrollo y Bugs

Asterisk Bug OpenR2

OpenR2 es una librería que implementa la senalización del protocolo de telefonía MFC/R2 sobre líneas de E1. MFC/R2 es un protocolo todavía utilizado en muchos paises de latinoamérica, a pesar de ser un protocolo relativamente antiguo comparado con el VoIP.

En Junio del 2008 cuando Codevoz implementó la solución de OpenR2 encontró que se estaba intentando utilizar un canal cuando éste no había sido liberado, por lo que Moises Silva, desarrollador de OpenR2, introdujo locks, sin embargo Codevoz encontró un bug ya que había un lock que nunca se estaba liberando.

El problema radicaba en que zt_r2_on_call_disconnected hacía el lock antes del IF, pero no se liberaba si la condición era falsa, ya que en el ELSE solo se hace el clearing y no el unlock. Por lo que al no liberar este lock no se podía usar nuevamente el canal.

El bug fue solucionado y será incluído en la próxima versión de Asterisk, por lo que la solución es estable y ya está en producción en los siguientes países:

Argentina -ar, Brazil -br, China -cn, Czech -cz, Ecuador -ec, México -mx, Phillippines -ph y Venezuela -ve.

Información sobre la librería: OpenR2

Asterisk Bug 8386

El dia viernes 17-Noviembre nos encontramos con un problema en los parametros para limitar el tiempo de las llamadas en Asterisk.

Codevoz ha sido parte del grupo que ha solucionado dicho bug, como se puede ver en la pagina de bugs de Digium bajo el nombre de jsolares – reporter, José Solares nuestro Director de Investigación y Desarrollo

Parte del problema es que la función ast_generic_bridge regresa incorrectamente un AST_BRIDGE_COMPLETE. Que es lo que provoca que se corte la llamada al finalizar esta función en lugar de seguir con la verificación de los tiempos.

Asterisk Bug 7832

Lo principal de este bug reportado por codevoz es que en asterisk 1.2.x no se puede accesar a las variables CDR (billsec), CDR (duration) en el dialplan o por medio de AGI.

El comportamieno con el parche billsec.patch.gz aplicado es el siguiente :

1. CDR (billsec) regresa la cantidad de segundos que lleva la llamada desde que se contesto hasta que se ejecuta la funcion, de no ser contestada la llamada regresa cero.

2. CDR (duration) regresa la cantidad de segundos desde que ingreso la llamada a asterisk hasta el momento de ejecutar CDR

Esto nos dara la cantidad de segundos desde que contestaron la llamada hasta que finalizo, es decir el tiempo total cobrable de la misma, mientras que sin el parche regresa un 0 ya que todavia no se ha calculado el valor de la variable en asterisk.

Asterisk Issue: Asterisk 1.8.1-rc1 crashes in cdr.c line 1201 after a parked call catched with parkedcall() is hungup

La descripcion de este issue esta especificada en Página de Issues de Asterisk tall issue fue reportado y resuelto, con de un patch, por nuestro departamento de desarrollo liderado por jsolares.