Add ErrCertificateNotFound

This commit is contained in:
Adnan Maolood 2020-10-31 16:45:38 -04:00
parent 14ef3be6fe
commit ca8e0166fc
3 changed files with 6 additions and 5 deletions

View File

@ -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()) {

View File

@ -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.

View File

@ -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 == "" {