Sfoglia il codice sorgente

Merge pull request #1226 from slingamn/websocket_dos

mitigate a potential DoS against websocket listeners
tags/v2.3.0-rc1
Shivaram Lingamneni 3 anni fa
parent
commit
88b09e5919
Nessun account collegato all'indirizzo email del committer
1 ha cambiato i file con 11 aggiunte e 9 eliminazioni
  1. 11
    9
      irc/ircconn.go

+ 11
- 9
irc/ircconn.go Vedi File

124
 }
124
 }
125
 
125
 
126
 func (wc IRCWSConn) ReadLine() (line []byte, err error) {
126
 func (wc IRCWSConn) ReadLine() (line []byte, err error) {
127
-	for {
128
-		var messageType int
129
-		messageType, line, err = wc.conn.ReadMessage()
130
-		// on empty message or non-text message, try again, block if necessary
131
-		if err != nil || (messageType == websocket.TextMessage && len(line) != 0) {
132
-			if err == websocket.ErrReadLimit {
133
-				err = errReadQ
134
-			}
135
-			return
127
+	messageType, line, err := wc.conn.ReadMessage()
128
+	if err == nil {
129
+		if messageType == websocket.TextMessage {
130
+			return line, nil
131
+		} else {
132
+			// for purposes of fakelag, treat non-text message as an empty line
133
+			return nil, nil
136
 		}
134
 		}
135
+	} else if err == websocket.ErrReadLimit {
136
+		return line, errReadQ
137
+	} else {
138
+		return line, err
137
 	}
139
 	}
138
 }
140
 }
139
 
141
 

Loading…
Annulla
Salva