Przeglądaj źródła

Merge pull request #720 from Zariel/unknown-error-resp-error

frame: report unknown error codes as a frame parse error
Chris Bannister 9 lat temu
rodzic
commit
48b5830ac3
3 zmienionych plików z 9 dodań i 8 usunięć
  1. 2 5
      conn_test.go
  2. 5 1
      frame.go
  3. 2 2
      frame_test.go

+ 2 - 5
conn_test.go

@@ -457,7 +457,7 @@ func TestQueryTimeoutClose(t *testing.T) {
 }
 
 func TestStream0(t *testing.T) {
-	const expErr = "gocql: error on stream 0:"
+	const expErr = "gocql: received frame on stream 0"
 
 	srv := NewTestServer(t, defaultProto)
 	defer srv.Stop()
@@ -475,10 +475,7 @@ func TestStream0(t *testing.T) {
 	}
 
 	writer := frameWriterFunc(func(f *framer, streamID int) error {
-		f.writeHeader(0, opError, 0)
-		f.writeInt(0)
-		f.writeString("i am a bad frame")
-		// f.wbuf[0] = 2
+		f.writeQueryFrame(0, "void", &queryParams{})
 		return f.finishWrite()
 	})
 

+ 5 - 1
frame.go

@@ -573,8 +573,12 @@ func (f *framer) parseErrorFrame() frame {
 		res.Function = f.readString()
 		res.ArgTypes = f.readStringList()
 		return res
+	case errInvalid, errBootstrapping, errConfig, errCredentials, errOverloaded,
+		errProtocol, errServer, errSyntax, errTruncate, errUnauthorized:
+		// TODO(zariel): we should have some distinct types for these errors
+		return errD
 	default:
-		return &errD
+		panic(fmt.Errorf("unknown error code: 0x%x", errD.code))
 	}
 }
 

+ 2 - 2
frame_test.go

@@ -21,8 +21,8 @@ func TestFuzzBugs(t *testing.T) {
 			"0000000"),
 		[]byte("\x82\xe600\x00\x00\x00\x000"),
 		[]byte("\x8200\b\x00\x00\x00\b0\x00\x00\x00\x040000"),
-		//[]byte("\x8200\x00\x00\x00\x00\x100\x00\x00\x12\x00\x00\x0000000" +
-		//	"00000"), // SKIP this for now, this was caused by an unrelated bug
+		[]byte("\x8200\x00\x00\x00\x00\x100\x00\x00\x12\x00\x00\x0000000" +
+			"00000"),
 		[]byte("\x83000\b\x00\x00\x00\x14\x00\x00\x00\x020000000" +
 			"000000000"),
 		[]byte("\x83000\b\x00\x00\x000\x00\x00\x00\x04\x00\x1000000" +