Skip to content

Commit

Permalink
uri: isHttps() and isHttp()
Browse files Browse the repository at this point in the history
Use them instead of manual schema comparison
  • Loading branch information
stokito committed Nov 8, 2021
1 parent 931d0a4 commit 2245ffa
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
10 changes: 4 additions & 6 deletions client.go
Expand Up @@ -4,7 +4,6 @@ package fasthttp

import (
"bufio"
"bytes"
"crypto/tls"
"errors"
"fmt"
Expand Down Expand Up @@ -464,11 +463,10 @@ func (c *Client) Do(req *Request, resp *Response) error {
host := uri.Host()

isTLS := false
scheme := uri.Scheme()
if bytes.Equal(scheme, strHTTPS) {
if uri.isHttps() {
isTLS = true
} else if !bytes.Equal(scheme, strHTTP) {
return fmt.Errorf("unsupported protocol %q. http and https are supported", scheme)
} else if !uri.isHttp() {
return fmt.Errorf("unsupported protocol %q. http and https are supported", uri.Scheme())
}

startCleaner := false
Expand Down Expand Up @@ -1363,7 +1361,7 @@ func (c *HostClient) doNonNilReqResp(req *Request, resp *Response) (bool, error)
req.secureErrorLogMessage = c.SecureErrorLogMessage
req.Header.secureErrorLogMessage = c.SecureErrorLogMessage

if c.IsTLS != bytes.Equal(req.uri.Scheme(), strHTTPS) {
if c.IsTLS != req.uri.isHttps() {
return false, ErrHostClientRedirectToDifferentScheme
}

Expand Down
5 changes: 2 additions & 3 deletions server_test.go
Expand Up @@ -1158,9 +1158,8 @@ func TestServerServeTLSEmbed(t *testing.T) {
ctx.Error("expecting tls", StatusBadRequest)
return
}
scheme := ctx.URI().Scheme()
if string(scheme) != "https" {
ctx.Error(fmt.Sprintf("unexpected scheme=%q. Expecting %q", scheme, "https"), StatusBadRequest)
if !ctx.URI().isHttps() {
ctx.Error(fmt.Sprintf("unexpected scheme=%q. Expecting %q", ctx.URI().Scheme(), "https"), StatusBadRequest)
return
}
ctx.WriteString("success") //nolint:errcheck
Expand Down
8 changes: 8 additions & 0 deletions uri.go
Expand Up @@ -216,6 +216,14 @@ func (u *URI) SetSchemeBytes(scheme []byte) {
lowercaseBytes(u.scheme)
}

func (u *URI) isHttps() bool {
return bytes.Equal(u.scheme, strHTTPS)
}

func (u *URI) isHttp() bool {
return bytes.Equal(u.scheme, strHTTP)
}

// Reset clears uri.
func (u *URI) Reset() {
u.pathOriginal = u.pathOriginal[:0]
Expand Down

0 comments on commit 2245ffa

Please sign in to comment.