AMI hangs waiting for response
Reported by dimas | May 28th, 2009 @ 09:09 AM
require 'rubygems'
require 'adhearsion'
require 'adhearsion/voip/asterisk/manager_interface'
ami = Adhearsion::VoIP::Asterisk::Manager::ManagerInterface.new
:host => "localhost", ..., :events => false
ami.connect!
resp = ami.send_action "Command", :Command => "sip show channels"
This code does not return. I modified manager_interface/ami_lexer.rb in order to call view_buffer at the very end of << operation (right after the call to resume!) hope that helps:
shell$ ruby t.rb
DEBUG ami: Sending AMI action:
Action: login ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO Username: pbxui Secret: XXXXXXXX Events: Off
VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
Viewing the buffer
############################# Asterisk Call Manager/1.0\r\n
^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVViewing the buffer
############################# Asterisk Call Manager/1.0\r\n
Response: Success\r\n
ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n
Message: Authentication accepted\r\n
\r\n ^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INFO ami: Successful AMI actions-only connection into pbxui@localhost DEBUG ami: Sending AMI action:
Action: command ActionID: OPZFbpxz-huMN-qhZn-UEVg-tHCWuYsWvJRU Command: sip show channelsVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
Viewing the buffer
############################# Asterisk Call Manager/1.0\r\n
Response: Success\r\n
ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n
Message: Authentication accepted\r\n
\r\n Response: Follows\r\n
Privilege: Command\r\n
^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVViewing the buffer
############################# Asterisk Call Manager/1.0\r\n
Response: Success\r\n
ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n
Message: Authentication accepted\r\n
\r\n Response: Follows\r\n
Privilege: Command\r\n
ActionID: OPZFbpxz-huMN-qhZn-UEVg-tHCWuYsWvJRU\r\n
^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVViewing the buffer
############################# Asterisk Call Manager/1.0\r\n
Response: Success\r\n
ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n
Message: Authentication accepted\r\n
\r\n Response: Follows\r\n
Privilege: Command\r\n
ActionID: OPZFbpxz-huMN-qhZn-UEVg-tHCWuYsWvJRU\r\n
Peer User/ANR Call ID Seq (Tx/Rx) Format Hold Last Message \n
0 active SIP channels\n
^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVViewing the buffer
############################# Asterisk Call Manager/1.0\r\n
Response: Success\r\n
ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n
Message: Authentication accepted\r\n
\r\n Response: Follows\r\n
Privilege: Command\r\n
ActionID: OPZFbpxz-huMN-qhZn-UEVg-tHCWuYsWvJRU\r\n
Peer User/ANR Call ID Seq (Tx/Rx) Format Hold Last Message \n
0 active SIP channels\n
--END COMMAND--\r\n \r\n ^ ############################# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
here i have to break the application because it hangs (waiting for more data I guess).
LOCAL GEMS
activesupport (2.3.2)
adhearsion (0.8.2)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.7, 1.0.1)
gem_plugin (0.2.3)
log4r (1.0.5)
mailfactory (1.4.0)
mime-types (1.16, 1.15)
mongrel (1.1.5)
mysql (2.7)
passenger (2.2.2, 2.0.3)
rack (1.0.0, 0.9.1, 0.4.0)
rake (0.8.7, 0.8.3)
rdoc (2.4.3, 2.2.1)
rubigen (1.5.2)
ruby-net-ldap (0.0.4)
sequel (3.0.0, 2.7.0)
Comments and changes to this ticket
-
dimas May 28th, 2009 @ 09:12 AM
OMG how the plaintext was formatted... Will try repeating the last buffer dump in PRE tags:
############################# Asterisk Call Manager/1.0\r\n Response: Success\r\n ActionID: T4A02kpR-g1hq-kHAr-GvBN-U0Jk7QZ1tpKO\r\n Message: Authentication accepted\r\n \r\n Response: Follows\r\n Privilege: Command\r\n ActionID: OPZFbpxz-huMN-qhZn-UEVg-tHCWuYsWvJRU\r\n Peer User/ANR Call ID Seq (Tx/Rx) Format Hold Last Message \n 0 active SIP channels\n --END COMMAND--\r\n \r\n ^ #############################
-
bodhi May 31st, 2009 @ 09:41 PM
- Tag set to ami, ragel
I think this is due to a bug in the ami protocol lexer definition. The definition states that before
--END COMMAND--\r\n
there is\r\n
, but in reality only the\n
is transmitted.Try applying the patch in the attached file, it might fix it for you. But then you'll probably run into problem #72 ;)
-
dimas June 1st, 2009 @ 05:36 AM
The patch seems to fix the problem thanks.
I had to install lots of other gems and Ragel in order to rebuild the lexer though... I wish this fix would be brought by "gem install adhearsion" when it will be time to install it on other boxes :)
I'm not hitting #72 yet because responses are short (i'm just trying out ruby/adhearsion, not doing anything serious in production).
Thanks again.
-
Jay Phillips June 4th, 2009 @ 03:28 AM
- State changed from new to open
Hey bodhi,
Thanks for submitting a patch! Do you have a Github account? I'd love your patch to be credited in the public timeline by you doing a fork, patching, and sending a pull request.
Also, as a note:
- text = @data[@last_seen_value_end..(@current_pointer - "\r\n--END COMMAND--".size)] + text = @data[@last_seen_value_end..@current_pointer] + text.sub! /\r?\n--END COMMAND--/, ""
I think there is a way to get around the ending issue without doing String#sub!(). I tried to avoid modifications like that because it places logic outside of the Ragel realm and, if this is ported to other languages (Java or C) for use with Adhearsion as interpreter extensions, that code will have to replicate all the little hacks like that too.
-
Ben Klang August 2nd, 2010 @ 12:27 PM
- State changed from open to resolved
- Milestone order changed from 0 to 0
This appears to have been fixed in commit 573348a9957547ad8a12f7e394b4cad1e6693f3a. My testing confirms that the example command works successfully (even with the missing \r from Asterisk).
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
People watching this ticket
Attachments
Referenced by
- 85 AMI fails to parse events if colon is contained anywhere in data Jay, what are you plans on releasing the new version time...
- 85 AMI fails to parse events if colon is contained anywhere in data Jay, what are you plans on releasing the new version time...