diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/regress/lib/libtls/gotls/tls_test.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/regress/lib/libtls/gotls/tls_test.go b/src/regress/lib/libtls/gotls/tls_test.go index 2331ec0be6..3a430924a7 100644 --- a/src/regress/lib/libtls/gotls/tls_test.go +++ b/src/regress/lib/libtls/gotls/tls_test.go | |||
@@ -118,6 +118,73 @@ func TestTLSBasic(t *testing.T) { | |||
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
121 | func TestTLSSingleByteReadWrite(t *testing.T) { | ||
122 | ts, u, caFile, err := newTestServer() | ||
123 | if err != nil { | ||
124 | t.Fatalf("Failed to start test server: %v", err) | ||
125 | } | ||
126 | defer os.Remove(caFile) | ||
127 | defer ts.Close() | ||
128 | |||
129 | if err := Init(); err != nil { | ||
130 | t.Fatal(err) | ||
131 | } | ||
132 | |||
133 | cfg, err := NewConfig() | ||
134 | if err != nil { | ||
135 | t.Fatal(err) | ||
136 | } | ||
137 | defer cfg.Free() | ||
138 | cfg.SetCAFile(caFile) | ||
139 | |||
140 | tls, err := NewClient(cfg) | ||
141 | if err != nil { | ||
142 | t.Fatal(err) | ||
143 | } | ||
144 | defer tls.Free() | ||
145 | |||
146 | t.Logf("Connecting to %s", u.Host) | ||
147 | |||
148 | if err := tls.Connect(u.Host, ""); err != nil { | ||
149 | t.Fatal(err) | ||
150 | } | ||
151 | defer func() { | ||
152 | if err := tls.Close(); err != nil { | ||
153 | t.Fatalf("Close failed: %v", err) | ||
154 | } | ||
155 | }() | ||
156 | |||
157 | for _, b := range []byte("GET / HTTP/1.0\n\n") { | ||
158 | n, err := tls.Write([]byte{b}) | ||
159 | if err != nil { | ||
160 | t.Fatal(err) | ||
161 | } | ||
162 | if n != 1 { | ||
163 | t.Fatalf("Wrote byte %v, got length %d, want 1", b, n) | ||
164 | } | ||
165 | } | ||
166 | |||
167 | var body []byte | ||
168 | for { | ||
169 | buf := make([]byte, 1) | ||
170 | n, err := tls.Read(buf) | ||
171 | if err != nil { | ||
172 | t.Fatal(err) | ||
173 | } | ||
174 | if n == 0 { | ||
175 | break | ||
176 | } | ||
177 | if n != 1 { | ||
178 | t.Fatalf("Read single byte, got length %d, want 1", n) | ||
179 | } | ||
180 | body = append(body, buf...) | ||
181 | } | ||
182 | |||
183 | if !strings.Contains(string(body), httpContent) { | ||
184 | t.Errorf("Response does not contain %q", httpContent) | ||
185 | } | ||
186 | } | ||
187 | |||
121 | func TestTLSInfo(t *testing.T) { | 188 | func TestTLSInfo(t *testing.T) { |
122 | ts, u, caFile, err := newTestServer() | 189 | ts, u, caFile, err := newTestServer() |
123 | if err != nil { | 190 | if err != nil { |