GnuTLS recv error (-9): A TLS packet with unexpected length was received
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
curl (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
git (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned | ||
gnutls26 (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
On Precise 12.04 whilst attempting:
GIT_CURL_VERBOSE=1 git clone -v https:/
the operation fails after the final git pack-file has been received and the already-created repository is deleted from the file system.
...
> POST /typescript/
User-Agent: git/1.8.
Host: git01.codeplex.com
Accept-Encoding: gzip
Content-Type: application/
Accept: application/
Content-Length: 611
* upload completely sent off: 611out of 611 bytes
< HTTP/1.1 200 OK
< Cache-Control: no-cache, max-age=0, must-revalidate
< Pragma: no-cache
< Content-Type: application/
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Server: Microsoft-IIS/7.5
< X-Powered-By: ASP.NET
< Date: Thu, 31 Jan 2013 21:43:55 GMT
< Connection: close
<
remote: Counting objects: 149766, done.
remote: Compressing objects: 100% (10580/10580), done.
* GnuTLS recv error (-9): A TLS packet with unexpected length was received.
* Closing connection #0
remote: Total 149766 (delta 138201), reused 149559 (delta 138077)
Receiving objects: 100% (149766/149766), 198.98 MiB | 361 KiB/s, done.
error: RPC failed; result=56, HTTP code = 200
Resolving deltas: 100% (138201/138201), done.
git exits at this point but it deletes the entire cloned ./typescript directory.
I tried building the latest git binary and included an additional debug option in "http.c" that allowed me to set the protocol version using an environment option:
CURLOPT_
where 1 = TLSv1, 2 = SSLv2, 3 = SSLv3.
I tried each protocol but the result was the same.
The knock-on bug here is that git ought not to delete what it has fetched - in this case more than 250MB of data.
I did try to build the latest gnutls but it needs a very recent version of libnettle which has the "rsa_decrypt_tr" function. I stopped at that point since I don't want to get into dependency and library version issues.
Changed in curl (Ubuntu): | |
status: | Confirmed → In Progress |
status: | In Progress → Confirmed |
I've added the other packages that git depends upon since this might need to be dealt with higher up than libgnutls.
git < libcurl3-gnutls < libgnutls26