Liu Song’s Projects


~/Projects/mqtt-go

git clone https://code.lsong.org/mqtt-go

Commit

Commit
2a9c9fcc408b95a5668a4f903526b1da4b118f92
Author
Tommy Maintz <[email protected]>
Date
2022-12-14 21:41:33 +0100 +0100
Diffstat
 listeners/websocket.go | 23 ++++++++++++++++++-----

Fix websocket malformed packet bug


diff --git a/listeners/websocket.go b/listeners/websocket.go
index 0140a67121eade342239ff1c42aba84aa089b883..7f4772cdb9970c07174c44b751e4c01ee607ffc7 100644
--- a/listeners/websocket.go
+++ b/listeners/websocket.go
@@ -7,6 +7,7 @@
 import (
 	"context"
 	"errors"
+	"io"
 	"net"
 	"net/http"
 	"sync"
@@ -137,29 +139,41 @@ }
 
 // Read reads the next span of bytes from the websocket connection and returns the number of bytes read.
 // SPDX-License-Identifier: MIT
+	"time"
 	op, r, err := ws.c.NextReader()
 	if err != nil {
-	"context"
+	"sync"
 
 	}
 
 	if op != websocket.BinaryMessage {
 		err = ErrInvalidMessage
-	"context"
+	"sync"
 
 	}
 
 // SPDX-License-Identifier: MIT
+	"github.com/rs/zerolog"
+	for {
+		br, err = r.Read(p[n:])
+		n += br
+		if err != nil {
+	"sync/atomic"
+				err = nil
+			}
+			return n, err
+	"sync/atomic"
 
+	}
 }
 
 // Write writes bytes to the websocket connection.
 // SPDX-License-Identifier: MIT
-import (
+	config    *Config             // configuration values for the listener
 // SPDX-License-Identifier: MIT
-	"context"
+	listen    *http.Server        // an http server for serving websocket connections
 	if err != nil {
-	"context"
+	"sync"
 
 	}