Skip to content

Commit c6b842c

Browse files
committed
ensure the highest available version is selected
1 parent 2cbd0cb commit c6b842c

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

packages/bolt-connection/src/bolt/handshake.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,17 @@ function parseNegotiatedResponse (buffer, log) {
7272
return Number(h[3] + '.' + h[2])
7373
}
7474

75-
function newNegotiation (channel, buffer, log) {
75+
function handshakeNegotiationV2 (channel, buffer, log) {
7676
const numVersions = buffer.readVarInt()
7777
let versions = []
7878
for (let i = 0; i < numVersions; i++) {
79-
const h = [
79+
const versionRange = [
8080
buffer.readUInt8(),
8181
buffer.readUInt8(),
8282
buffer.readUInt8(),
8383
buffer.readUInt8()
8484
]
85-
versions = versions.concat(getVersions(h))
85+
versions = versions.concat(getVersions(versionRange))
8686
}
8787
const capabilityBitMask = buffer.readVarInt()
8888
const capabilites = selectCapabilites(capabilityBitMask)
@@ -91,6 +91,7 @@ function newNegotiation (channel, buffer, log) {
9191
// select preferrable protocol and respond
9292
let major
9393
let minor
94+
versions.sort((a, b) => Number(a.major + '.' + a.minor) - Number(b.major + '.' + b.minor))
9495
for (let i = 0; i < versions.length; i++) {
9596
const version = versions[i]
9697
if (AVAILABLE_BOLT_PROTOCOLS.includes(Number(version.major + '.' + version.minor))) {
@@ -156,7 +157,7 @@ function newHandshakeBuffer () {
156157
export default function handshake (channel, log) {
157158
return initialHandshake(channel, log).then((result) => {
158159
if (result.protocolVersion === 255.1) {
159-
return newNegotiation(channel, result.buffer, log)
160+
return handshakeNegotiationV2(channel, result.buffer, log)
160161
} else {
161162
return result
162163
}

packages/neo4j-driver-deno/lib/bolt-connection/bolt/handshake.js

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)