[CDRIVER-4193] Require hello command for connection handshake to use OP_MSG, disallowing OP_QUERY Created: 19/Oct/21 Updated: 28/Oct/23 Resolved: 03/May/23 |
|
| Status: | Closed |
| Project: | C Driver |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 1.24.0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | PM Bot | Assignee: | Ezra Chung |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | size-medium | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Quarter: | FY22Q4 | ||||||||||||||||||||||||||||
| Upstream Changes Summary: | DRIVERS-1916:
Drivers must ensure that their connection handshake uses both OP_MSG and "hello" if a versioned API is specified. |
||||||||||||||||||||||||||||
| Description |
|
This ticket was split from DRIVERS-1916, please see that ticket for a detailed description. |
| Comments |
| Comment by Githook User [ 23/May/23 ] |
|
Author: {'name': 'Kevin Albertson', 'email': 'kevin.albertson@mongodb.com', 'username': 'kevinAlbs'}Message: CDRIVER-4645 add `mock-server-test` variant (#1277)
Seems redundant with `asan-cse-sasl-cyrus-openssl-ubuntu1804-clang-compile`
Seems redundant with `cse-sasl-cyrus-darwinssl-macos-1100-clang-compile`.
Seems redundant with `cse-sasl-cyrus-openssl-*` tasks.
Seems redundant with `sasl-cyrus-winssl-*` tasks.
Seems redundant with `cse-sasl-cyrus-winssl-*` tasks.
Replaced by the new `mock-server-test` task.
|
| Comment by Githook User [ 03/May/23 ] |
|
Author: {'name': 'Ezra Chung', 'email': '88335979+eramongodb@users.noreply.github.com', 'username': 'eramongodb'}Message:
|
| Comment by Jesse Williamson (Inactive) [ 27/Jan/22 ] |
|
As I read it, 3992 stipulates that using OP_MSG for hello handshakes is only the case when communicating with a >= 5.0 server or when the user has selected a specific server API. So, if neither of those conditions is true, OP_QUERY can still be used, and is used for the initial legacy-hello. For subsequent "hello" exchanges, I believe that the agreed-upon protocol is currently used (either OP_MSG or OP_QUERY), but I believe that this also means that OP_QUERY will always use "legacy" hello. |
| Comment by Jesse Williamson (Inactive) [ 20/Jan/22 ] |
|
kevin.albertson it is very similar, but I don't think it's an exact duplicate because it adds this behavior: "hello and legacy hello commands issued after the initial connection handshake MUST NOT contain handshake arguments. Any subsequent hello or legacy hello calls, such as the ones for topology monitoring purposes, MUST NOT include this argument." Which is similar (and I think their intent is to be clarifying) but not exactly the same as 3992's: "If drivers interact with 5.0 or higher version server, they should not send deprecated wire ops or getLastError command and should use OP_MSG command and acknowledged writes." 3992 does not say to avoid all handshake arguments, only deprecated ones. |