MoveFile (Rename in UI) S3 protocol on Google Cloud fails with the XmlParseFailure error
Hi!
I am trying to rename files from .NET assembly using
1. New connection - S3 - storage.googleapis.com
2. Key + secret
3. Login
4. Right click on a file - Rename.....
5. An error "XmlParseFailure"
Note, that everything works on AWS S3 and DO, but on Google it throws an error. Here is some relevant parts of the log. If you manage to fix this, I can test it quickly ;)
I am trying to rename files from .NET assembly using
MoveFile
function. But for simplicity of a test the same error happens in WinSCP UI. Here are the steps:
1. New connection - S3 - storage.googleapis.com
2. Key + secret
3. Login
4. Right click on a file - Rename.....
5. An error "XmlParseFailure"
Note, that everything works on AWS S3 and DO, but on Google it throws an error. Here is some relevant parts of the log. If you manage to fix this, I can test it quickly ;)
. 2021-10-29 12:57:27.548 --------------------------------------------------------------------------
. 2021-10-29 12:57:27.548 WinSCP Version 5.19.4 (Build 11829 2021-10-24) (OS 10.0.19043 - Windows 10 Enterprise)
...
. 2021-10-29 12:57:27.548 Log level: Debug 2
...
. 2021-10-29 12:57:27.562 Command-line: "XXXXXXXXX\WinSCP-5.19.4.exe"
...
. 2021-10-29 12:57:27.562 Time zone: Current: GMT+3, Standard: GMT+2 (FLE Standard Time), DST: GMT+3 (FLE Daylight Time), DST Start: 3/28/2021, DST End: 10/31/2021
. 2021-10-29 12:57:27.562 Login time: Friday, October 29, 2021 12:57:27 PM
. 2021-10-29 12:57:27.562 --------------------------------------------------------------------------
. 2021-10-29 12:57:27.562 Session name: GOOG1EIXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@storage.googleapis.com (Site)
...
. 2021-10-29 12:57:27.562 Host name: storage.googleapis.com (Port: 443)
. 2021-10-29 12:57:27.562 User name: GOOG1EXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (Password: Yes, Key file: No, Passphrase: No)
. 2021-10-29 12:57:27.562 Transfer Protocol: S3
. 2021-10-29 12:57:27.562 Proxy: None
. 2021-10-29 12:57:27.562 HTTPS: Yes
. 2021-10-29 12:57:27.562 S3: URL Style: Virtual Host
. 2021-10-29 12:57:27.562 TLS/SSL versions: TLSv1.0-TLSv1.3
...
. 2021-10-29 12:57:27.562 Local directory: C:\Users\XXXXXX\Documents, Remote directory: /some-random-bucket-name, Update: Yes, Cache: Yes
. 2021-10-29 12:57:27.562 Cache directory changes: Yes, Permanent: Yes
. 2021-10-29 12:57:27.562 Recycle bin: Delete to: No, Overwritten to: No, Bin path:
. 2021-10-29 12:57:27.562 --------------------------------------------------------------------------
. 2021-10-29 12:57:27.592 Google Cloud detected.
. 2021-10-29 12:57:27.592 Trying to open directory "/some-random-bucket-name".
. 2021-10-29 12:57:27.592 Unknown bucket "some-random-bucket-name", will detect its region (and service endpoint)
. 2021-10-29 12:57:27.592
. 2021-10-29 12:57:27.592 --
...
a lot of success entries here...
...
. 2021-10-29 12:57:28.175 Session upkeep
. 2021-10-29 12:57:28.236 Startup conversation with host finished.
. 2021-10-29 12:57:28.603 Session upkeep
. 2021-10-29 12:57:29.111 Session upkeep
. 2021-10-29 12:57:29.606 Session upkeep
. 2021-10-29 12:57:30.105 Session upkeep
. 2021-10-29 12:57:30.606 Session upkeep
. 2021-10-29 12:57:30.821 Session upkeep
. 2021-10-29 12:57:31.113 Session upkeep
. 2021-10-29 12:57:31.604 Session upkeep
. 2021-10-29 12:57:32.107 Session upkeep
. 2021-10-29 12:57:32.610 Session upkeep
. 2021-10-29 12:57:33.106 Session upkeep
. 2021-10-29 12:57:33.603 Session upkeep
. 2021-10-29 12:57:34.113 Session upkeep
. 2021-10-29 12:57:34.416 Renaming file "file-on-cloud.txt" to "file-on-cloud-renamed.txt".
. 2021-10-29 12:57:34.416 --
. 2021-10-29 12:57:34.416 Canonical Request:
. 2021-10-29 12:57:34.416 PUT
. 2021-10-29 12:57:34.416 /file-on-cloud-renamed.txt
. 2021-10-29 12:57:34.416
. 2021-10-29 12:57:34.416 host:some-random-bucket-name.storage.googleapis.com
. 2021-10-29 12:57:34.416 x-amz-content-sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 x-amz-copy-source:/some-random-bucket-name/file-on-cloud.txt
. 2021-10-29 12:57:34.416 x-amz-date:20211029T095734Z
. 2021-10-29 12:57:34.416
. 2021-10-29 12:57:34.416 host;x-amz-content-sha256;x-amz-copy-source;x-amz-date
. 2021-10-29 12:57:34.416 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 --
. 2021-10-29 12:57:34.416 String to Sign:
. 2021-10-29 12:57:34.416 AWS4-HMAC-SHA256
. 2021-10-29 12:57:34.416 20211029T095734Z
. 2021-10-29 12:57:34.416 20211029/us-east-1/s3/aws4_request
. 2021-10-29 12:57:34.416 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 --
. 2021-10-29 12:57:34.416 Authorization Header:
. 2021-10-29 12:57:34.416 Authorization: AWS4-HMAC-SHA256 Credential=GOOG1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/20211029/us-east-1/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-copy-source;x-amz-date,Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416
. 2021-10-29 12:57:34.416 --
. 2021-10-29 12:57:34.416 AMZ Headers:
. 2021-10-29 12:57:34.416 x-amz-date: 20211029T095734Z
. 2021-10-29 12:57:34.416 x-amz-copy-source: /some-random-bucket-name/file-on-cloud.txt
. 2021-10-29 12:57:34.416 x-amz-content-sha256: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 HTTP session to https://some-random-bucket-name.storage.googleapis.com:443 begins.
. 2021-10-29 12:57:34.416 ssl: SNI enabled by default.
. 2021-10-29 12:57:34.416 Running pre_send hooks
. 2021-10-29 12:57:34.416 Sending request headers:
. 2021-10-29 12:57:34.416 PUT /file-on-cloud-renamed.txt HTTP/1.1
. 2021-10-29 12:57:34.416 User-Agent: WinSCP/5.19.4 neon/0.31.2
. 2021-10-29 12:57:34.416 Keep-Alive:
. 2021-10-29 12:57:34.416 Connection: TE, Keep-Alive
. 2021-10-29 12:57:34.416 TE: trailers
. 2021-10-29 12:57:34.416 Host: some-random-bucket-name.storage.googleapis.com
. 2021-10-29 12:57:34.416 Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 x-amz-date: 20211029T095734Z
. 2021-10-29 12:57:34.416 x-amz-copy-source: /some-random-bucket-name/file-on-cloud.txt
. 2021-10-29 12:57:34.416 x-amz-content-sha256: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
. 2021-10-29 12:57:34.416 Sending request-line and headers:
. 2021-10-29 12:57:34.416 Doing DNS lookup on some-random-bucket-name.storage.googleapis.com...
. 2021-10-29 12:57:34.417 req: Connecting to 216.58.207.208:443
. 2021-10-29 12:57:34.429 Doing SSL negotiation.
. 2021-10-29 12:57:34.457 ssl: Verify callback @ 2 => 20
. 2021-10-29 12:57:34.457 ssl: Verify failures |= 8 => 8
. 2021-10-29 12:57:34.463 Chain depth: 3
. 2021-10-29 12:57:34.463 ssl: Match common name '*.storage.googleapis.com' against ''
. 2021-10-29 12:57:34.463 ssl: Match common name '*.googleapis.com' against ''
. 2021-10-29 12:57:34.463 ssl: Match common name 'commondatastorage.googleapis.com' against ''
. 2021-10-29 12:57:34.463 ssl: Match common name '*.commondatastorage.googleapis.com' against ''
. 2021-10-29 12:57:34.463 ssl: Match common name 'storage.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name 'storage.mtls.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.appspot.com.storage.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.content-storage.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.content-storage-p2.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.content-storage-upload.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.content-storage-download.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.storage-upload.googleapis.com' against ''
. 2021-10-29 12:57:34.464 ssl: Match common name '*.storage-download.googleapis.com' against ''
. 2021-10-29 12:57:34.464 Identity match for '': bad
. 2021-10-29 12:57:34.464 ssl: Match common name 'GTS CA 1C3' against ''
. 2021-10-29 12:57:34.464 Identity match for '': bad
. 2021-10-29 12:57:34.464 ssl: Match common name 'GTS Root R1' against ''
. 2021-10-29 12:57:34.464 Identity match for '': bad
. 2021-10-29 12:57:34.464 ssl: Match common name '*.storage.googleapis.com' against 'storage.googleapis.com'
. 2021-10-29 12:57:34.464 ssl: Match common name '*.googleapis.com' against 'storage.googleapis.com'
. 2021-10-29 12:57:34.464 Identity match for 'storage.googleapis.com': good
. 2021-10-29 12:57:34.464 Verifying certificate for "*.storage.googleapis.com" with fingerprint e5:3d:8b:be:c5:d3:bb:c2:3c:8b:04:19:cb:7c:e6:ad:6f:4a:66:d7:01:5c:d7:d3:64:cd:2b:7a:14:5b:c7:f0 and 08 failures
. 2021-10-29 12:57:34.481 Certificate verified against Windows certificate store
. 2021-10-29 12:57:34.481 Using TLSv1.3, cipher TLSv1.3: TLS_AES_256_GCM_SHA384,
. 2021-10-29 12:57:34.481 Request sent; retry is 0.
. 2021-10-29 12:57:34.496 [status-line] < HTTP/1.0 411 Length Required
. 2021-10-29 12:57:34.496 [hdr] Content-Type: text/html; charset=UTF-8
. 2021-10-29 12:57:34.496 Header Name: [content-type], Value: [text/html; charset=UTF-8]
. 2021-10-29 12:57:34.496 [hdr] Referrer-Policy: no-referrer
. 2021-10-29 12:57:34.496 Header Name: [referrer-policy], Value: [no-referrer]
. 2021-10-29 12:57:34.496 [hdr] Content-Length: 1564
. 2021-10-29 12:57:34.496 Header Name: [content-length], Value: [1564]
. 2021-10-29 12:57:34.496 [hdr] Date: Fri, 29 Oct 2021 09:57:34 GMT
. 2021-10-29 12:57:34.496 Header Name: [date], Value: [Fri, 29 Oct 2021 09:57:34 GMT]
. 2021-10-29 12:57:34.496 [hdr]
. 2021-10-29 12:57:34.496 End of headers.
. 2021-10-29 12:57:34.496 Running post_headers hooks
. 2021-10-29 12:57:34.496 Reading 1564 bytes of response body.
. 2021-10-29 12:57:34.496 Got 1247 bytes.
. 2021-10-29 12:57:34.496 Read block (1247 bytes):
. 2021-10-29 12:57:34.496 [<!DOCTYPE html>
. 2021-10-29 12:57:34.496 <html lang=en>
. 2021-10-29 12:57:34.496 <meta charset=utf-8>
. 2021-10-29 12:57:34.496 <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
. 2021-10-29 12:57:34.496 <title>Error 411 (Length Required)!!1</title>
. 2021-10-29 12:57:34.496 <style>
. 2021-10-29 12:57:34.496 *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat]
. 2021-10-29 12:57:34.496 sess: Closing connection.
. 2021-10-29 12:57:34.496 sess: Connection closed.
. 2021-10-29 12:57:34.496 Request ends, status 411 class 4xx, error line:
. 2021-10-29 12:57:34.496 411 Length Required
< 2021-10-29 12:57:34.496 <!DOCTYPE html>
< 2021-10-29 12:57:34.496 <html lang=en>
< 2021-10-29 12:57:34.496 <meta charset=utf-8>
< 2021-10-29 12:57:34.496 <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
< 2021-10-29 12:57:34.496 <title>Error 411 (Length Required)!!1</title>
< 2021-10-29 12:57:34.496 <style>
< 2021-10-29 12:57:34.496 *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat
. 2021-10-29 12:57:34.496 Running destroy hooks.
. 2021-10-29 12:57:34.496 Request ends.
. 2021-10-29 12:57:34.496 sess: Destroying session.
. 2021-10-29 12:57:34.496 Asking user:
. 2021-10-29 12:57:34.496 Error renaming file 'file-on-cloud.txt' to 'file-on-cloud-renamed.txt'. (XmlParseFailure)
. 2021-10-29 12:57:34.603 Session upkeep
. 2021-10-29 12:57:35.110 Session upkeep
. 2021-10-29 12:57:35.604 Session upkeep
. 2021-10-29 12:57:36.108 Session upkeep