<HTML>
<HEAD>
<TITLE>Problem with AMI action userevent</TITLE>
</HEAD>
<BODY>
<FONT FACE="Verdana, Helvetica, Arial"><SPAN STYLE='font-size:12.0px'>When action_userevent was rewritten to not use local variables there was an omission. The buffer is not initialized each time so things keep getting appended to the buffer.<BR>
<BR>
In addition I would find it useful to have the ping action return the timestamp. That way I do not have to have timestamp event enabled and when I want to check the time sync with the asterisk server I can just to a ping and get a timestamp back.<BR>
<BR>
Here is a patch the current svn version of manager.c from the 1.6.0 branch<BR>
<BR>
<BR>
--- manager.c &nbsp;&nbsp;&nbsp;2009-02-11 15:16:16.000000000 -0800<BR>
+++ manager.c.mine &nbsp;&nbsp;&nbsp;2009-02-11 15:10:52.000000000 -0800<BR>
@@ -1089,9 +1089,13 @@<BR>
&nbsp;<BR>
&nbsp;static int action_ping(struct mansession *s, const struct message *m)<BR>
&nbsp;{<BR>
+ &nbsp;&nbsp;&nbsp;struct timeval now;<BR>
+<BR>
+ &nbsp;&nbsp;&nbsp;now = ast_tvnow();<BR>
+<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;astman_append(s, &quot;Response: Success\r\n&quot;<BR>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Ping: Pong\r\n&quot;<BR>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;\r\n&quot;);<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Ping: Pong Timestamp: %ld.%06lu\r\n&quot;<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;\r\n&quot;, now.tv_sec, (unsigned long) now.tv_usec);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>
&nbsp;}<BR>
&nbsp;<BR>
@@ -2462,6 +2466,8 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const char *event = astman_get_header(m, &quot;UserEvent&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct ast_str *body = ast_str_thread_get(&amp;userevent_buf, 16);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int x;<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* better init stuff so &nbsp;ast_str_append can be called */<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body-&gt;used = 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (x = 0; x &lt; m-&gt;hdrcount; x++) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (strncasecmp(&quot;UserEvent:&quot;, m-&gt;headers[x], strlen(&quot;UserEvent:&quot;))) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ast_str_append(&amp;body, 0, &quot;%s\r\n&quot;, m-&gt;headers[x]);<BR>
<BR>
-- <BR>
Jim Dickenson<BR>
<a href="mailto:dickenson@cfmc.com">mailto:dickenson@cfmc.com</a><BR>
<BR>
CfMC<BR>
<a href="http://www.cfmc.com/">http://www.cfmc.com/</a><BR>
<BR>
</SPAN></FONT>
</BODY>
</HTML>