From 2a92cd0ba6f179fbdec991a65ae18106a1bb04b4 Mon Sep 17 00:00:00 2001 From: Bob den Os Date: Tue, 10 Feb 2026 11:37:01 +0100 Subject: [PATCH] Keep space for potential client info updates --- lib/protocol/ClientInfo.js | 8 ++++++++ lib/protocol/Connection.js | 1 + test/lib.Connection.js | 10 ++++++++++ 3 files changed, 19 insertions(+) diff --git a/lib/protocol/ClientInfo.js b/lib/protocol/ClientInfo.js index 22630a5..f6769ad 100644 --- a/lib/protocol/ClientInfo.js +++ b/lib/protocol/ClientInfo.js @@ -75,3 +75,11 @@ ClientInfo.prototype.getUpdatedProperties = function getUpdatedProperties() { return res; }; +ClientInfo.prototype.getUpdatedPropertiesSize = function getUpdatedProperties() { + var self = this; + var res = Object.keys(this._updatedProperties).reduce(function (p, c) { + p += c.length + self._properties[c].length + return p; + }, 0); + return res; +}; diff --git a/lib/protocol/Connection.js b/lib/protocol/Connection.js index 7191cb5..8982aeb 100644 --- a/lib/protocol/Connection.js +++ b/lib/protocol/Connection.js @@ -405,6 +405,7 @@ Connection.prototype.getAvailableSize = function getAvailableSize(forLobs = fals if (this._statementContext) { availableSize -= this._statementContext.size; } + availableSize -= this._clientInfo.getUpdatedPropertiesSize() + SEGMENT_HEADER_LENGTH return availableSize; }; diff --git a/test/lib.Connection.js b/test/lib.Connection.js index 94ed6d7..7eeeb56 100644 --- a/test/lib.Connection.js +++ b/test/lib.Connection.js @@ -365,6 +365,16 @@ describe('Lib', function () { var c8 = createConnection({ packetSize: ps, packetSizeLimit: psl }); c8.getAvailableSize(false).should.equal(packetSizeMax - totalHeaderLength); c8.getAvailableSize(true).should.equal(packetSizeMax - totalHeaderLength); + + // client info property set + var c9 = createConnection(); + c9._statementContext = { + size: 32, + }; + c9.getClientInfo().setProperty('LOCALE', 'en_US'); + var clientInfoSize = 11 + c9.getAvailableSize().should.equal(packetSizeDefault - totalHeaderLength - 32 - clientInfoSize - 24); + c9.getAvailableSize(true).should.equal(packetSizeDefault - totalHeaderLength - 32 - clientInfoSize - 24); }); it('should parse a reply', function () {