Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | fix: Ensure rate-limits are on for get-entriesmain | Rasmus Dahlberg | 12 days | 2 | -1/+58 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backoff on 4XX and 5XX. See related issue: https://github.com/google/certificate-transparency-go/issues/898 Test manually hints: ``` $ cat srv.py from http.server import HTTPServer, BaseHTTPRequestHandler class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(429) self.send_header("Content-Type", "text/plain") self.end_headers() self.wfile.write(b"429 something something...") def do_POST(self): self.do_GET() def do_PUT(self): self.do_GET() def do_DELETE(self): self.do_GET() if __name__ == "__main__": server_address = ('localhost', 9090) httpd = HTTPServer(server_address, RequestHandler) print("Server running on http://localhost:9090") httpd.serve_forever() ``` And a transport for http.Client that redirects to localhost: ``` type statusRR struct { inner http.RoundTripper } func (s *statusRR) RoundTrip(req *http.Request) (*http.Response, error) { if strings.Contains(req.URL.Path, "ct/v1/get-entries") { req.URL.Scheme = "http" req.URL.Host = "localhost:9090" } rsp, err := s.inner.RoundTrip(req) return rsp, err } ``` | ||||
* | fix: Ensure backoff for get-sth and proof fetching | Rasmus Dahlberg | 13 days | 1 | -1/+6 |
| | | | | Our get-entries fetcher already backs-off exponentially. | ||||
* | fix: Ensure fresh STHs are propagated | Rasmus Dahlberg | 13 days | 1 | -0/+20 |
| | |||||
* | fix: Don't accept timestamps that shrink | Rasmus Dahlberg | 13 days | 1 | -0/+3 |
| | |||||
* | fix: Ensure chunks are sent eventually and on exit | Rasmus Dahlberg | 13 days | 2 | -18/+42 |
| | |||||
* | chore: Remove dash in project name | Rasmus Dahlberg | 2024-06-02 | 2 | -4/+4 |
| | | | | To be consistent with naming of the tools in cmd/. | ||||
* | Only bootstrap a compact range once per log | Rasmus Dahlberg | 2024-05-26 | 2 | -57/+22 |
| | | | | | | | | | | | | | | | As opposed to doing a new bootstrap with get-proof-by-hash every time the next root is constructed. Bootstrapping the compact range from a get-proof-by-hash query works for the most part, but fails if the log included a duplicate entry and gives us the index for that instead. Log operators with duplicate entries include Cloudflare and Digicert. If bootstrap fails (unlucky), we try to bootstrap again once the log's signed tree head moved forward (hoping the last entry has no duplicate). The more reliable way to bootstrap a compact range would be to use the get-entry-and-proof endpoint. This does not work in practise because some logs are not implementing this endpoint. Digicert has such logs. | ||||
* | Reduce default chunk size | Rasmus Dahlberg | 2024-05-16 | 1 | -1/+1 |
| | |||||
* | Fix nits spotted by go vet | Rasmus Dahlberg | 2024-05-16 | 1 | -6/+6 |
| | |||||
* | Set larger chunk size default | Rasmus Dahlberg | 2024-01-08 | 1 | -1/+1 |
| | |||||
* | Add drafty prototype | Rasmus Dahlberg | 2024-01-07 | 4 | -0/+475 |