> On Jan. 30, 2015, 1:22 a.m., George Joseph wrote: > > If you run the Testsuite, you'll get a good indication of whether this is > > truly backwards compatible. > > gareth wrote: > I ran the test apps/queue/set_penalty which makes use of ami.command and > it failed. > > However this appears to be a bug with starpy, it is treading the "\r\n" > as the end of message. Changing it to output just "\n" results in a > successful test. > > Breaking an existing client library isn't ideal, but the correct > delimiter for command output is "--END COMMAND--\r\n\r\n", not "\r\n\r\n". > > Corey Farrell wrote: > If we do consider modifying the AMI protocol to support text blobs like > this, I'd prefer we think about how that should be implemented generically, > rather than looking at this one action. So maybe adding 'Text-Terminator: > --END COMMAND--' or 'Content-Length: XX' to the headers would allow the next > packet to be read as a text block. This way the AMI client libraries could > have generic support for this type of response. On the other hand AMI is not > HTTP. This is a perfect example of something ARI is better suited for. For > that reason I'm not actually in favor of having AMI support text blobs. > > I'd rather see the command output converted to headers: > Response: Success > ActionID: <actionid> > Output: line 1 of cli output > Output: more Output headers per line of cli output > > This would of course break existing clients, but would get rid of the > exception to the AMI protocol. > > gareth wrote: > Switching to a header-based output would be much better, the current > output format seems to lend itself to being mis-parsed. > > Adding a header to the request would allow users to choose the new > format, eg: > > Action: Command > Command: ... > OutputHeader: true > > Corey Farrell wrote: > I'm not sure about giving an option. I think if we're bumping the AMI > version because of an incompatible change, we should just get rid of what was > broken. That's just my opinion though, it's worth hearing opinions of others. > > Matt Jordan wrote: > So, I agree with Corey. I think if we're going to fix this and bump the > version number, then let's just bite the bullet and do it. > > My suggestion is to do the following: > 1) Make sure we are happy with this patch and that it is ready to go. > 2) When that occurs, we should make a note on the wiki page here: > https://wiki.asterisk.org/wiki/display/AST/Asterisk+API+Improvements > 3) Sometime prior to cutting a new major branch, we should get together > on the -dev list and discuss whether or not it is worth bumping the major > version. Given the other things on the list, I think the answer will be yes - > and if you think it is worth having the discussion now, then we certainly can > start it.
Okay, the old output format will be removed. While there, I might as well fix another problem with action_command where it does not send back an error response if malloc, lseek or read fail. - gareth ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/4391/#review14384 ----------------------------------------------------------- On Jan. 30, 2015, 12:25 a.m., gareth wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/4391/ > ----------------------------------------------------------- > > (Updated Jan. 30, 2015, 12:25 a.m.) > > > Review request for Asterisk Developers. > > > Bugs: ASTERISK-24730 > https://issues.asterisk.org/jira/browse/ASTERISK-24730 > > > Repository: Asterisk > > > Description > ------- > > This patch adds a blank line between the headers and the output in the > Command action response. The reason for this change is to make it easier to > determine where the headers end and the output from the command starts. > > Currently, to parse a response to a Command action, one has to: > > 1. Read one line, if line is "Response: Error", parse the remaining as a > standard AMI response and stop. > 2. Read one more line - or two if you used an ActionID - those lines are the > headers. > 3. Then read everything up to "--END COMMAND--\r\n\r\n". > > That could be changed to: > > 1. Read standard AMI response. > 2. If "Response: Follows", then read everything up to "--END > COMMAND--\r\n\r\n". > > The AMI version has been increased to 2.8.0 as this is a protocol change and > so that clients detect the new behavior. > > Adding a blank line should not cause older parsers to fail as they have to > read everything up to "--END COMMAND--\r\n\r\n" anyway. > > Adding a blank line will also not cause the AMI to HTML/XML encoder to fail > to separate the headers from the output as it checks for the presence of a > ":" character, which a blank line does not contain. > > > Diffs > ----- > > /trunk/main/manager.c 431113 > /trunk/include/asterisk/manager.h 431113 > /trunk/CHANGES 431113 > > Diff: https://reviewboard.asterisk.org/r/4391/diff/ > > > Testing > ------- > > Connected to manager, issued 'core show uptime' command and verified that > there was a blank line between the headers and output. > > > Thanks, > > gareth > >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev