@@ -10,6 +10,7 @@ using swoole::Pipe;
10
10
using swoole::Socks5Proxy;
11
11
using swoole::String;
12
12
using swoole::network::AsyncClient;
13
+ using swoole::network::SyncClient;
13
14
using swoole::network::Client;
14
15
using swoole::test::create_http_proxy;
15
16
using swoole::test::create_socks5_proxy;
@@ -249,6 +250,58 @@ TEST(client, ssl_1) {
249
250
ASSERT_TRUE (buf.contains (" Baidu" ));
250
251
}
251
252
253
+ TEST (client, ssl_sendfile) {
254
+ bool connected = false ;
255
+ bool closed = false ;
256
+ String buf (65536 );
257
+
258
+ swoole_event_init (SW_EVENTLOOP_WAIT_EXIT);
259
+
260
+ auto file = swoole::make_tmpfile ();
261
+ file.write (SW_STRL (TEST_REQUEST_BAIDU));
262
+
263
+ Client client (SW_SOCK_TCP, true );
264
+ client.enable_ssl_encrypt ();
265
+ client.onConnect = [&connected, &file](Client *cli) {
266
+ connected = true ;
267
+ cli->sendfile (cli, file.get_path ().c_str (), 0 , file.get_size ());
268
+ };
269
+
270
+ client.onError = [](Client *cli) {};
271
+ client.onClose = [&closed](Client *cli) { closed = true ; };
272
+ client.onReceive = [&buf](Client *cli, const char *data, size_t length) { buf.append (data, length); };
273
+
274
+ ASSERT_EQ (client.connect (&client, TEST_DOMAIN_BAIDU, 443 , -1 , 0 ), 0 );
275
+
276
+ swoole_event_wait ();
277
+
278
+ ASSERT_TRUE (connected);
279
+ ASSERT_TRUE (closed);
280
+ ASSERT_TRUE (buf.contains (" Baidu" ));
281
+ }
282
+
283
+ TEST (client, sync_ssl_sendfile) {
284
+ auto file = swoole::make_tmpfile ();
285
+ file.write (SW_STRL (TEST_REQUEST_BAIDU));
286
+
287
+ SyncClient client (SW_SOCK_TCP);
288
+ ASSERT_TRUE (client.connect (TEST_DOMAIN_BAIDU, 443 , -1 ));
289
+ ASSERT_TRUE (client.enable_ssl_encrypt ());
290
+ ASSERT_TRUE (client.sendfile (file.get_path ().c_str ()));
291
+
292
+ String buf (65536 );
293
+ while (true ) {
294
+ ssize_t nr = client.recv (buf.str , buf.size - buf.length );
295
+ if (nr <= 0 ) {
296
+ break ;
297
+ }
298
+ buf.grow (nr);
299
+ }
300
+ client.close ();
301
+ ASSERT_TRUE (buf.contains (" baidu.com" ));
302
+ unlink (file.get_path ().c_str ());
303
+ }
304
+
252
305
static void proxy_async_test (Client &client, bool https) {
253
306
swoole_event_init (SW_EVENTLOOP_WAIT_EXIT);
254
307
0 commit comments