| 
      
            Lines 266-279
          sub new {
      
      
        Link Here
      
     | 
  
        
          | 266 | 
                  # it's using the 2.00 login process, so it must support 2.00.  | 
          266 | 
                  # it's using the 2.00 login process, so it must support 2.00.  | 
        
        
          | 267 | 
                  $protocol_version = 2;  | 
          267 | 
                  $protocol_version = 2;  | 
        
        
          | 268 | 
              }  | 
          268 | 
              }  | 
        
          
            
              | 269 | 
                  syslog( "LOG_DEBUG", "Sip::MsgType::new('%s', '%s...', '%s'): seq.no '%s', protocol %s", $class, substr( $msg, 0, 10 ), $msgtag, $seqno, $protocol_version ); | 
              269 | 
                  siplog( "LOG_DEBUG", "Sip::MsgType::new('%s', '%s...', '%s'): seq.no '%s', protocol %s", $class, substr( $msg, 0, 10 ), $msgtag, $seqno, $protocol_version ); | 
            
        
          | 270 | 
           | 
          270 | 
           | 
        
        
          | 271 | 
              # warn "SIP PROTOCOL: $protocol_version";  | 
          271 | 
              # warn "SIP PROTOCOL: $protocol_version";  | 
        
        
          | 272 | 
              if ( !exists( $handlers{$msgtag} ) ) { | 
          272 | 
              if ( !exists( $handlers{$msgtag} ) ) { | 
        
          
            
              | 273 | 
                      syslog( "LOG_WARNING", "new Sip::MsgType: Skipping message of unknown type '%s' in '%s'", $msgtag, $msg );  | 
              273 | 
                      siplog( "LOG_WARNING", "new Sip::MsgType: Skipping message of unknown type '%s' in '%s'", $msgtag, $msg );  | 
            
        
          | 274 | 
                  return;  | 
          274 | 
                  return;  | 
        
        
          | 275 | 
              } elsif ( !exists( $handlers{$msgtag}->{protocol}->{$protocol_version} ) ) { | 
          275 | 
              } elsif ( !exists( $handlers{$msgtag}->{protocol}->{$protocol_version} ) ) { | 
        
          
            
              | 276 | 
                      syslog( "LOG_WARNING", "new Sip::MsgType: Skipping message '%s' unsupported by protocol rev. '%d'", $msgtag, $protocol_version );  | 
              276 | 
                      siplog( "LOG_WARNING", "new Sip::MsgType: Skipping message '%s' unsupported by protocol rev. '%d'", $msgtag, $protocol_version );  | 
            
        
          | 277 | 
                  return;  | 
          277 | 
                  return;  | 
        
        
          | 278 | 
              }  | 
          278 | 
              }  | 
        
        
          | 279 | 
           | 
          279 | 
           | 
        
  
    | 
      
            Lines 305-311
          sub _initialize {
      
      
        Link Here
      
     | 
  
        
          | 305 | 
                  $self->{fields}->{$field} = undef; | 
          305 | 
                  $self->{fields}->{$field} = undef; | 
        
        
          | 306 | 
              }  | 
          306 | 
              }  | 
        
        
          | 307 | 
           | 
          307 | 
           | 
        
          
            
              | 308 | 
                  syslog( "LOG_DEBUG", "Sip::MsgType::_initialize('%s', '%s', '%s', '%s', ...)", $self->{name}, $msg, $proto->{template}, $proto->{template_len} ); | 
              308 | 
                  siplog( "LOG_DEBUG", "Sip::MsgType::_initialize('%s', '%s', '%s', '%s', ...)", $self->{name}, $msg, $proto->{template}, $proto->{template_len} ); | 
            
        
          | 309 | 
           | 
          309 | 
           | 
        
        
          | 310 | 
              $self->{fixed_fields} = [ unpack( $proto->{template}, $msg ) ];    # see http://perldoc.perl.org/5.8.8/functions/unpack.html | 
          310 | 
              $self->{fixed_fields} = [ unpack( $proto->{template}, $msg ) ];    # see http://perldoc.perl.org/5.8.8/functions/unpack.html | 
        
        
          | 311 | 
           | 
          311 | 
           | 
        
  
    | 
      
            Lines 315-323
          sub _initialize {
      
      
        Link Here
      
     | 
  
        
          | 315 | 
                  $fn = substr( $field, 0, 2 );  | 
          315 | 
                  $fn = substr( $field, 0, 2 );  | 
        
        
          | 316 | 
           | 
          316 | 
           | 
        
        
          | 317 | 
                  if ( !exists( $self->{fields}->{$fn} ) ) { | 
          317 | 
                  if ( !exists( $self->{fields}->{$fn} ) ) { | 
        
          
            
              | 318 | 
                          syslog( "LOG_WARNING", "Unsupported field '%s' in %s message '%s'", $fn, $self->{name}, $msg ); | 
              318 | 
                          siplog( "LOG_WARNING", "Unsupported field '%s' in %s message '%s'", $fn, $self->{name}, $msg ); | 
            
        
          | 319 | 
                  } elsif ( defined( $self->{fields}->{$fn} ) ) { | 
          319 | 
                  } elsif ( defined( $self->{fields}->{$fn} ) ) { | 
        
          
            
              | 320 | 
                          syslog( "LOG_WARNING", "Duplicate field '%s' (previous value '%s') in %s message '%s'", $fn, $self->{fields}->{$fn}, $self->{name}, $msg ); | 
              320 | 
                          siplog( "LOG_WARNING", "Duplicate field '%s' (previous value '%s') in %s message '%s'", $fn, $self->{fields}->{$fn}, $self->{name}, $msg ); | 
            
        
          | 321 | 
                  } else { | 
          321 | 
                  } else { | 
        
        
          | 322 | 
                      $self->{fields}->{$fn} = substr( $field, 2 ); | 
          322 | 
                      $self->{fields}->{$fn} = substr( $field, 2 ); | 
        
        
          | 323 | 
                  }  | 
          323 | 
                  }  | 
        
  
    | 
      
            Lines 366-372
          sub handle {
      
      
        Link Here
      
     | 
  
        
          | 366 | 
                  $error_detection = 1;  | 
          366 | 
                  $error_detection = 1;  | 
        
        
          | 367 | 
           | 
          367 | 
           | 
        
        
          | 368 | 
                  if ( !verify_cksum($msg) ) { | 
          368 | 
                  if ( !verify_cksum($msg) ) { | 
        
          
            
              | 369 | 
                          syslog( "LOG_WARNING", "Checksum failed on message '%s'", $msg );  | 
              369 | 
                          siplog( "LOG_WARNING", "Checksum failed on message '%s'", $msg );  | 
            
        
          | 370 | 
           | 
          370 | 
           | 
        
        
          | 371 | 
                      # REQUEST_SC_RESEND with error detection  | 
          371 | 
                      # REQUEST_SC_RESEND with error detection  | 
        
        
          | 372 | 
                      $last_response = REQUEST_SC_RESEND_CKSUM;  | 
          372 | 
                      $last_response = REQUEST_SC_RESEND_CKSUM;  | 
        
  
    | 
      
            Lines 382-388
          sub handle {
      
      
        Link Here
      
     | 
  
        
          | 382 | 
           | 
          382 | 
           | 
        
        
          | 383 | 
                  # We received a non-ED message when ED is supposed to be active.  | 
          383 | 
                  # We received a non-ED message when ED is supposed to be active.  | 
        
        
          | 384 | 
                  # Warn about this problem, then process the message anyway.  | 
          384 | 
                  # Warn about this problem, then process the message anyway.  | 
        
          
            
              | 385 | 
                      syslog( "LOG_WARNING", "Received message without error detection: '%s'", $msg );  | 
              385 | 
                      siplog( "LOG_WARNING", "Received message without error detection: '%s'", $msg );  | 
            
        
          | 386 | 
                  $error_detection = 0;  | 
          386 | 
                  $error_detection = 0;  | 
        
        
          | 387 | 
                  $self = C4::SIP::Sip::MsgType->new( $msg, 0 );  | 
          387 | 
                  $self = C4::SIP::Sip::MsgType->new( $msg, 0 );  | 
        
        
          | 388 | 
              } else { | 
          388 | 
              } else { | 
        
  
    | 
      
            Lines 395-401
          sub handle {
      
      
        Link Here
      
     | 
  
        
          | 395 | 
                  return substr( $msg, 0, 2 );  | 
          395 | 
                  return substr( $msg, 0, 2 );  | 
        
        
          | 396 | 
              }  | 
          396 | 
              }  | 
        
        
          | 397 | 
              unless ( $self->{handler} ) { | 
          397 | 
              unless ( $self->{handler} ) { | 
        
          
            
              | 398 | 
                      syslog( "LOG_WARNING", "No handler defined for '%s'", $msg );  | 
              398 | 
                      siplog( "LOG_WARNING", "No handler defined for '%s'", $msg );  | 
            
        
          | 399 | 
                  $last_response = REQUEST_SC_RESEND;  | 
          399 | 
                  $last_response = REQUEST_SC_RESEND;  | 
        
        
          | 400 | 
                  print("$last_response\r"); | 
          400 | 
                  print("$last_response\r"); | 
        
        
          | 401 | 
                  return REQUEST_ACS_RESEND;  | 
          401 | 
                  return REQUEST_ACS_RESEND;  | 
        
  
    | 
      
            Lines 526-532
          sub handle_checkout {
      
      
        Link Here
      
     | 
  
        
          | 526 | 
           | 
          526 | 
           | 
        
        
          | 527 | 
                  # Off-line transactions need to be recorded, but there's  | 
          527 | 
                  # Off-line transactions need to be recorded, but there's  | 
        
        
          | 528 | 
                  # not a lot we can do about it  | 
          528 | 
                  # not a lot we can do about it  | 
        
          
            
              | 529 | 
                      syslog( "LOG_WARNING", "received no-block checkout from terminal '%s'", $account->{id} ); | 
              529 | 
                      siplog( "LOG_WARNING", "received no-block checkout from terminal '%s'", $account->{id} ); | 
            
        
          | 530 | 
           | 
          530 | 
           | 
        
        
          | 531 | 
                  $status = $ils->checkout_no_block( $patron_id, $item_id, $sc_renewal_policy, $trans_date, $nb_due_date );  | 
          531 | 
                  $status = $ils->checkout_no_block( $patron_id, $item_id, $sc_renewal_policy, $trans_date, $nb_due_date );  | 
        
        
          | 532 | 
              } else { | 
          532 | 
              } else { | 
        
  
    | 
      
            Lines 653-659
          sub handle_checkin {
      
      
        Link Here
      
     | 
  
        
          | 653 | 
              if ( $no_block eq 'Y' ) { | 
          653 | 
              if ( $no_block eq 'Y' ) { | 
        
        
          | 654 | 
           | 
          654 | 
           | 
        
        
          | 655 | 
                  # Off-line transactions, ick.  | 
          655 | 
                  # Off-line transactions, ick.  | 
        
          
            
              | 656 | 
                      syslog( "LOG_WARNING", "received no-block checkin from terminal '%s'", $account->{id} ); | 
              656 | 
                      siplog( "LOG_WARNING", "received no-block checkin from terminal '%s'", $account->{id} ); | 
            
        
          | 657 | 
                  $status = $ils->checkin_no_block( $item_id, $trans_date, $return_date, $item_props, $cancel );  | 
          657 | 
                  $status = $ils->checkin_no_block( $item_id, $trans_date, $return_date, $item_props, $cancel );  | 
        
        
          | 658 | 
              } else { | 
          658 | 
              } else { | 
        
        
          | 659 | 
                  $status = $ils->checkin( $item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok}, $account->{cv_triggers_alert} ); | 
          659 | 
                  $status = $ils->checkin( $item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok}, $account->{cv_triggers_alert} ); | 
        
  
    | 
      
            Lines 772-790
          sub handle_sc_status {
      
      
        Link Here
      
     | 
  
        
          | 772 | 
              } elsif ( $sc_protocol_version =~ /^2\./ ) { | 
          772 | 
              } elsif ( $sc_protocol_version =~ /^2\./ ) { | 
        
        
          | 773 | 
                  $new_proto = 2;  | 
          773 | 
                  $new_proto = 2;  | 
        
        
          | 774 | 
              } else { | 
          774 | 
              } else { | 
        
          
            
              | 775 | 
                      syslog( "LOG_WARNING", "Unrecognized protocol revision '%s', falling back to '1'", $sc_protocol_version );  | 
              775 | 
                      siplog( "LOG_WARNING", "Unrecognized protocol revision '%s', falling back to '1'", $sc_protocol_version );  | 
            
        
          | 776 | 
                  $new_proto = 1;  | 
          776 | 
                  $new_proto = 1;  | 
        
        
          | 777 | 
              }  | 
          777 | 
              }  | 
        
        
          | 778 | 
           | 
          778 | 
           | 
        
        
          | 779 | 
              if ( $new_proto != $protocol_version ) { | 
          779 | 
              if ( $new_proto != $protocol_version ) { | 
        
          
            
              | 780 | 
                      syslog( "LOG_INFO", "Setting protocol level to $new_proto" );  | 
              780 | 
                      siplog( "LOG_INFO", "Setting protocol level to $new_proto" );  | 
            
        
          | 781 | 
                  $protocol_version = $new_proto;  | 
          781 | 
                  $protocol_version = $new_proto;  | 
        
        
          | 782 | 
              }  | 
          782 | 
              }  | 
        
        
          | 783 | 
           | 
          783 | 
           | 
        
        
          | 784 | 
              if ( $status == SC_STATUS_PAPER ) { | 
          784 | 
              if ( $status == SC_STATUS_PAPER ) { | 
        
          
            
              | 785 | 
                      syslog( "LOG_WARNING", "Self-Check unit '%s@%s' out of paper", $self->{account}->{id}, $self->{account}->{institution} ); | 
              785 | 
                      siplog( "LOG_WARNING", "Self-Check unit '%s@%s' out of paper", $self->{account}->{id}, $self->{account}->{institution} ); | 
            
        
          | 786 | 
              } elsif ( $status == SC_STATUS_SHUTDOWN ) { | 
          786 | 
              } elsif ( $status == SC_STATUS_SHUTDOWN ) { | 
        
          
            
              | 787 | 
                      syslog( "LOG_WARNING", "Self-Check unit '%s@%s' shutting down", $self->{account}->{id}, $self->{account}->{institution} ); | 
              787 | 
                      siplog( "LOG_WARNING", "Self-Check unit '%s@%s' shutting down", $self->{account}->{id}, $self->{account}->{institution} ); | 
            
        
          | 788 | 
              }  | 
          788 | 
              }  | 
        
        
          | 789 | 
           | 
          789 | 
           | 
        
        
          | 790 | 
              $self->{account}->{print_width} = $print_width; | 
          790 | 
              $self->{account}->{print_width} = $print_width; | 
        
  
    | 
      
            Lines 824-833
          sub login_core {
      
      
        Link Here
      
     | 
  
        
          | 824 | 
              my $pwd    = shift;  | 
          824 | 
              my $pwd    = shift;  | 
        
        
          | 825 | 
              my $status = 1;                 # Assume it all works  | 
          825 | 
              my $status = 1;                 # Assume it all works  | 
        
        
          | 826 | 
              if ( !exists( $server->{config}->{accounts}->{$uid} ) ) { | 
          826 | 
              if ( !exists( $server->{config}->{accounts}->{$uid} ) ) { | 
        
          
            
              | 827 | 
                      syslog( "LOG_WARNING", "MsgType::login_core: Unknown login '$uid'" );  | 
              827 | 
                      siplog( "LOG_WARNING", "MsgType::login_core: Unknown login '$uid'" );  | 
            
        
          | 828 | 
                  $status = 0;  | 
          828 | 
                  $status = 0;  | 
        
        
          | 829 | 
              } elsif ( $server->{config}->{accounts}->{$uid}->{password} ne $pwd ) { | 
          829 | 
              } elsif ( $server->{config}->{accounts}->{$uid}->{password} ne $pwd ) { | 
        
          
            
              | 830 | 
                      syslog( "LOG_WARNING", "MsgType::login_core: Invalid password for login '$uid'" );  | 
              830 | 
                      siplog( "LOG_WARNING", "MsgType::login_core: Invalid password for login '$uid'" );  | 
            
        
          | 831 | 
                  $status = 0;  | 
          831 | 
                  $status = 0;  | 
        
        
          | 832 | 
              } else { | 
          832 | 
              } else { | 
        
        
          | 833 | 
           | 
          833 | 
           | 
        
  
    | 
      
            Lines 841-856
          sub login_core {
      
      
        Link Here
      
     | 
  
        
          | 841 | 
           | 
          841 | 
           | 
        
        
          | 842 | 
                  my $auth_status = api_auth( $uid, $pwd, $inst );  | 
          842 | 
                  my $auth_status = api_auth( $uid, $pwd, $inst );  | 
        
        
          | 843 | 
                  if ( !$auth_status or $auth_status !~ /^ok$/i ) { | 
          843 | 
                  if ( !$auth_status or $auth_status !~ /^ok$/i ) { | 
        
          
            
              | 844 | 
                          syslog( "LOG_WARNING", "api_auth failed for SIP terminal '%s' of '%s': %s", $uid, $inst, ( $auth_status || 'unknown' ) );  | 
              844 | 
                          siplog( "LOG_WARNING", "api_auth failed for SIP terminal '%s' of '%s': %s", $uid, $inst, ( $auth_status || 'unknown' ) );  | 
            
        
          | 845 | 
                      $status = 0;  | 
          845 | 
                      $status = 0;  | 
        
        
          | 846 | 
                  } else { | 
          846 | 
                  } else { | 
        
          
            
              | 847 | 
                          syslog( "LOG_INFO", "Successful login/auth for '%s' of '%s'", $server->{account}->{id}, $inst ); | 
              847 | 
                          siplog( "LOG_INFO", "Successful login/auth for '%s' of '%s'", $server->{account}->{id}, $inst ); | 
            
        
          | 848 | 
           | 
          848 | 
           | 
        
        
          | 849 | 
                      #  | 
          849 | 
                      #  | 
        
        
          | 850 | 
                      # initialize connection to ILS  | 
          850 | 
                      # initialize connection to ILS  | 
        
        
          | 851 | 
                      #  | 
          851 | 
                      #  | 
        
        
          | 852 | 
                      my $module = $server->{config}->{institutions}->{$inst}->{implementation}; | 
          852 | 
                      my $module = $server->{config}->{institutions}->{$inst}->{implementation}; | 
        
          
            
              | 853 | 
                          syslog( "LOG_DEBUG", 'login_core: ' . Dumper($module) );  | 
              853 | 
                          siplog( "LOG_DEBUG", 'login_core: ' . Dumper($module) );  | 
            
        
          | 854 | 
           | 
          854 | 
           | 
        
        
          | 855 | 
                      # Suspect this is always ILS but so we don't break any eccentic install (for now)  | 
          855 | 
                      # Suspect this is always ILS but so we don't break any eccentic install (for now)  | 
        
        
          | 856 | 
                      if ( $module eq 'ILS' ) { | 
          856 | 
                      if ( $module eq 'ILS' ) { | 
        
  
    | 
      
            Lines 858-871
          sub login_core {
      
      
        Link Here
      
     | 
  
        
          | 858 | 
                      }  | 
          858 | 
                      }  | 
        
        
          | 859 | 
                      $module->use;  | 
          859 | 
                      $module->use;  | 
        
        
          | 860 | 
                      if ($@) { | 
          860 | 
                      if ($@) { | 
        
          
            
              | 861 | 
                              syslog( "LOG_ERR", "%s: Loading ILS implementation '%s' for institution '%s' failed", $server->{service}, $module, $inst ); | 
              861 | 
                              siplog( "LOG_ERR", "%s: Loading ILS implementation '%s' for institution '%s' failed", $server->{service}, $module, $inst ); | 
            
        
          | 862 | 
                          die("Failed to load ILS implementation '$module' for $inst"); | 
          862 | 
                          die("Failed to load ILS implementation '$module' for $inst"); | 
        
        
          | 863 | 
                      }  | 
          863 | 
                      }  | 
        
        
          | 864 | 
           | 
          864 | 
           | 
        
        
          | 865 | 
                      # like   ILS->new(), I think.  | 
          865 | 
                      # like   ILS->new(), I think.  | 
        
        
          | 866 | 
                      $server->{ils} = $module->new( $server->{institution}, $server->{account} ); | 
          866 | 
                      $server->{ils} = $module->new( $server->{institution}, $server->{account} ); | 
        
        
          | 867 | 
                      if ( !$server->{ils} ) { | 
          867 | 
                      if ( !$server->{ils} ) { | 
        
          
            
              | 868 | 
                              syslog( "LOG_ERR", "%s: ILS connection to '%s' failed", $server->{service}, $inst ); | 
              868 | 
                              siplog( "LOG_ERR", "%s: ILS connection to '%s' failed", $server->{service}, $inst ); | 
            
        
          | 869 | 
                          die("Unable to connect to ILS '$inst'"); | 
          869 | 
                          die("Unable to connect to ILS '$inst'"); | 
        
        
          | 870 | 
                      }  | 
          870 | 
                      }  | 
        
        
          | 871 | 
                  }  | 
          871 | 
                  }  | 
        
  
    | 
      
            Lines 888-894
          sub handle_login {
      
      
        Link Here
      
     | 
  
        
          | 888 | 
              $pwd = $fields->{ (FID_LOGIN_PWD) };    # Terminal PWD, not patron PWD. | 
          888 | 
              $pwd = $fields->{ (FID_LOGIN_PWD) };    # Terminal PWD, not patron PWD. | 
        
        
          | 889 | 
           | 
          889 | 
           | 
        
        
          | 890 | 
              if ( $uid_algorithm || $pwd_algorithm ) { | 
          890 | 
              if ( $uid_algorithm || $pwd_algorithm ) { | 
        
          
            
              | 891 | 
                      syslog( "LOG_ERR", "LOGIN: Unsupported non-zero encryption method(s): uid = $uid_algorithm, pwd = $pwd_algorithm" );  | 
              891 | 
                      siplog( "LOG_ERR", "LOGIN: Unsupported non-zero encryption method(s): uid = $uid_algorithm, pwd = $pwd_algorithm" );  | 
            
        
          | 892 | 
                  $status = 0;  | 
          892 | 
                  $status = 0;  | 
        
        
          | 893 | 
              } else { | 
          893 | 
              } else { | 
        
        
          | 894 | 
                  $status = login_core( $server, $uid, $pwd );  | 
          894 | 
                  $status = login_core( $server, $uid, $pwd );  | 
        
  
    | 
      
            Lines 927-939
          sub summary_info {
      
      
        Link Here
      
     | 
  
        
          | 927 | 
                  return '';    # No detailed information required  | 
          927 | 
                  return '';    # No detailed information required  | 
        
        
          | 928 | 
              }  | 
          928 | 
              }  | 
        
        
          | 929 | 
           | 
          929 | 
           | 
        
          
            
              | 930 | 
                  syslog( "LOG_DEBUG", "Summary_info: index == '%d', field '%s'", $summary_type, $summary_map[$summary_type]->{fid} ); | 
              930 | 
                  siplog( "LOG_DEBUG", "Summary_info: index == '%d', field '%s'", $summary_type, $summary_map[$summary_type]->{fid} ); | 
            
        
          | 931 | 
           | 
          931 | 
           | 
        
        
          | 932 | 
              my $func     = $summary_map[$summary_type]->{func}; | 
          932 | 
              my $func     = $summary_map[$summary_type]->{func}; | 
        
        
          | 933 | 
              my $fid      = $summary_map[$summary_type]->{fid}; | 
          933 | 
              my $fid      = $summary_map[$summary_type]->{fid}; | 
        
        
          | 934 | 
              my $itemlist = &$func( $patron, $start, $end, $server );  | 
          934 | 
              my $itemlist = &$func( $patron, $start, $end, $server );  | 
        
        
          | 935 | 
           | 
          935 | 
           | 
        
          
            
              | 936 | 
                  syslog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map{ $_->{barcode} } @{$itemlist} ) ); | 
              936 | 
                  siplog( "LOG_DEBUG", "summary_info: list = (%s)", join( ", ", map{ $_->{barcode} } @{$itemlist} ) ); | 
            
        
          | 937 | 
              foreach my $i ( @{$itemlist} ) { | 
          937 | 
              foreach my $i ( @{$itemlist} ) { | 
        
        
          | 938 | 
                  $resp .= add_field( $fid, $i->{barcode}, $server ); | 
          938 | 
                  $resp .= add_field( $fid, $i->{barcode}, $server ); | 
        
        
          | 939 | 
              }  | 
          939 | 
              }  | 
        
  
    | 
      
            Lines 1256-1262
          sub handle_item_status_update {
      
      
        Link Here
      
     | 
  
        
          | 1256 | 
              $item_props = $fields->{ (FID_ITEM_PROPS) }; | 
          1256 | 
              $item_props = $fields->{ (FID_ITEM_PROPS) }; | 
        
        
          | 1257 | 
           | 
          1257 | 
           | 
        
        
          | 1258 | 
              if ( !defined($item_id) ) { | 
          1258 | 
              if ( !defined($item_id) ) { | 
        
          
            
              | 1259 | 
                      syslog( "LOG_WARNING", "handle_item_status: received message without Item ID field" );  | 
              1259 | 
                      siplog( "LOG_WARNING", "handle_item_status: received message without Item ID field" );  | 
            
        
          | 1260 | 
              } else { | 
          1260 | 
              } else { | 
        
        
          | 1261 | 
                  $item = $ils->find_item($item_id);  | 
          1261 | 
                  $item = $ils->find_item($item_id);  | 
        
        
          | 1262 | 
              }  | 
          1262 | 
              }  | 
        
  
    | 
      
            Lines 1301-1307
          sub handle_patron_enable {
      
      
        Link Here
      
     | 
  
        
          | 1301 | 
              $patron_id  = $fields->{ (FID_PATRON_ID) }; | 
          1301 | 
              $patron_id  = $fields->{ (FID_PATRON_ID) }; | 
        
        
          | 1302 | 
              $patron_pwd = $fields->{ (FID_PATRON_PWD) }; | 
          1302 | 
              $patron_pwd = $fields->{ (FID_PATRON_PWD) }; | 
        
        
          | 1303 | 
           | 
          1303 | 
           | 
        
          
            
              | 1304 | 
                  syslog( "LOG_DEBUG", "handle_patron_enable: patron_id: '%s', patron_pwd: '%s'", $patron_id, $patron_pwd );  | 
              1304 | 
                  siplog( "LOG_DEBUG", "handle_patron_enable: patron_id: '%s', patron_pwd: '%s'", $patron_id, $patron_pwd );  | 
            
        
          | 1305 | 
           | 
          1305 | 
           | 
        
        
          | 1306 | 
              $patron = $ils->find_patron($patron_id);  | 
          1306 | 
              $patron = $ils->find_patron($patron_id);  | 
        
        
          | 1307 | 
           | 
          1307 | 
           | 
        
  
    | 
      
            Lines 1371-1377
          sub handle_hold {
      
      
        Link Here
      
     | 
  
        
          | 1371 | 
              } elsif ( $hold_mode eq '*' ) { | 
          1371 | 
              } elsif ( $hold_mode eq '*' ) { | 
        
        
          | 1372 | 
                  $status = $ils->alter_hold( $patron_id, $patron_pwd, $item_id, $title_id, $expiry_date, $pickup_locn, $hold_type, $fee_ack );  | 
          1372 | 
                  $status = $ils->alter_hold( $patron_id, $patron_pwd, $item_id, $title_id, $expiry_date, $pickup_locn, $hold_type, $fee_ack );  | 
        
        
          | 1373 | 
              } else { | 
          1373 | 
              } else { | 
        
          
            
              | 1374 | 
                      syslog( "LOG_WARNING", "handle_hold: Unrecognized hold mode '%s' from terminal '%s'", $hold_mode, $server->{account}->{id} ); | 
              1374 | 
                      siplog( "LOG_WARNING", "handle_hold: Unrecognized hold mode '%s' from terminal '%s'", $hold_mode, $server->{account}->{id} ); | 
            
        
          | 1375 | 
                  $status = $ils->Transaction::Hold;    # new?  | 
          1375 | 
                  $status = $ils->Transaction::Hold;    # new?  | 
        
        
          | 1376 | 
                  $status->screen_msg("System error. Please contact library staff."); | 
          1376 | 
                  $status->screen_msg("System error. Please contact library staff."); | 
        
        
          | 1377 | 
              }  | 
          1377 | 
              }  | 
        
  
    | 
      
            Lines 1419-1425
          sub handle_renew {
      
      
        Link Here
      
     | 
  
        
          | 1419 | 
              $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_renew" ); | 
          1419 | 
              $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_renew" ); | 
        
        
          | 1420 | 
           | 
          1420 | 
           | 
        
        
          | 1421 | 
              if ( $no_block eq 'Y' ) { | 
          1421 | 
              if ( $no_block eq 'Y' ) { | 
        
          
            
              | 1422 | 
                      syslog( "LOG_WARNING", "handle_renew: received 'no block' renewal from terminal '%s'", $server->{account}->{id} ); | 
              1422 | 
                      siplog( "LOG_WARNING", "handle_renew: received 'no block' renewal from terminal '%s'", $server->{account}->{id} ); | 
            
        
          | 1423 | 
              }  | 
          1423 | 
              }  | 
        
        
          | 1424 | 
           | 
          1424 | 
           | 
        
        
          | 1425 | 
              $patron_id  = $fields->{ (FID_PATRON_ID) }; | 
          1425 | 
              $patron_id  = $fields->{ (FID_PATRON_ID) }; | 
        
  
    | 
      
            Lines 1586-1592
          sub send_acs_status {
      
      
        Link Here
      
     | 
  
        
          | 1586 | 
              $retries            = sprintf( "%03d", $policy->{retries} ); | 
          1586 | 
              $retries            = sprintf( "%03d", $policy->{retries} ); | 
        
        
          | 1587 | 
           | 
          1587 | 
           | 
        
        
          | 1588 | 
              if ( length($retries) != 3 ) { | 
          1588 | 
              if ( length($retries) != 3 ) { | 
        
          
            
              | 1589 | 
                      syslog( "LOG_ERR", "handle_acs_status: retries field wrong size: '%s'", $retries );  | 
              1589 | 
                      siplog( "LOG_ERR", "handle_acs_status: retries field wrong size: '%s'", $retries );  | 
            
        
          | 1590 | 
                  $retries = '000';  | 
          1590 | 
                  $retries = '000';  | 
        
        
          | 1591 | 
              }  | 
          1591 | 
              }  | 
        
        
          | 1592 | 
           | 
          1592 | 
           | 
        
  
    | 
      
            Lines 1599-1605
          sub send_acs_status {
      
      
        Link Here
      
     | 
  
        
          | 1599 | 
              } elsif ( $protocol_version == 2 ) { | 
          1599 | 
              } elsif ( $protocol_version == 2 ) { | 
        
        
          | 1600 | 
                  $msg .= '2.00';  | 
          1600 | 
                  $msg .= '2.00';  | 
        
        
          | 1601 | 
              } else { | 
          1601 | 
              } else { | 
        
          
            
              | 1602 | 
                      syslog( "LOG_ERR", 'Bad setting for $protocol_version, "%s" in send_acs_status', $protocol_version );  | 
              1602 | 
                      siplog( "LOG_ERR", 'Bad setting for $protocol_version, "%s" in send_acs_status', $protocol_version );  | 
            
        
          | 1603 | 
                  $msg .= '1.00';  | 
          1603 | 
                  $msg .= '1.00';  | 
        
        
          | 1604 | 
              }  | 
          1604 | 
              }  | 
        
        
          | 1605 | 
           | 
          1605 | 
           | 
        
  
    | 
      
            Lines 1619-1625
          sub send_acs_status {
      
      
        Link Here
      
     | 
  
        
          | 1619 | 
                      }  | 
          1619 | 
                      }  | 
        
        
          | 1620 | 
                  }  | 
          1620 | 
                  }  | 
        
        
          | 1621 | 
                  if ( length($supported_msgs) < 16 ) { | 
          1621 | 
                  if ( length($supported_msgs) < 16 ) { | 
        
          
            
              | 1622 | 
                          syslog( "LOG_ERR", 'send_acs_status: supported messages "%s" too short', $supported_msgs );  | 
              1622 | 
                          siplog( "LOG_ERR", 'send_acs_status: supported messages "%s" too short', $supported_msgs );  | 
            
        
          | 1623 | 
                  }  | 
          1623 | 
                  }  | 
        
        
          | 1624 | 
                  $msg .= add_field( FID_SUPPORTED_MSGS, $supported_msgs, $server );  | 
          1624 | 
                  $msg .= add_field( FID_SUPPORTED_MSGS, $supported_msgs, $server );  | 
        
        
          | 1625 | 
              }  | 
          1625 | 
              }  | 
        
  
    | 
      
            Lines 1629-1635
          sub send_acs_status {
      
      
        Link Here
      
     | 
  
        
          | 1629 | 
              if (   defined( $account->{print_width} ) | 
          1629 | 
              if (   defined( $account->{print_width} ) | 
        
        
          | 1630 | 
                  && defined($print_line)  | 
          1630 | 
                  && defined($print_line)  | 
        
        
          | 1631 | 
                  && $account->{print_width} < length($print_line) ) { | 
          1631 | 
                  && $account->{print_width} < length($print_line) ) { | 
        
          
            
              | 1632 | 
                      syslog( "LOG_WARNING", "send_acs_status: print line '%s' too long.  Truncating", $print_line );  | 
              1632 | 
                      siplog( "LOG_WARNING", "send_acs_status: print line '%s' too long.  Truncating", $print_line );  | 
            
        
          | 1633 | 
                  $print_line = substr( $print_line, 0, $account->{print_width} ); | 
          1633 | 
                  $print_line = substr( $print_line, 0, $account->{print_width} ); | 
        
        
          | 1634 | 
              }  | 
          1634 | 
              }  | 
        
        
          | 1635 | 
           | 
          1635 | 
           | 
        
  
    | 
      
            Lines 1649-1655
          sub patron_status_string {
      
      
        Link Here
      
     | 
  
        
          | 1649 | 
              my $patron = shift;  | 
          1649 | 
              my $patron = shift;  | 
        
        
          | 1650 | 
              my $patron_status;  | 
          1650 | 
              my $patron_status;  | 
        
        
          | 1651 | 
           | 
          1651 | 
           | 
        
          
            
              | 1652 | 
                  syslog( "LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok );  | 
              1652 | 
                  siplog( "LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok );  | 
            
        
          | 1653 | 
              $patron_status = sprintf(  | 
          1653 | 
              $patron_status = sprintf(  | 
        
        
          | 1654 | 
                  '%s%s%s%s%s%s%s%s%s%s%s%s%s%s',  | 
          1654 | 
                  '%s%s%s%s%s%s%s%s%s%s%s%s%s%s',  | 
        
        
          | 1655 | 
                  denied( $patron->charge_ok ),  | 
          1655 | 
                  denied( $patron->charge_ok ),  | 
        
            
              | 1656 | 
              -   | 
               | 
               |