View | Details | Raw Unified | Return to bug 37582
Collapse All | Expand All

(-)a/C4/SIP/Sip.pm (-10 / +9 lines)
Lines 187-197 sub boolspace { Link Here
187
#
187
#
188
188
189
sub write_msg {
189
sub write_msg {
190
    my ($self, $msg, $file, $terminator, $encoding) = @_;
190
    my ($self, $msg, $server) = @_;
191
    my $terminator = $server->{account}->{terminator};
192
    my $encoding = $server->{account}->{encoding};
191
193
192
    $terminator ||= q{};
194
    $terminator ||= q{};
193
    $terminator = ( $terminator eq 'CR' ) ? $CR : $CRLF;
195
    $terminator = ( $terminator eq 'CR' ) ? $CR : $CRLF;
194
196
197
    my $separator = $server->{account}->{convert_control_characters};
198
    $msg =~ s/[^[:print:]]/$separator/g; if defined $separator;
199
195
    $msg = encode($encoding, $msg) if ( $encoding );
200
    $msg = encode($encoding, $msg) if ( $encoding );
196
201
197
    my $cksum;
202
    my $cksum;
Lines 206-220 sub write_msg { Link Here
206
        $msg .= sprintf('%04.4X', $cksum);
211
        $msg .= sprintf('%04.4X', $cksum);
207
    }
212
    }
208
213
209
214
    STDOUT->autoflush(1);
210
    if ($file) {
215
    print $msg, $terminator;
211
        $file->autoflush(1);
216
    siplog("LOG_INFO", "OUTPUT MSG: '$msg'");
212
        print $file $msg, $terminator;
213
    } else {
214
        STDOUT->autoflush(1);
215
        print $msg, $terminator;
216
        siplog("LOG_INFO", "OUTPUT MSG: '$msg'");
217
    }
218
217
219
    $last_response = $msg;
218
    $last_response = $msg;
220
}
219
}
(-)a/C4/SIP/Sip/MsgType.pm (-17 / +17 lines)
Lines 505-511 sub handle_patron_status { Link Here
505
    $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_patron_status" );
505
    $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_patron_status" );
506
    $patron = $ils->find_patron( $fields->{ (FID_PATRON_ID) } );
506
    $patron = $ils->find_patron( $fields->{ (FID_PATRON_ID) } );
507
    $resp = build_patron_status( $patron, $lang, $fields, $server );
507
    $resp = build_patron_status( $patron, $lang, $fields, $server );
508
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
508
    $self->write_msg( $resp, $server );
509
    return (PATRON_STATUS_REQ);
509
    return (PATRON_STATUS_REQ);
510
}
510
}
511
511
Lines 645-651 sub handle_checkout { Link Here
645
        }
645
        }
646
    }
646
    }
647
647
648
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
648
    $self->write_msg( $resp, $server );
649
    return (CHECKOUT);
649
    return (CHECKOUT);
650
}
650
}
651
651
Lines 744-750 sub handle_checkin { Link Here
744
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
744
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
745
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
745
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
746
746
747
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
747
    $self->write_msg( $resp, $server );
748
748
749
    return (CHECKIN);
749
    return (CHECKIN);
750
}
750
}
Lines 791-797 sub handle_block_patron { Link Here
791
    }
791
    }
792
792
793
    $resp = build_patron_status( $patron, $patron->language, $fields, $server );
793
    $resp = build_patron_status( $patron, $patron->language, $fields, $server );
794
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
794
    $self->write_msg( $resp, $server );
795
    return (BLOCK_PATRON);
795
    return (BLOCK_PATRON);
