Add ErrCertificateNotFound
This commit is contained in:
parent
14ef3be6fe
commit
ca8e0166fc
2
cert.go
2
cert.go
@ -53,7 +53,7 @@ func (c *CertificateStore) Add(scope string, cert tls.Certificate) {
|
|||||||
func (c *CertificateStore) Lookup(scope string) (*tls.Certificate, error) {
|
func (c *CertificateStore) Lookup(scope string) (*tls.Certificate, error) {
|
||||||
cert, ok := c.store[scope]
|
cert, ok := c.store[scope]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, ErrCertificateUnknown
|
return nil, ErrCertificateNotFound
|
||||||
}
|
}
|
||||||
// Ensure that the certificate is not expired
|
// Ensure that the certificate is not expired
|
||||||
if cert.Leaf != nil && cert.Leaf.NotAfter.Before(time.Now()) {
|
if cert.Leaf != nil && cert.Leaf.NotAfter.Before(time.Now()) {
|
||||||
|
@ -23,6 +23,7 @@ var (
|
|||||||
ErrTooManyRedirects = errors.New("gemini: too many redirects")
|
ErrTooManyRedirects = errors.New("gemini: too many redirects")
|
||||||
ErrInputRequired = errors.New("gemini: input required")
|
ErrInputRequired = errors.New("gemini: input required")
|
||||||
ErrCertificateRequired = errors.New("gemini: certificate 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.
|
// DefaultClient is the default client. It is used by Get and Do.
|
||||||
|
@ -150,7 +150,7 @@ func (s *Server) getCertificateFor(hostname string) (*tls.Certificate, error) {
|
|||||||
cert, err := s.Certificates.Lookup(hostname)
|
cert, err := s.Certificates.Lookup(hostname)
|
||||||
|
|
||||||
switch err {
|
switch err {
|
||||||
case ErrCertificateUnknown, ErrCertificateExpired:
|
case ErrCertificateNotFound, ErrCertificateExpired:
|
||||||
if s.CreateCertificate != nil {
|
if s.CreateCertificate != nil {
|
||||||
cert, err := s.CreateCertificate(hostname)
|
cert, err := s.CreateCertificate(hostname)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -176,16 +176,16 @@ func (s *Server) respond(conn net.Conn) {
|
|||||||
if b, err := r.ReadByte(); err != nil {
|
if b, err := r.ReadByte(); err != nil {
|
||||||
return
|
return
|
||||||
} else if b != '\n' {
|
} else if b != '\n' {
|
||||||
w.WriteHeader(StatusBadRequest, "Bad request")
|
w.WriteStatus(StatusBadRequest)
|
||||||
}
|
}
|
||||||
// Trim carriage return
|
// Trim carriage return
|
||||||
rawurl = rawurl[:len(rawurl)-1]
|
rawurl = rawurl[:len(rawurl)-1]
|
||||||
// Ensure URL is valid
|
// Ensure URL is valid
|
||||||
if len(rawurl) > 1024 {
|
if len(rawurl) > 1024 {
|
||||||
w.WriteHeader(StatusBadRequest, "Bad request")
|
w.WriteStatus(StatusBadRequest)
|
||||||
} else if url, err := url.Parse(rawurl); err != nil || url.User != nil {
|
} 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
|
// Note that we return an error status if User is specified in the URL
|
||||||
w.WriteHeader(StatusBadRequest, "Bad request")
|
w.WriteStatus(StatusBadRequest)
|
||||||
} else {
|
} else {
|
||||||
// If no scheme is specified, assume a default scheme of gemini://
|
// If no scheme is specified, assume a default scheme of gemini://
|
||||||
if url.Scheme == "" {
|
if url.Scheme == "" {
|
||||||
|
Loading…
Reference in New Issue
Block a user