LP#1628995 Fix output message length calculation user/jeff/lp1628995_fix_output_message_length_calculation
authorJeff Godin <jgodin@tadl.org>
Mon, 11 Jul 2016 19:00:51 +0000 (15:00 -0400)
committerJeff Godin <jgodin@tadl.org>
Thu, 29 Sep 2016 16:57:11 +0000 (12:57 -0400)
commita2400e60e8aab5ae15155f879ddc4dafbcaa5191
treea5fd721a6eddcc29d0fc819453a0ff3a2ba5034a
parentbb0bdfed2ed0ebb106710fa6ae36bacd4fabb4d7
LP#1628995 Fix output message length calculation

In cases where an output message has a different number of logical
characters than bytes, SIPServer can incorrectly calculate the
length of the message, resulting in an incomplete message being
sent. Since the message lacks the SIP2 Message Terminator character
(CR, 0x0d), client behavior is unpredictable. Some clients will
hang.

A "use bytes;" pragma forces the length() call to disable character
semantics, so that the correct number of bytes is passed to
POSIX::write().

Future changes may result in output messages never reaching this
point in a state where Perl will apply character semantics, but for
now this handles the problem without hanging clients.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Sip.pm