796
}
796
}
797
797
Lines 832-838 sub handle_request_acs_resend { Link Here
832
832
833
        # We haven't sent anything yet, so respond with a
833
        # We haven't sent anything yet, so respond with a
834
        # REQUEST_SC_RESEND msg (p. 16)
834
        # REQUEST_SC_RESEND msg (p. 16)
835
        $self->write_msg( REQUEST_SC_RESEND, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
835
        $self->write_msg( REQUEST_SC_RESEND, $server );
836
    } elsif ( ( length($last_response) < 9 )
836
    } elsif ( ( length($last_response) < 9 )
837
        || substr( $last_response, -9, 2 ) ne 'AY' ) {
837
        || substr( $last_response, -9, 2 ) ne 'AY' ) {
838
838
Lines 846-852 sub handle_request_acs_resend { Link Here
846
        # Cut out the sequence number and checksum, since the old
846
        # Cut out the sequence number and checksum, since the old
847
        # checksum is wrong for the resent message.
847
        # checksum is wrong for the resent message.
848
        my $rebuilt = substr( $last_response, 0, -9 );
848
        my $rebuilt = substr( $last_response, 0, -9 );
849
        $self->write_msg( $rebuilt, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
849
        $self->write_msg( $rebuilt, $server );
850
    }
850
    }
851
851
852
    return REQUEST_ACS_RESEND;
852
    return REQUEST_ACS_RESEND;
Lines 928-934 sub handle_login { Link Here
928
        $status = login_core( $server, $uid, $pwd );
928
        $status = login_core( $server, $uid, $pwd );
929
    }
929
    }
930
930
931
    $self->write_msg( LOGIN_RESP . $status, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
931
    $self->write_msg( LOGIN_RESP . $status, $server );
932
    return $status ? LOGIN : '';
932
    return $status ? LOGIN : '';
933
}
933
}
934
934
Lines 1097-1103 sub handle_patron_info { Link Here
1097
        $resp .= maybe_add( FID_SCREEN_MSG, INVALID_CARD, $server );
1097
        $resp .= maybe_add( FID_SCREEN_MSG, INVALID_CARD, $server );
1098
    }
1098
    }
1099
1099
1100
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1100
    $self->write_msg( $resp, $server );
1101
    return (PATRON_INFO);
1101
    return (PATRON_INFO);
1102
}
1102
}
1103
1103
Lines 1124-1130 sub handle_end_patron_session { Link Here
1124
    $resp .= maybe_add( FID_SCREEN_MSG, $screen_msg, $server );
1124
    $resp .= maybe_add( FID_SCREEN_MSG, $screen_msg, $server );
1125
    $resp .= maybe_add( FID_PRINT_LINE, $print_line, $server );
1125
    $resp .= maybe_add( FID_PRINT_LINE, $print_line, $server );
1126
1126
1127
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1127
    $self->write_msg( $resp, $server );
1128
1128
1129
    return (END_PATRON_SESSION);
1129
    return (END_PATRON_SESSION);
1130
}
1130
}
Lines 1206-1212 sub handle_fee_paid { Link Here
1206
    $resp .= maybe_add( FID_SCREEN_MSG,     $status->screen_msg, $server );
1206
    $resp .= maybe_add( FID_SCREEN_MSG,     $status->screen_msg, $server );
1207
    $resp .= maybe_add( FID_PRINT_LINE,     $status->print_line, $server );
1207
    $resp .= maybe_add( FID_PRINT_LINE,     $status->print_line, $server );
1208
1208
1209
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1209
    $self->write_msg( $resp, $server );
1210
1210
1211
    return (FEE_PAID);
1211
    return (FEE_PAID);
1212
}
1212
}
Lines 1299-1305 sub handle_item_information { Link Here
1299
        $resp .= $item->build_custom_field_string( $server );
1299
        $resp .= $item->build_custom_field_string( $server );
1300
    }
1300
    }
1301
1301
1302
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1302
    $self->write_msg( $resp, $server );
1303
1303
1304
    return (ITEM_INFORMATION);
1304
    return (ITEM_INFORMATION);
