1
0
mirror of https://git.sr.ht/~adnano/go-gemini synced 2024-09-19 18:53:43 +02:00
Commit Graph

127 Commits

Author SHA1 Message Date
adnano
5e1b4015ff client: Document use of contexts 2021-02-22 21:35:02 -05:00
adnano
65b7f95b30 client: Remove Timeout
Clients should use context.WithTimeout instead.
2021-02-21 16:47:56 -05:00
adnano
787a2445a8 Move punycode functions to client.go 2021-02-21 09:43:23 -05:00
adnano
b90b5bf2dc client: Copy only what is needed from the Request 2021-02-21 09:41:00 -05:00
adnano
14a977907b Add ErrCertificateExpired 2021-02-21 09:27:12 -05:00
adnano
64da10e804 client: Inline result type 2021-02-21 00:20:42 -05:00
adnano
bb51cd4eb6 client: Make Get and Do accept a Context
This removes the need for Request.Context.
2021-02-20 15:34:21 -05:00
adnano
180605cd5f client: Allow Request.Host to omit a port 2021-02-20 13:30:55 -05:00
adnano
e38ab376f7 request.Write: Accept an io.Writer 2021-02-18 21:58:37 -05:00
adnano
fd3babb40f client: Remove superfluous call to Flush 2021-02-18 21:55:17 -05:00
adnano
9c13a3ba79 client: Don't try to verify unicode hostname 2021-02-16 11:27:53 -05:00
adnano
2bb0725cc4 Make Request.Host optional 2021-02-14 19:02:34 -05:00
adnano
b2a1655173 Update Client documentation 2021-02-14 17:11:05 -05:00
adnano
128cf1b6ec Update documentation 2021-02-14 15:50:41 -05:00
adnano
8fa39e3ed6 client: Punycode request URL 2021-02-09 16:55:14 -05:00
adnano
b5ccf188b2 client: Support IDNs
Convert IDNs to punycode before performing DNS lookups.
2021-02-09 15:59:47 -05:00
adnano
d93adc7908 Make TLS field nil for unencrypted connections 2021-02-08 12:32:49 -05:00
adnano
10eed253f9 tofu: Implement PersistentHosts 2021-01-25 12:11:59 -05:00
adnano
94f623e2b8 client: Add note about TOFU 2021-01-14 22:34:12 -05:00
adnano
5721d60ff5 fs: Update comments 2021-01-14 22:27:56 -05:00
Hugo Wetterberg
9f69c28198 client: set the client timout on the dialer, close connection on err
Client.Timout isn't respected for the dial. Requests will hang on dial
until OS-level timouts kick in unless there is a Request.Context with
a deadline. We also fail to close the connection on errors.

This change sets the client timeout as the dialer timeout so that it
will be respected. It also ensures that we close the connection if we
fail to make the request.
2021-01-13 17:13:56 -05:00
Hugo Wetterberg
68767e6bf0 Add missing error handling
Error handling is currently missing is a couple of places. Most of
them are i/o related.

This change adds checks, an therefore sometimes also has to change
function signatures by adding an error return value. In the case of
the response writer the status and meta handling is changed and this
also breaks the API.

In some places where we don't have any reasonable I've added
assignment to a blank identifier to make it clear that we're ignoring
an error.

text: read the Err() that can be set by the scanner.

client: check if conn.SetDeadline() returns an error.

client: check if req.Write() returns an error.

fs: panic if mime type registration fails.

server: stop performing i/o in Header/Status functions

By deferring the actual header write to the first Write() or Flush()
call we don't have to do any error handling in Header() or Status().

As Server.respond() now defers a ResponseWriter.Flush() instead of
directly flushing the underlying bufio.Writer this has the added
benefit of ensuring that we always write a header
to the client, even if the responder is a complete NOOP.

tofu: return an error if we fail to write to the known hosts writer.
2021-01-09 23:53:07 -05:00
adnano
a9922727e9 client: Verify expiration time 2020-12-19 13:43:47 -05:00
adnano
cc962586d4 Add ReadRequest and ReadResponse functions 2020-12-18 01:42:05 -05:00
adnano
b9a9b65d0b Expose Request.Write and Response.Read functions 2020-12-18 01:14:06 -05:00
adnano
bbd8837651 Remove unnecessary variable 2020-12-18 00:35:08 -05:00
adnano
2efc7a601b Remove Response.Request field 2020-12-18 00:19:53 -05:00
adnano
46e37ca9d6 client: Remove GetInput and CheckRedirect callbacks 2020-12-18 00:12:32 -05:00
adnano
6a0c970814 Update switch statement 2020-12-17 23:03:33 -05:00
adnano
11797c1adc client: Remove GetCertificate callback 2020-12-17 22:56:48 -05:00
adnano
2bbc603627 Update GetCertificate documentation 2020-12-17 19:54:46 -05:00
adnano
aafbf9e590 Decouple Client from KnownHostsFile 2020-12-17 19:50:26 -05:00
adnano
70bb9c4e59 Allow Request.Context to be nil 2020-12-17 17:16:55 -05:00
adnano
74ed3090cb client: Add GetCertificate callback 2020-12-17 16:46:16 -05:00
adnano
e0aa2740cb Revert to using hexadecimal to encode fingerprints 2020-12-16 23:58:02 -05:00
adnano
d37431fd29 Fix escaping of queries 2020-11-27 22:27:52 -05:00
adnano
19c6d8ef28 Fix server name in TLS connections 2020-11-27 17:45:15 -05:00
adnano
611af9f6ed Add context to requests 2020-11-26 00:42:25 -05:00
adnano
57a3279d96 Fix certificate fingerprint check 2020-11-25 14:20:31 -05:00
adnano
048edc7db1 Use base64 to encode fingerprints 2020-11-25 14:16:51 -05:00
adnano
c1908868a9 Fix client locking up on redirects 2020-11-24 21:49:24 -05:00
adnano
f73de25fed Escape path character in certificate scopes 2020-11-24 20:24:38 -05:00
adnano
2ab2d119e8 Make Client safe for concurrent use 2020-11-24 16:28:58 -05:00
adnano
45e9d3b99e Expose KnownHosts and CertificateStore internals 2020-11-23 12:17:54 -05:00
adnano
c8516bef63 Remove top-level Get and Do functions 2020-11-09 12:04:53 -05:00
adnano
50dcdabe8f Remove (*KnownHosts).LoadDefault function 2020-11-09 09:28:44 -05:00
adnano
ee691dbba5 Fix relative redirects 2020-11-07 23:43:07 -05:00
adnano
b244439328 Allow redirects to non-gemini schemes 2020-11-06 11:18:58 -05:00
adnano
74210e3339 Fix TOFU 2020-11-05 22:30:13 -05:00
adnano
2655be85df Don't check if certificate is expired 2020-11-05 18:35:25 -05:00