Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADR 30: Bolt Handshake Manifest v1 #619

Merged
merged 19 commits into from
Feb 14, 2025

Conversation

StephenCathcart
Copy link
Contributor

Implemented the new Bolt Protocol Handshake Manifest v1 negotiation.

The client now sends a handshake proposal with a manifest marker (00 00 01 FF) in addition to the legacy protocol proposals.

When the server selects the manifest negotiation, the client reads a variable-length count of supported protocol versions, the list of offered protocol versions, and a capability bit mask (all encoded as Base128 varints). The client then selects an acceptable protocol version along with capabilities and sent immediately before the HELLO message.

2025-02-06 09:47:07.076   BOLT  C: <MAGIC> 0X6060B017
2025-02-06 09:47:07.076   BOLT  C: <HANDSHAKE> 0X000001FF 0X00070705 0X00020404 0X00000003
2025-02-06 09:47:07.079   BOLT  S: <HANDSHAKE> 0X000001FF [2] 0x000707F2 0x00070705 0X00
2025-02-06 09:47:07.079   BOLT  C: <HANDSHAKE> 0X00000705 0X00
2025-02-06 09:47:07.079   BOLT  C: HELLO {"bolt_agent":{"language":"Go/go1.20.3","platform":"darwin; amd64","product":"neo4j-go/5.27.0"},"user_agent":"Go Driver/5.27.0"}

neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Show resolved Hide resolved
neo4j/internal/bolt/connect_test.go Show resolved Hide resolved
Copy link
Member

@robsdedude robsdedude left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤝 only small comments, no blockers

neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Outdated Show resolved Hide resolved
neo4j/internal/bolt/connect.go Show resolved Hide resolved
neo4j/internal/bolt/connect_test.go Show resolved Hide resolved
neo4j/internal/bolt/connect_test.go Show resolved Hide resolved
@StephenCathcart StephenCathcart merged commit ee9efc8 into neo4j:5.0 Feb 14, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants