From ca8e0166fc24e82329c1ce3fe515f1e852b87bd2 Mon Sep 17 00:00:00 2001 From: Adnan Maolood Date: Sat, 31 Oct 2020 16:45:38 -0400 Subject: [PATCH] Add ErrCertificateNotFound --- cert.go | 2 +- gemini.go | 1 + server.go | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cert.go b/cert.go index 9399876..7ce17cb 100644 --- a/cert.go +++ b/cert.go @@ -53,7 +53,7 @@ func (c *CertificateStore) Add(scope string, cert tls.Certificate) { func (c *CertificateStore) Lookup(scope string) (*tls.Certificate, error) { cert, ok := c.store[scope] if !ok { - return nil, ErrCertificateUnknown + return nil, ErrCertificateNotFound } // Ensure that the certificate is not expired if cert.Leaf != nil && cert.Leaf.NotAfter.Before(time.Now()) { diff --git a/gemini.go b/gemini.go index 8a74422..7015536 100644 --- a/gemini.go +++ b/gemini.go @@ -23,6 +23,7 @@ var ( ErrTooManyRedirects = errors.New("gemini: too many redirects") ErrInputRequired = errors.New("gemini: input required") ErrCertificateRequired = errors.New("gemini: certificate required") + ErrCertificateNotFound = errors.New("gemini: certificate not found") ) // DefaultClient is the default client. It is used by Get and Do. diff --git a/server.go b/server.go index 41ddd75..1cf20d2 100644 --- a/server.go +++ b/server.go @@ -150,7 +150,7 @@ func (s *Server) getCertificateFor(hostname string) (*tls.Certificate, error) { cert, err := s.Certificates.Lookup(hostname) switch err { - case ErrCertificateUnknown, ErrCertificateExpired: + case ErrCertificateNotFound, ErrCertificateExpired: if s.CreateCertificate != nil { cert, err := s.CreateCertificate(hostname) if err == nil { @@ -176,16 +176,16 @@ func (s *Server) respond(conn net.Conn) { if b, err := r.ReadByte(); err != nil { return } else if b != '\n' { - w.WriteHeader(StatusBadRequest, "Bad request") + w.WriteStatus(StatusBadRequest) } // Trim carriage return rawurl = rawurl[:len(rawurl)-1] // Ensure URL is valid if len(rawurl) > 1024 { - w.WriteHeader(StatusBadRequest, "Bad request") + w.WriteStatus(StatusBadRequest) } else if url, err := url.Parse(rawurl); err != nil || url.User != nil { // Note that we return an error status if User is specified in the URL - w.WriteHeader(StatusBadRequest, "Bad request") + w.WriteStatus(StatusBadRequest) } else { // If no scheme is specified, assume a default scheme of gemini:// if url.Scheme == "" {