From 0778a18e843ed9dff93beccc888ea76d2ecb8af4 Mon Sep 17 00:00:00 2001 From: miker Date: Wed, 30 Aug 2006 00:35:12 +0000 Subject: [PATCH] chopping up dup messages in Client::process() git-svn-id: svn://svn.open-ils.org/ILS/trunk@5764 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../OpenSRF/Transport/SlimJabber/Client.pm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/OpenSRF/src/perlmods/OpenSRF/Transport/SlimJabber/Client.pm b/OpenSRF/src/perlmods/OpenSRF/Transport/SlimJabber/Client.pm index b90e172d71..d67e77dbb5 100644 --- a/OpenSRF/src/perlmods/OpenSRF/Transport/SlimJabber/Client.pm +++ b/OpenSRF/src/perlmods/OpenSRF/Transport/SlimJabber/Client.pm @@ -192,6 +192,7 @@ sub timed_read { $self->{temp_buffer} = ''; my ($tag) = ($buffer =~ /<([^\s\?\>]+)/o); + $self->{last_tag} = $tag; $logger->transport("Using tag: $tag ", INTERNAL); if ( $buffer =~ /^(.*?<\/$tag>){1}(.*)/s) { @@ -285,7 +286,8 @@ sub timed_read { if ($first_read) { $logger->transport(" First read Buffer\n [$buffer]", INTERNAL); - ($tag) = ($buffer =~ /<([^\s\?\>]+){1}/o); + ($tag) = ($buffer =~ /<([^\s\?\>\/]+){1}/o); + $self->{last_tag} = $tag; $first_read--; $logger->transport("Using tag: $tag ", INTERNAL); } @@ -563,6 +565,18 @@ sub process { "Call to Client->timed_read( $timeout ) successfully returned data", INTERNAL ); } + my $t = $self->{last_tag}; + my @msgs = $val =~ /(<$t[^>]*>.*?<\/$t>)/g; + $val = shift(@msgs); + + if (@msgs) { + my $tmp = $self->{temp_buffer}; + + $self->{temp_buffer} = ''; + $self->{temp_buffer} .= $_ for (@msgs); + $self->{temp_buffer} .= $tmp; + } + return $val; } -- 2.43.2