AGI Script Returning 4

Home » Asterisk Users » AGI Script Returning 4
Asterisk Users 3 Comments

HI All. I have a really strange issue that I’m two months into troubleshooting; however, I cannot figure it out. I have an AGI Script
(PHP) that runs every time a call comes into my Asterisk box. Most of the time, it runs without any issue. However, every now and then, the PHP-AGI
script fails after it is executed and simply returns ‘returning 4’. I
verify the PHP script begins to run. However, it appears to just stop. I
have placed try/catch statements everywhere, but it does not seem to hit them.

Just to verify, this is the same script running over and over with the same parameter.

Any ideas/suggestions as of what can be happening?

Thanks, Alex

3 thoughts on - AGI Script Returning 4

  • Dňa 30. 1. 2021 o 20:18 Alexander Perkins napísal(a):

    I think this can happen by hanging up the call by one party, when SIGHUP
    is sent to AGI script. PHP will exit on SIGHUP. It can be resolved by initializing signal handler in PHP script (pcntl_signal) for SIGHUP and doing nothing in it (return).


    Regards, Michal Rybarik

  • From res_agi.c:

    enum agi_result {
    AGI_RESULT_FAILURE = -1,
    AGI_RESULT_SUCCESS,
    AGI_RESULT_SUCCESS_FAST,
    AGI_RESULT_SUCCESS_ASYNC,
    AGI_RESULT_NOTFOUND,
    AGI_RESULT_HANGUP,
    };

    so, AGI_RESULT_HANGUP == 4.

    When Asterisk detects the hangup on the channel, it sends a SIGHUP to your AGI.

    I always set a signal handler on SIGHUP and do what makes sense to my application: maybe some cleanup or syslog() before return() or exit(). Almost always exit().


    Thanks in advance,
    ————————————————————————-
    Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
    https://www.linkedin.com/in/steve-edwards-4244281