Subject: | Net::LDAP sets wrong length in _sendmesg |
Net::LDAP sets length of string to 15000 (even if string is shorter) for syswrite at function _sendmesg.
By default it should work,
However, it may cause error in case that the function WRITE was redefined (e.g. Authen-SASL RT#85294) and did not handle this case properly.
Would it be possible to change it this way?
--- Net/LDAP.pm.orig 2014-06-03 08:52:01.194328356 -0400
+++ Net/LDAP.pm 2014-06-03 08:53:04.561148330 -0400
@@ -801,7 +801,8 @@ sub _sendmesg {
my $to_send = \( $mesg->pdu );
my $offset = 0;
while($offset < length($$to_send)) {
- my $n = syswrite($socket, substr($$to_send, $offset, 15000), 15000)
+ my $s = substr($$to_send, $offset, 15000);
+ my $n = syswrite($socket, $s, length($s))
or return _error($ldap, $mesg, LDAP_LOCAL_ERROR,"$!");
$offset += $n;
}
Thank you,
Jitka