Bug 31552: SIP2 option format_due_date not honored for AH field in item information...
[koha-ffzg.git] / C4 / SIP / SIPServer.pm
old mode 100755 (executable)
new mode 100644 (file)
index 7af3554..995d448
@@ -1,4 +1,5 @@
 #!/usr/bin/perl
+
 package C4::SIP::SIPServer;
 
 use strict;
@@ -20,8 +21,8 @@ use C4::SIP::Sip::MsgType qw( handle login_core );
 use C4::SIP::Logger qw(set_logger);
 
 use Koha::Caches;
-
 use Koha::Logger;
+
 use C4::SIP::Trapper;
 tie *STDERR, "C4::SIP::Trapper";
 
@@ -29,6 +30,9 @@ use base qw(Net::Server::PreFork);
 
 use constant LOG_SIP => "local6"; # Local alias for the logging facility
 
+
+set_logger( Koha::Logger->get( { interface => 'sip' } ) );
+
 #
 # Main  # not really, since package SIPServer
 #
@@ -105,6 +109,9 @@ sub process_request {
     $self->{account} = undef;  # Clear out the account from the last request, it may be different
     $self->{logger} = set_logger( Koha::Logger->get( { interface => 'sip' } ) );
 
+    # Flush previous MDCs to prevent accidentally leaking incorrect MDC-entries
+    Koha::Logger->clear_mdc();
+
     my $sockname = getsockname(STDIN);
 
     # Check if socket connection is IPv6 before resolving address
@@ -179,6 +186,10 @@ sub raw_transport {
         )
     );
 
+    # Set MDCs after properly authenticating
+    Koha::Logger->put_mdc( "accountid", $self->{account}->{id} );
+    Koha::Logger->put_mdc( "peeraddr",  $self->{server}->{peeraddr} );
+
     siplog("LOG_DEBUG", "raw_transport: uname/inst: '%s/%s'",
         $self->{account}->{id},
         $self->{account}->{institution});
@@ -343,6 +354,9 @@ sub read_request {
       my $raw_length;
       local $/ = "\015";
 
+      # SIP connections might be active for weeks, clear L1 cache on every request
+      Koha::Caches->flush_L1_caches();
+
     # proper SPEC: (octal) \015 = (hex) x0D = (dec) 13 = (ascii) carriage return
       my $buffer = <STDIN>;
       if ( defined $buffer ) {