Broken Pipe Question

Home » Asterisk Users » Broken Pipe Question
Asterisk Users 3 Comments

I am running a heartbeat… Asterisk 11.15.0 – same behaviour is noticed on
1.4.43 also

I issue a call through the API that does the below. just UserEvent and Hangup

— Executing [s@heartbeat:1] UserEvent(“Local/s@heartbeat-0000000f;2”,
“HeartBeat, Noop”) in new stack
— Executing [s@heartbeat:2] Hangup(“Local/s@heartbeat-0000000f;2”, “”)
in new stack
== Spawn extension (heartbeat, s, 2) exited non-zero on
‘Local/s@heartbeat-0000000f;2’
[Dec 16 13:57:01] ERROR[1956]: utils.c:1440 ast_careful_fwrite: fwrite()
returned error: Broken pipe

I get “many” broken pipes (last line above) in the
/var/log/asterisk/messages file. Is there a way to more correctly close and not get that message?

Action: Originate\r\n Channel: Local/s@smvoice-heartbeat/n\r\n Context: heartbeat\r\n Exten: s\r\n Priority: 1\r\n

Thanks,

jerry

3 thoughts on - Broken Pipe Question

  • Assuming you are talking about the Asterisk Management Interface (AMI).

    I have seen many broken pipe messages cause by the AMI client closing the connection before reading the response from the server. Some of the Asterisk Munin-Node plugins suffered from this problem.

    After you issue your command, you need to read the response. You should get a line that says ‘–END COMMNAD–‘ or an error response. Since the dialplan is executing, I doubt you will get an error.

    Your client should issue a Logoff action, then read all the responses until it gets the ‘Thanks for all the fish.’ response. Then close the socket.

  • Hi Dale,

    I am in fact doing all the items you suggest. here is a log.

    For normal commands I am logging off just fine. Its just the heartbeat command I am getting an error on when logging out.

    Thoughts?

    Jerry

    —-

  • Jerry,

    asterisk_execute() event_list=0 retU last_command=’Action: Logoff’
    Response: Error[CR ][LF ]Message: Missing action in request[CR ][LF ][CR
    ][LF ]

    Shows an error. Perhaps the originate did not complete before the logoff was sent? I have never used original in AMI so it is just a guess.

    Dale