Commit Briefs

Omar Polo

got-fetch-http: be pedantic with the error checking

these functions are expected to return -1 on failure, be strict about it.



Omar Polo

fix function name in error message


Stefan Sperling

fix wrong errno check in bufio_close_sync()

ok thomas_adam, op@


Stefan Sperling

redo "got-fetch-http: fix GET request URL", without breaking tests

My previous fix for ~user in SSH URLs broke ~user in HTTP URLs, as used on sourcehut. Sanitize the amount of leading and embedded slashes in URLs to make things work in all cases. The root cause of the test problem with naddy's previous diff was likely in the http-server script itself, where a request like GET //repo//info/refs?service=git-upload-pack somehow ended up as GET $testroot///info/refs. We work around this here by avoiding the double slashes.


Christian Weisgerber

got-fetch-http: backout GET request URL fix

It broke the clone regression test.


Christian Weisgerber

got-fetch-http: fix GET request URL

Add a leading '/' and do not produce a double "//" after the path. ok op


Stefan Sperling

fix got-fetch-http when chunked encoding is not used

We would end up raising a spurious error when the server had no more data to send and would abort the clone operation, while everything was fine in fact. Problem reported by vazub via IRC, thanks!


Tobias Heider

Use got_pkt_readlen() to parse pkt-lens.


Stefan Sperling

make got-fetch-http pass "done\n" through rather than faking it

Without this we exit the loop early and got-fetch-pack sees unexpected end-of-file on stdout trying to write its final "done\n" message. ok op@




Stefan Sperling

remove dead code under DEBUG_HTTP; ok op@


Stefan Sperling

use unveil to restrict filesystem access of got-fetch-http

With HTTPS we only need to be able to read /etc/ssl/cert.pem. With plaintext HTTP no filesystem access is needed at all.






Stefan Sperling

make got-fetch-http get_refs() understand when packet lines end

Previously it would only exit the loop when reading failed. ok tobhe@




Tobias Heider

Remove some dead code


Tobias Heider

Rewrite got-fetch-http I/O using bufio API. This should help make the

code more portable supports almost everything we need out of the box. pledge needs the rpath promise because of libtls. This was technically also the case with the old API but we didn't actually enable pledge thanks to DEBUG_HTTP. The synchronous bufio wrappers should probably move to lib/bufio.c in the future. ok and feedback from op@



Tobias Heider

Rename got-http helper to got-fetch-http to match naming scheme.

We aren't planning to support sending anyway. ok stsp@