summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-07-12 23:01:02 +0000
committerShaun Ruffell <sruffell@digium.com>2011-07-12 23:01:02 +0000
commitb62d766c1338accbf7c2a58dc290837123cdb13d (patch)
tree4bfe7603df93796b0b67fe12e1112f43c1f93838
parentd7329291e83cf4470086888776ff02e049fd4b88 (diff)
Span.pm: Process the /proc/dahdi/<x> files atomically.
It is possible that the contents of the proc files can change while the perl modules are in the processing of processing them. Specifically, if lsdahdi is called on boot before the channels are configured, the channel will be "probed" to determine if it's an FXO or FXS channel and that can result in the output of proc changing. When the size of proc changes, the script can get confused about where the beginning of the next line is. This patch reads in the proc file completely into memory first, and then starts processing each of the lines. This resolves the "Unrecognized garbage 'INACTIVE)' in -" that is displayed on boot with the recent trunk of DAHDI. Signed-off-by: Shaun Ruffell <sruffell@digium.com> Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/trunk@10040 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--xpp/perl_modules/Dahdi/Span.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/xpp/perl_modules/Dahdi/Span.pm b/xpp/perl_modules/Dahdi/Span.pm
index 367ca08..4e63af4 100644
--- a/xpp/perl_modules/Dahdi/Span.pm
+++ b/xpp/perl_modules/Dahdi/Span.pm
@@ -236,7 +236,8 @@ sub new($$) {
$self->{CHANS} = [];
my @channels;
my $index = 0;
- while(<F>) {
+ my @channel_lines = <F>;
+ foreach (@channel_lines) {
chomp;
s/^\s*//;
s/\s*$//;