dani-garcia / vaultwarden

Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
GNU Affero General Public License v3.0
38.47k stars 1.87k forks source link

Syncing failed on iOS devices #926

Closed austin1howard closed 4 years ago

austin1howard commented 4 years ago

Syncing failing on iOS devices

I'm getting a "Syncing Failed" message when trying to sync the Bitwarden app from my iPad or iPhone. There doesn't seem to be anything substantially wrong in the logs. I'm able to sync the Mac application just fine.

Your environment

Steps to reproduce

I was using version 1.13.0 and syncing to my iPhone successfully. Today, I tried setting up my iPad and started seeing this error. I thought it may be due to the latest version of the iOS app, so I updated bitwarden_rs, but that didn't fix the problem. Now it seems to be broken on my iPhone as well (on a version of the iOS app which previously worked).

Expected behaviour

Should sync

Actual behaviour

"Syncing failed" pops up on iOS.

Relevant logs

The only thing of significance I notice below is the desktop app does a GET /api/sync?excludeDomains=true while the iOS app does a GET /api/sync.

Failure example:

Failing (iOS)

[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "X-Forwarded-Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "X-Real-IP"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 53, 54]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "X-Forwarded-For"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 53, 54]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Connection"=[99, 108, 111, 115, 101]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Device-Type"=[49]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Accept"=[97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "User-Agent"=[66, 105, 116, 119, 97, 114, 100, 101, 110, 95, 77, 111, 98, 105, 108, 101, 47, 50, 46, 51, 46, 49, 32, 40, 105, 79, 83, 32, 49, 51, 46, 50, 46, 50, 59, 32, 77, 111, 100, 101, 108, 32, 105, 80, 97, 100, 41]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Authorization"=[...]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Accept-Language"=[101, 110, 45, 117, 115]
[2020-03-24 22:55:34][hyper::header][TRACE] raw header: "Accept-Encoding"=[103, 122, 105, 112, 44, 32, 100, 101, 102, 108, 97, 116, 101, 44, 32, 98, 114]
[2020-03-24 22:55:34][hyper::http][TRACE] should_keep_alive( Http10, Some(Connection([Close])) )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.set( "Connection", Connection([Close]) )
[2020-03-24 22:55:34][request][INFO] GET /api/sync
[2020-03-24 22:55:34][response][INFO] GET /api/sync?<data..> (sync) => 200 OK
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Content-Type", [97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Server", [82, 111, 99, 107, 101, 116] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Feature-Policy", [97, 99, 99, 101, 108, 101, 114, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 109, 98, 105, 101, 110, 116, 45, 108, 105, 103, 104, 116, 45, 115, 101, 110, 115, 111, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 117, 116, 111, 112, 108, 97, 121, 32, 39, 110, 111, 110, 101, 39, 59, 32, 99, 97, 109, 101, 114, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 101, 110, 99, 114, 121, 112, 116, 101, 100, 45, 109, 101, 100, 105, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 102, 117, 108, 108, 115, 99, 114, 101, 101, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 101, 111, 108, 111, 99, 97, 116, 105, 111, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 121, 114, 111, 115, 99, 111, 112, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 97, 103, 110, 101, 116, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 99, 114, 111, 112, 104, 111, 110, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 100, 105, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 97, 121, 109, 101, 110, 116, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 105, 99, 116, 117, 114, 101, 45, 105, 110, 45, 112, 105, 99, 116, 117, 114, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 115, 121, 110, 99, 45, 120, 104, 114, 32, 39, 115, 101, 108, 102, 39, 32, 104, 116, 116, 112, 115, 58, 47, 47, 104, 97, 118, 101, 105, 98, 101, 101, 110, 112, 119, 110, 101, 100, 46, 99, 111, 109, 32, 104, 116, 116, 112, 115, 58, 47, 47, 116, 119, 111, 102, 97, 99, 116, 111, 114, 97, 117, 116, 104, 46, 111, 114, 103, 59, 32, 117, 115, 98, 32, 39, 110, 111, 110, 101, 39, 59, 32, 118, 114, 32, 39, 110, 111, 110, 101, 39] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Referrer-Policy", [115, 97, 109, 101, 45, 111, 114, 105, 103, 105, 110] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "X-Frame-Options", [83, 65, 77, 69, 79, 82, 73, 71, 73, 78] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "X-Content-Type-Options", [110, 111, 115, 110, 105, 102, 102] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "X-XSS-Protection", [49, 59, 32, 109, 111, 100, 101, 61, 98, 108, 111, 99, 107] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Content-Security-Policy", [102, 114, 97, 109, 101, 45, 97, 110, 99, 101, 115, 116, 111, 114, 115, 32, 39, 115, 101, 108, 102, 39, 32, 99, 104, 114, 111, 109, 101, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 110, 110, 103, 99, 101, 99, 107, 98, 97, 112, 101, 98, 102, 105, 109, 110, 108, 110, 105, 105, 105, 97, 104, 107, 97, 110, 100, 99, 108, 98, 108, 98, 32, 109, 111, 122, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 42, 32, 59] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Cache-Control", [110, 111, 45, 99, 97, 99, 104, 101, 44, 32, 110, 111, 45, 115, 116, 111, 114, 101, 44, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.append_raw( "Access-Control-Allow-Origin", [] )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.set( "Content-Length", ContentLength(1641187) )
[2020-03-24 22:55:34][hyper::header][TRACE] Headers.set( "Date", Date(HttpDate(Tm { tm_sec: 34, tm_min: 55, tm_hour: 22, tm_mday: 24, tm_mon: 2, tm_year: 120, tm_wday: 2, tm_yday: 83, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 809671158 })) )

Success example:

Succeeding (MacOS app)

[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "X-Forwarded-Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "X-Real-IP"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 49, 51]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "X-Forwarded-For"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 49, 51]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Connection"=[99, 108, 111, 115, 101]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "accept"=[97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Pragma"=[110, 111, 45, 99, 97, 99, 104, 101]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "device-type"=[55]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "authorization"=[...]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Cache-Control"=[110, 111, 45, 115, 116, 111, 114, 101]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "User-Agent"=[77, 111, 122, 105, 108, 108, 97, 47, 53, 46, 48, 32, 40, 87, 105, 110, 100, 111, 119, 115, 32, 78, 84, 32, 49, 48, 46, 48, 59, 32, 87, 105, 110, 54, 52, 59, 32, 120, 54, 52, 59, 32, 114, 118, 58, 55, 52, 46, 48, 41, 32, 71, 101, 99, 107, 111, 47, 50, 48, 49, 48, 48, 49, 48, 49, 32, 70, 105, 114, 101, 102, 111, 120, 47, 55, 52, 46, 48]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Sec-Fetch-Mode"=[99, 111, 114, 115]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Sec-Fetch-Site"=[99, 114, 111, 115, 115, 45, 115, 105, 116, 101]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Accept-Encoding"=[103, 122, 105, 112, 44, 32, 100, 101, 102, 108, 97, 116, 101, 44, 32, 98, 114]
[2020-03-24 22:58:49][hyper::header][TRACE] raw header: "Accept-Language"=[101, 110, 45, 85, 83]
[2020-03-24 22:58:49][hyper::http][TRACE] should_keep_alive( Http10, Some(Connection([Close])) )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.set( "Connection", Connection([Close]) )
[2020-03-24 22:58:49][request][INFO] GET /api/sync?excludeDomains=true
[2020-03-24 22:58:49][response][INFO] GET /api/sync?<data..> (sync) => 200 OK
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Content-Type", [97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Server", [82, 111, 99, 107, 101, 116] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Feature-Policy", [97, 99, 99, 101, 108, 101, 114, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 109, 98, 105, 101, 110, 116, 45, 108, 105, 103, 104, 116, 45, 115, 101, 110, 115, 111, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 117, 116, 111, 112, 108, 97, 121, 32, 39, 110, 111, 110, 101, 39, 59, 32, 99, 97, 109, 101, 114, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 101, 110, 99, 114, 121, 112, 116, 101, 100, 45, 109, 101, 100, 105, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 102, 117, 108, 108, 115, 99, 114, 101, 101, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 101, 111, 108, 111, 99, 97, 116, 105, 111, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 121, 114, 111, 115, 99, 111, 112, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 97, 103, 110, 101, 116, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 99, 114, 111, 112, 104, 111, 110, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 100, 105, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 97, 121, 109, 101, 110, 116, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 105, 99, 116, 117, 114, 101, 45, 105, 110, 45, 112, 105, 99, 116, 117, 114, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 115, 121, 110, 99, 45, 120, 104, 114, 32, 39, 115, 101, 108, 102, 39, 32, 104, 116, 116, 112, 115, 58, 47, 47, 104, 97, 118, 101, 105, 98, 101, 101, 110, 112, 119, 110, 101, 100, 46, 99, 111, 109, 32, 104, 116, 116, 112, 115, 58, 47, 47, 116, 119, 111, 102, 97, 99, 116, 111, 114, 97, 117, 116, 104, 46, 111, 114, 103, 59, 32, 117, 115, 98, 32, 39, 110, 111, 110, 101, 39, 59, 32, 118, 114, 32, 39, 110, 111, 110, 101, 39] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Referrer-Policy", [115, 97, 109, 101, 45, 111, 114, 105, 103, 105, 110] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "X-Frame-Options", [83, 65, 77, 69, 79, 82, 73, 71, 73, 78] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "X-Content-Type-Options", [110, 111, 115, 110, 105, 102, 102] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "X-XSS-Protection", [49, 59, 32, 109, 111, 100, 101, 61, 98, 108, 111, 99, 107] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Content-Security-Policy", [102, 114, 97, 109, 101, 45, 97, 110, 99, 101, 115, 116, 111, 114, 115, 32, 39, 115, 101, 108, 102, 39, 32, 99, 104, 114, 111, 109, 101, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 110, 110, 103, 99, 101, 99, 107, 98, 97, 112, 101, 98, 102, 105, 109, 110, 108, 110, 105, 105, 105, 97, 104, 107, 97, 110, 100, 99, 108, 98, 108, 98, 32, 109, 111, 122, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 42, 32, 59] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Cache-Control", [110, 111, 45, 99, 97, 99, 104, 101, 44, 32, 110, 111, 45, 115, 116, 111, 114, 101, 44, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.append_raw( "Access-Control-Allow-Origin", [] )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.set( "Content-Length", ContentLength(1632353) )
[2020-03-24 22:58:49][hyper::header][TRACE] Headers.set( "Date", Date(HttpDate(Tm { tm_sec: 49, tm_min: 58, tm_hour: 22, tm_mday: 24, tm_mon: 2, tm_year: 120, tm_wday: 2, tm_yday: 83, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 223694372 })) )
^C
austin@cobalt : storage/bitwarden_storage %
austin1howard commented 4 years ago

I was able to test on my wife's iPhone which succeeded. I can't tell a difference in the logs for her iPhone vs mine:

[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "X-Forwarded-Host"=[112, 97, 115, 115, 46, 110, 111, 112, 101, 101, 107, 105, 110, 103, 46, 117, 115]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "X-Real-IP"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 51, 49]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "X-Forwarded-For"=[49, 57, 50, 46, 49, 54, 56, 46, 49, 46, 49, 51, 49]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Connection"=[99, 108, 111, 115, 101]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Device-Type"=[49]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Accept"=[97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "User-Agent"=[66, 105, 116, 119, 97, 114, 100, 101, 110, 95, 77, 111, 98, 105, 108, 101, 47, 50, 46, 51, 46, 49, 32, 40, 105, 79, 83, 32, 49, 51, 46, 51, 46, 49, 59, 32, 77, 111, 100, 101, 108, 32, 105, 80, 104, 111, 110, 101, 41]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Authorization"=[...]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Accept-Language"=[101, 110, 45, 117, 115]
[2020-03-24 23:37:07][hyper::header][TRACE] raw header: "Accept-Encoding"=[103, 122, 105, 112, 44, 32, 100, 101, 102, 108, 97, 116, 101, 44, 32, 98, 114]
[2020-03-24 23:37:07][hyper::http][TRACE] should_keep_alive( Http10, Some(Connection([Close])) )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.set( "Connection", Connection([Close]) )
[2020-03-24 23:37:07][request][INFO] GET /api/sync
[2020-03-24 23:37:07][response][INFO] GET /api/sync?<data..> (sync) => 200 OK
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Content-Type", [97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Server", [82, 111, 99, 107, 101, 116] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Feature-Policy", [97, 99, 99, 101, 108, 101, 114, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 109, 98, 105, 101, 110, 116, 45, 108, 105, 103, 104, 116, 45, 115, 101, 110, 115, 111, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 117, 116, 111, 112, 108, 97, 121, 32, 39, 110, 111, 110, 101, 39, 59, 32, 99, 97, 109, 101, 114, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 101, 110, 99, 114, 121, 112, 116, 101, 100, 45, 109, 101, 100, 105, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 102, 117, 108, 108, 115, 99, 114, 101, 101, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 101, 111, 108, 111, 99, 97, 116, 105, 111, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 121, 114, 111, 115, 99, 111, 112, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 97, 103, 110, 101, 116, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 99, 114, 111, 112, 104, 111, 110, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 100, 105, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 97, 121, 109, 101, 110, 116, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 105, 99, 116, 117, 114, 101, 45, 105, 110, 45, 112, 105, 99, 116, 117, 114, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 115, 121, 110, 99, 45, 120, 104, 114, 32, 39, 115, 101, 108, 102, 39, 32, 104, 116, 116, 112, 115, 58, 47, 47, 104, 97, 118, 101, 105, 98, 101, 101, 110, 112, 119, 110, 101, 100, 46, 99, 111, 109, 32, 104, 116, 116, 112, 115, 58, 47, 47, 116, 119, 111, 102, 97, 99, 116, 111, 114, 97, 117, 116, 104, 46, 111, 114, 103, 59, 32, 117, 115, 98, 32, 39, 110, 111, 110, 101, 39, 59, 32, 118, 114, 32, 39, 110, 111, 110, 101, 39] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Referrer-Policy", [115, 97, 109, 101, 45, 111, 114, 105, 103, 105, 110] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "X-Frame-Options", [83, 65, 77, 69, 79, 82, 73, 71, 73, 78] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "X-Content-Type-Options", [110, 111, 115, 110, 105, 102, 102] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "X-XSS-Protection", [49, 59, 32, 109, 111, 100, 101, 61, 98, 108, 111, 99, 107] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Content-Security-Policy", [102, 114, 97, 109, 101, 45, 97, 110, 99, 101, 115, 116, 111, 114, 115, 32, 39, 115, 101, 108, 102, 39, 32, 99, 104, 114, 111, 109, 101, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 110, 110, 103, 99, 101, 99, 107, 98, 97, 112, 101, 98, 102, 105, 109, 110, 108, 110, 105, 105, 105, 97, 104, 107, 97, 110, 100, 99, 108, 98, 108, 98, 32, 109, 111, 122, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 42, 32, 59] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Cache-Control", [110, 111, 45, 99, 97, 99, 104, 101, 44, 32, 110, 111, 45, 115, 116, 111, 114, 101, 44, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.append_raw( "Access-Control-Allow-Origin", [] )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.set( "Content-Length", ContentLength(214796) )
[2020-03-24 23:37:07][hyper::header][TRACE] Headers.set( "Date", Date(HttpDate(Tm { tm_sec: 7, tm_min: 37, tm_hour: 23, tm_mday: 24, tm_mon: 2, tm_year: 120, tm_wday: 2, tm_yday: 83, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 553804808 })) )
deeztek commented 4 years ago

Try this.

Exported my vault to .json. Then I did a search for the following:

"username": null, "password": null

Then in the web browser, I located the particular entry and deleted it.

Not sure which entry it was, but after deleting 27 entries, the android app started syncing again.

austin1howard commented 4 years ago

Yeah I was able to do that in the sqlite db directly. Definitely a bug but at least that solves the problem for now!

jacksondaw commented 4 years ago

I am not certain if anything can be done to mitigate this issue on the server side, but it seems to be a pretty common issue for folks.

It has been mentioned in the client side app. https://github.com/bitwarden/mobile/issues/782

I wonder if a setting to not sync null username and passwords would be a good solution?

jjlin commented 4 years ago

@jacksondaw This particular issue is already fixed; see https://github.com/dani-garcia/bitwarden_rs/issues/921#issuecomment-612368933.

921 is likely what the bitwarden_rs users were reporting in bitwarden/mobile#782 (which shouldn't have been reported to upstream in the first place), but there are perhaps other distinct issues with iOS syncing that are being conflated with #921.