<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Well, I got the code working, but still unsure about the event struct.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>So I’m freeing the struct with esl_safe_free which I found used in some fs code.  Hope that’s correct.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> FreeSWITCH-users [mailto:freeswitch-users-bounces@lists.freeswitch.org] <b>On Behalf Of </b>Telium Technical Support<br><b>Sent:</b> Tuesday, November 16, 2021 4:47 PM<br><b>To:</b> 'FreeSWITCH Users Help' <freeswitch-users@lists.freeswitch.org><br><b>Subject:</b> [Freeswitch-users] How to retrieve all waiting events via ESL in C/C++<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am trying to retrieve all waiting events via ESL, using the esl_recv_event_timed function. The documentation doesn't offer much help.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>My code below is intended to retrieve all events waiting. But it doesn't work...I just gather an increasing number of headers (always appending onto the last), and the body is the same, for each event. As if the events are not dequeuing.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As well, events I expect (eg HEARTBEAT) are not appearing. So it seems I'm not really iterating through the list of waiting events:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>QStringList body;<o:p></o:p></p><p class=MsoNormal>esl_event_t *save_event = NULL;<o:p></o:p></p><p class=MsoNormal>while (true) {<o:p></o:p></p><p class=MsoNormal>    esl_status_t connectionStatus = esl_recv_event_timed(&m_EslHandle, 0, 0, &save_event);<o:p></o:p></p><p class=MsoNormal>    if (connectionStatus == ESL_SUCCESS) {<o:p></o:p></p><p class=MsoNormal>        if (save_event) {<o:p></o:p></p><p class=MsoNormal>            esl_event_header_t* nextHeader = save_event->headers;<o:p></o:p></p><p class=MsoNormal>            while ((nextHeader != NULL) && (nextHeader != save_event->last_header)) {<o:p></o:p></p><p class=MsoNormal>                headerList << TL_KeyValuePair(nextHeader->name,nextHeader->value);<o:p></o:p></p><p class=MsoNormal>                nextHeader = nextHeader->next;<o:p></o:p></p><p class=MsoNormal>            }<o:p></o:p></p><p class=MsoNormal>            body = QString(m_EslHandle.last_sr_event->body).split("\n",Qt::SkipEmptyParts);<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal>        else break;<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal>    else {<o:p></o:p></p><p class=MsoNormal>        return false;<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Can someone offer a simple code (using C ESL) on how to retrieve all waiting events?<o:p></o:p></p></div></body></html>