Skip to content

Commit

Permalink
updating
Browse files Browse the repository at this point in the history
  • Loading branch information
coreydaley committed Jul 24, 2023
1 parent 245bb3e commit 0857ba2
Show file tree
Hide file tree
Showing 11 changed files with 65 additions and 20 deletions.
2 changes: 1 addition & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h

func cloneTLSConfig(cfg *tls.Config) *tls.Config {
if cfg == nil {
return &tls.Config{}
return &tls.Config{MinVersion: tls.VersionTLS12}
}
return cfg.Clone()
}
18 changes: 14 additions & 4 deletions client_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,9 @@ func TestRespOnBadHandshake(t *testing.T) {

s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(expectedStatus)
io.WriteString(w, expectedBody)
if _, err := io.WriteString(w, expectedBody); err != nil {
t.Fatalf("WriteString: %v", err)
}
}))
defer s.Close()

Expand Down Expand Up @@ -773,7 +775,10 @@ func TestSocksProxyDial(t *testing.T) {
}
defer c1.Close()

c1.SetDeadline(time.Now().Add(30 * time.Second))
if err := c1.SetDeadline(time.Now().Add(30 * time.Second)); err != nil {
t.Errorf("set deadline failed: %v", err)
return
}

buf := make([]byte, 32)
if _, err := io.ReadFull(c1, buf[:3]); err != nil {
Expand Down Expand Up @@ -812,10 +817,15 @@ func TestSocksProxyDial(t *testing.T) {
defer c2.Close()
done := make(chan struct{})
go func() {
io.Copy(c1, c2)
if _, err := io.Copy(c1, c2); err != nil {
t.Errorf("copy failed: %v", err)
}
close(done)
}()
io.Copy(c2, c1)
if _, err := io.Copy(c2, c1); err != nil {
t.Errorf("copy failed: %v", err)
return
}
<-done
}()

Expand Down
4 changes: 3 additions & 1 deletion compression.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ func decompressNoContextTakeover(r io.Reader) io.ReadCloser {
"\x01\x00\x00\xff\xff"

fr, _ := flateReaderPool.Get().(io.ReadCloser)
fr.(flate.Resetter).Reset(io.MultiReader(r, strings.NewReader(tail)), nil)
if err := fr.(flate.Resetter).Reset(io.MultiReader(r, strings.NewReader(tail)), nil); err != nil {
panic(err)
}
return &flateReadWrapper{fr}
}

Expand Down
12 changes: 9 additions & 3 deletions compression_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ func TestTruncWriter(t *testing.T) {
if m > n {
m = n
}
w.Write(p[:m])
if _, err := w.Write(p[:m]); err != nil {
t.Fatal(err)
}
p = p[m:]
}
if b.String() != data[:len(data)-len(w.p)] {
Expand All @@ -46,7 +48,9 @@ func BenchmarkWriteNoCompression(b *testing.B) {
messages := textMessages(100)
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.WriteMessage(TextMessage, messages[i%len(messages)])
if err := c.WriteMessage(TextMessage, messages[i%len(messages)]); err != nil {
b.Fatal(err)
}
}
b.ReportAllocs()
}
Expand All @@ -59,7 +63,9 @@ func BenchmarkWriteWithCompression(b *testing.B) {
c.newCompressionWriter = compressNoContextTakeover
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.WriteMessage(TextMessage, messages[i%len(messages)])
if err := c.WriteMessage(TextMessage, messages[i%len(messages)]); err != nil {
b.Fatal(err)
}
}
b.ReportAllocs()
}
Expand Down
15 changes: 12 additions & 3 deletions conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ package websocket

