Bug 15006: [QA Follow-up] Only handle login requests in raw_transport
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Wed, 13 Jul 2016 09:59:28 +0000 (11:59 +0200)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 15 Jul 2016 14:11:06 +0000 (14:11 +0000)
Although mainly hypothetical, it would still be possible to get
response from the server for an acs resend request. (This exception
is allowed in MsgType::handle.)
I also noticed that the response may well be a message from an older
session still.
This patch just removes that exception by only passing login requests
to sub handle in the raw_transport loop.

Test plan:
[1] Verify normal login procedure for raw.
[2] Check a few acs resend requests in raw. They should terminate without
    a response.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
C4/SIP/SIPServer.pm

index 814e0ff..5e1e3a6 100755 (executable)
@@ -146,7 +146,9 @@ sub raw_transport {
             return;
         }
         $input =~ s/[\r\n]+$//sm; # Strip off trailing line terminator(s)
-        last if C4::SIP::Sip::MsgType::handle($input, $self, LOGIN);
+        my $reg = qr/^${\(LOGIN)}/;
+        last if $input !~ $reg ||
+            C4::SIP::Sip::MsgType::handle($input, $self, LOGIN);
     }
     alarm 0;