1305
}
1305
}
Lines 1349-1355 sub handle_item_status_update { Link Here
1349
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1349
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1350
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1350
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1351
1351
1352
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1352
    $self->write_msg( $resp, $server );
1353
1353
1354
    return (ITEM_STATUS_UPDATE);
1354
    return (ITEM_STATUS_UPDATE);
1355
}
1355
}
Lines 1403-1409 sub handle_patron_enable { Link Here
1403
1403
1404
    $resp .= add_field( FID_INST_ID, $ils->institution, $server );
1404
    $resp .= add_field( FID_INST_ID, $ils->institution, $server );
1405
1405
1406
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1406
    $self->write_msg( $resp, $server );
1407
1407
1408
    return (PATRON_ENABLE);
1408
    return (PATRON_ENABLE);
1409
}
1409
}
Lines 1468-1474 sub handle_hold { Link Here
1468
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1468
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1469
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1469
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1470
1470
1471
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1471
    $self->write_msg( $resp, $server );
1472
1472
1473
    return (HOLD);
1473
    return (HOLD);
1474
}
1474
}
Lines 1555-1561 sub handle_renew { Link Here
1555
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1555
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1556
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1556
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1557
1557
1558
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1558
    $self->write_msg( $resp, $server );
1559
1559
1560
    return (RENEW);
1560
    return (RENEW);
1561
}
1561
}
Lines 1608-1614 sub handle_renew_all { Link Here
1608
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1608
    $resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
1609
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1609
    $resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
1610
1610
1611
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1611
    $self->write_msg( $resp, $server );
1612
1612
1613
    return (RENEW_ALL);
1613
    return (RENEW_ALL);
1614
}
1614
}
Lines 1714-1720 sub send_acs_status { Link Here
1714
1714
1715
    # Do we want to tell the terminal its location?
1715
    # Do we want to tell the terminal its location?
1716
1716
1717
    $self->write_msg( $msg, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
1717
    $self->write_msg( $msg, $server );
1718
    return 1;
1718
    return 1;
1719
}
1719
}
1720
1720
(-)a/etc/SIPconfig.xml (-1 / +2 lines)
Lines 59-64 Link Here
59
      <login id="lpl-sc" password="1234" institution="LPL" allow_fields="AO,AA,AE"/>
59
      <login id="lpl-sc" password="1234" institution="LPL" allow_fields="AO,AA,AE"/>
60
      <!-- allow_fields hides all fields not in the list, it is the inverse of hide_fields ( hide_fields takes precedence ) -->
60
      <!-- allow_fields hides all fields not in the list, it is the inverse of hide_fields ( hide_fields takes precedence ) -->
61
      <login id="lpl-sc-beacock" password="xyzzy"
61
      <login id="lpl-sc-beacock" password="xyzzy"
62
             convert_control_characters=" "
62
             delimiter="|" error-detect="enabled" institution="LPL"
63
             delimiter="|" error-detect="enabled" institution="LPL"
63
             send_patron_home_library_in_af="1"
64
             send_patron_home_library_in_af="1"
64
             cv_send_00_on_success="1"
65
             cv_send_00_on_success="1"
Lines 84-89 Link Here
84
             lost_status_for_missing="4"
85
             lost_status_for_missing="4"
85
             blocked_item_types="VM|MU"
86
             blocked_item_types="VM|MU"
86
             seen_on_item_information="mark_found"> <!-- could be "keep_lost", empty to disable -->
87
             seen_on_item_information="mark_found"> <!-- could be "keep_lost", empty to disable -->
88
             <!-- convert_control_characters: Convert control and non-space separator characters into the givens string -->
87
             <!-- show_checkin_message: If enabled, successful checking responses will contain an AF screen message -->
89
             <!-- show_checkin_message: If enabled, successful checking responses will contain an AF screen message -->
88
             <!-- lost_block_checkout sets flag if patron has more than the given current checkouts that are lost ( itemlost > 0 by default ) -->
90
             <!-- lost_block_checkout sets flag if patron has more than the given current checkouts that are lost ( itemlost > 0 by default ) -->
89
             <!-- lost_block_checkout_value determines the minimum lost item value to count ( that is, the value in items.itemlost ) -->
91
             <!-- lost_block_checkout_value determines the minimum lost item value to count ( that is, the value in items.itemlost ) -->
90
- 

Return to bug 37582