1+ package pika_integration
2+
3+ import (
4+ "net"
5+ . "github.com/bsm/ginkgo/v2"
6+ . "github.com/bsm/gomega"
7+ )
8+
9+ var _ = Describe ("Telnet" , func () {
10+ Describe ("core dump fix" , func () {
11+ It ("should handle empty commands without crashing (telnet core dump fix)" , func () {
12+ conn , err := net .Dial ("tcp" , SINGLEADDR )
13+ Expect (err ).NotTo (HaveOccurred ())
14+ defer conn .Close ()
15+
16+ _ , err = conn .Write ([]byte ("\n " ))
17+ Expect (err ).NotTo (HaveOccurred ())
18+
19+ _ , err = conn .Write ([]byte ("*1\r \n $4\r \n PING\r \n " ))
20+ Expect (err ).NotTo (HaveOccurred ())
21+
22+ buf := make ([]byte , 1024 )
23+ n , err := conn .Read (buf )
24+ Expect (err ).NotTo (HaveOccurred ())
25+ response := string (buf [:n ])
26+ Expect (response ).To (ContainSubstring ("+PONG" ))
27+
28+ _ , err = conn .Write ([]byte ("*2\r \n $4\r \n ECHO\r \n $4\r \n TEST\r \n " ))
29+ Expect (err ).NotTo (HaveOccurred ())
30+
31+ n , err = conn .Read (buf )
32+ Expect (err ).NotTo (HaveOccurred ())
33+ response = string (buf [:n ])
34+ Expect (response ).To (ContainSubstring ("$4\r \n TEST" ))
35+ })
36+
37+ It ("should handle multiple empty commands without crashing" , func () {
38+ conn , err := net .Dial ("tcp" , SINGLEADDR )
39+ Expect (err ).NotTo (HaveOccurred ())
40+ defer conn .Close ()
41+
42+ for i := 0 ; i < 5 ; i ++ {
43+ _ , err = conn .Write ([]byte ("\r \n " ))
44+ Expect (err ).NotTo (HaveOccurred ())
45+ }
46+
47+ _ , err = conn .Write ([]byte ("*1\r \n $4\r \n PING\r \n " ))
48+ Expect (err ).NotTo (HaveOccurred ())
49+
50+ buf := make ([]byte , 1024 )
51+ n , err := conn .Read (buf )
52+ Expect (err ).NotTo (HaveOccurred ())
53+ response := string (buf [:n ])
54+ Expect (response ).To (ContainSubstring ("+PONG" ))
55+ })
56+ })
57+ })
0 commit comments