import (
"bufio"
"crypto/rand"
"encoding/binary"
"errors"
"io"
"math/rand"
"log"
"math/big"
"net"
"strconv"
"strings"
Expand Down Expand Up @@ -181,8 +183,15 @@ var (
)

func newMaskKey() [4]byte {
n := rand.Uint32()
return [4]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)}
/*n := mr.Uint32()
log.Printf("math/rand: %v - %v", n, [4]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)})*/
nBig, err := rand.Int(rand.Reader, big.NewInt(int64(1<<32)))
if err != nil {
log.Println(err)
}
nb := nBig.Uint64()
log.Printf("crypto/rand: %v - %v", nb, [4]byte{byte(nb), byte(nb >> 8), byte(nb >> 16), byte(nb >> 24)})
return [4]byte{byte(nb), byte(nb >> 8), byte(nb >> 16), byte(nb >> 24)}
}

func hideTempErr(err error) error {
Expand Down
6 changes: 5 additions & 1 deletion examples/autobahn/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,11 @@ func main() {
http.HandleFunc("/r", echoReadAllWriter)
http.HandleFunc("/m", echoReadAllWriteMessage)
http.HandleFunc("/p", echoReadAllWritePreparedMessage)
err := http.ListenAndServe(*addr, nil)
server := &http.Server{
Addr: *addr,
ReadHeaderTimeout: 3 * time.Second,
}
err := server.ListenAndServe()
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
Expand Down
7 changes: 6 additions & 1 deletion examples/chat/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"flag"
"log"
"net/http"
"time"
)

var addr = flag.String("addr", ":8080", "http service address")
Expand All @@ -33,7 +34,11 @@ func main() {
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
serveWs(hub, w, r)
})
err := http.ListenAndServe(*addr, nil)
server := &http.Server{
Addr: *addr,
ReadHeaderTimeout: 3 * time.Second,
}
err := server.ListenAndServe()
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
Expand Down
6 changes: 5 additions & 1 deletion examples/command/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,5 +189,9 @@ func main() {
}
http.HandleFunc("/", serveHome)
http.HandleFunc("/ws", serveWs)
log.Fatal(http.ListenAndServe(*addr, nil))
server := &http.Server{
Addr: *addr,
ReadHeaderTimeout: 3 * time.Second,
}
log.Fatal(server.ListenAndServe())
}
9 changes: 7 additions & 2 deletions examples/filewatch/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"log"
"net/http"
"os"
"path/filepath"
"strconv"
"time"

Expand Down Expand Up @@ -49,7 +50,7 @@ func readFileIfModified(lastMod time.Time) ([]byte, time.Time, error) {
if !fi.ModTime().After(lastMod) {
return nil, lastMod, nil
}
p, err := ioutil.ReadFile(filename)
p, err := ioutil.ReadFile(filepath.Clean(filename))
if err != nil {
return nil, fi.ModTime(), err
}
Expand Down Expand Up @@ -163,7 +164,11 @@ func main() {
filename = flag.Args()[0]
http.HandleFunc("/", serveHome)
http.HandleFunc("/ws", serveWs)
if err := http.ListenAndServe(*addr, nil); err != nil {
server := &http.Server{
Addr: *addr,
ReadHeaderTimeout: 3 * time.Second,
}
if err := server.ListenAndServe(); err != nil {
log.Fatal(err)
}
}
Expand Down
2 changes: 1 addition & 1 deletion prepared_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func TestPreparedMessage(t *testing.T) {
got := buf.String()

if got != want {
t.Errorf("write message != prepared message for %+v", tt)
t.Errorf("write message != prepared message, got %#v, want %#v", got, want)
}
}
}
4 changes: 2 additions & 2 deletions util.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ package websocket

import (
"crypto/rand"
"crypto/sha1"
"crypto/sha512"
"encoding/base64"
"io"
"net/http"
Expand All @@ -17,7 +17,7 @@ import (
var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11")

func computeAcceptKey(challengeKey string) string {
h := sha1.New()
h := sha512.New()
h.Write([]byte(challengeKey))
h.Write(keyGUID)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
Expand Down

0 comments on commit 0857ba2

Please sign in to comment.