Since this problem is also bugging me, I tried to locate it.
I discovered that cloning works with a NTLM proxy if I recompile git with USE_CURL_MULTI disabled. While further hunting down the problem, it looks like call to curl_easy_perform() from run_slot() never returns. To me it looks like some wired curl behavior after a POST when a NTLM proxy is used. I guess it's somehow related to the "rewindaftersend" flag.
Are multi connections even supported with NTLM proxies?
>>curl_easy_perform
* Couldn't find host
github.com in the _netrc file; using defaults
* About to connect() to proxy <PROXY> port <PORT> (#0)
* Trying <IP>...
* connected
* Connected to <PROXY> (<IP>) port <PORT> (#0)
* Establish HTTP proxy tunnel to
github.com:443* Proxy auth using NTLM with user ''
> CONNECT
github.com:443 HTTP/1.1
Host:
github.com:443Proxy-Authorization: NTLM <TOKEN>
User-Agent: git/1.8.1.msysgit.1.dirty
Proxy-Connection: Keep-Alive
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
< HTTP/1.1 407 Proxy Authentication Required
< Proxy-Authenticate: NTLM <TOKEN>
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset=utf-8
< Proxy-Connection: Keep-Alive
< Set-Cookie: <COOKIE>; Path=/
< Connection: Keep-Alive
< Content-Length: 838
<
* Ignore 838 bytes of response-body
* Rewind stream after send
* TUNNEL_STATE switched to: 0
* Establish HTTP proxy tunnel to
github.com:443* Proxy auth using NTLM with user '<USER>'
> CONNECT
github.com:443 HTTP/1.1
Host:
github.com:443Proxy-Authorization: NTLM <TOKEN>
User-Agent: git/1.8.1.msysgit.1.dirty
Proxy-Connection: Keep-Alive
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
* CAfile: C:\msysgit/mingw/bin/curl-ca-bundle.crt
CApath: none
* SSL re-using session ID
* SSL connection using RC4-SHA
* old SSL session ID is stale, removing
* Server certificate:
* subject: businessCategory=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.3.6.1.4.1.311.60.2.1.2=California; serialNumber=C3268102; C=US; ST=Calif
ornia; L=San Francisco; O=GitHub, Inc.; CN=
github.com* start date: 2011-05-27 00:00:00 GMT
* expire date: 2013-07-29 12:00:00 GMT
* subjectAltName:
github.com matched
* issuer: C=US; O=DigiCert Inc; OU=
www.digicert.com; CN=DigiCert High Assurance EV CA-1
* SSL certificate verify ok.
> POST /AutoMapper/AutoMapper.git/git-upload-pack HTTP/1.1
User-Agent: git/1.8.1.msysgit.1.dirty
Host:
github.comAccept-Encoding: gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
Content-Length: 806
* upload completely sent off: 806 out of 806 bytes
< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Mon, 18 Mar 2013 13:57:25 GMT
< Content-Type: application/x-git-upload-pack-result
< Transfer-Encoding: chunked
< Connection: keep-alive
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
* Keep sending data to get tossed away!
<
remote: Counting objects: 5913, done.
remote: Compressing objects: 100% (2204/2204), done.
remote: Total 5913 (delta 4037), reused 5465 (delta 3629)
Receiving objects: 100% (5913/5913), 39.92 MiB | 603 KiB/s, done.
Resolving deltas: 100% (4037/4037), done.