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

(-)a/C4/SIP/Sip.pm (-2 / +35 lines)
Lines 9-14 use warnings; Link Here
9
use English;
9
use English;
10
use Exporter;
10
use Exporter;
11
11
12
use Encode;
13
use Unicode::Normalize;
14
12
use Sys::Syslog qw(syslog);
15
use Sys::Syslog qw(syslog);
13
use POSIX qw(strftime);
16
use POSIX qw(strftime);
14
use Socket qw(:crlf);
17
use Socket qw(:crlf);
Lines 142-147 sub boolspace { Link Here
142
    return $bool ? 'Y' : ' ';
145
    return $bool ? 'Y' : ' ';
143
}
146
}
144
147
148
sub clean_text {
149
    my $text = shift || '';
150
151
    # hardcoded to ASCII since Koha configs don't take encoding as institution params
152
    my $target_encoding = 'ascii';
153
154
    # Convert our incoming UTF8 data into Perl's internal string format
155
156
    # Also convert to Normalization Form D, as the ASCII, iso-8859-1,
157
    # and latin-1 encodings (at least) require this to substitute
158
    # characters rather than simply returning a string truncated
159
    # after the first non-ASCII character
160
    $text = NFD(decode_utf8($text));
161
162
    if ($target_encoding eq 'ascii') {
163
164
        # Try to maintain a reasonable version of the content by
165
        # stripping diacritics from the text, given that the SIP client
166
        # wants just plain ASCII. This is the base requirement according
167
        # to the SIP2 specification.
168
169
        $text =~ s/\pM+//og;
170
    }
171
172
    # Characters that cannot be represented in the target encoding will
173
    # generally be replaced with a question mark (?) character.
174
    $text = encode($target_encoding, $text);
175
176
    return $text;
177
}
178
145
179
146
# read_SIP_packet($file)
180
# read_SIP_packet($file)
147
#
181
#
Lines 218-224 sub write_msg { Link Here
218
    my ($self, $msg, $file) = @_;
252
    my ($self, $msg, $file) = @_;
219
    my $cksum;
253
    my $cksum;
220
254
221
    # $msg = encode_utf8($msg);
255
    $msg = clean_text($msg);
222
    if ($error_detection) {
256
    if ($error_detection) {
223
        if (defined($self->{seqno})) {
257
        if (defined($self->{seqno})) {
224
            $msg .= 'AY' . $self->{seqno};
258
            $msg .= 'AY' . $self->{seqno};
225
- 

Return to bug 4828