On 05/16/2011 04:17 PM, vip killa wrote:
forgive me for i am very new to asterisk and perl. but how could you detect if you were disconnected from AMI?
if(defined($mgr_sock)) would evaluate to false. That's all you need to do with the plain vanilla blocking I/O you're using now.
Down the road, if non-blocking I/O is set, there are other strategies. The traditional way was an ioctl() FIONREAD that returned 0 for the bytes value, though the ioctl() call did not fail:
require 'sys/ioctl.ph'; ... my $bytes_waiting = pack("L", 0); ioctl($mgr_sock, FIONREAD(), $bytes_wating); $bytes_waiting = unpack("L", $bytes_waiting); if($bytes_waiting == 0) { # Far-end disconnected. close($mgr_sock); return; } -- Alex Balashov - Principal Evariste Systems LLC 260 Peachtree Street NW Suite 2200 Atlanta, GA 30303 Tel: +1-678-954-0670 Fax: +1-404-961-1892 Web: http://www.evaristesys.com/ -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users