@@ -311,10 +311,11 @@ fn main() {
311
311
312
312
// Process all readable streams.
313
313
for s in client. conn . readable ( ) {
314
+ println ! ( "reading stream {}" , s) ;
314
315
while let Ok ( ( read, fin) ) =
315
316
client. conn . stream_recv ( s, & mut buf)
316
317
{
317
- debug ! (
318
+ println ! (
318
319
"{} received {} bytes" ,
319
320
client. conn. trace_id( ) ,
320
321
read
@@ -329,8 +330,6 @@ fn main() {
329
330
stream_buf. len( ) ,
330
331
fin
331
332
) ;
332
-
333
- handle_stream ( client, s, stream_buf, "examples/root" ) ;
334
333
}
335
334
}
336
335
}
@@ -443,87 +442,18 @@ fn validate_token<'a>(
443
442
Some ( quiche:: ConnectionId :: from_ref ( & token[ addr. len ( ) ..] ) )
444
443
}
445
444
446
- /// Handles incoming HTTP/0.9 requests.
447
- fn handle_stream ( client : & mut Client , stream_id : u64 , buf : & [ u8 ] , root : & str ) {
448
- let conn = & mut client. conn ;
449
-
450
- if buf. len ( ) > 4 && & buf[ ..4 ] == b"GET " {
451
- let uri = & buf[ 4 ..buf. len ( ) ] ;
452
- let uri = String :: from_utf8 ( uri. to_vec ( ) ) . unwrap ( ) ;
453
- let uri = String :: from ( uri. lines ( ) . next ( ) . unwrap ( ) ) ;
454
- let uri = std:: path:: Path :: new ( & uri) ;
455
- let mut path = std:: path:: PathBuf :: from ( root) ;
456
-
457
- for c in uri. components ( ) {
458
- if let std:: path:: Component :: Normal ( v) = c {
459
- path. push ( v)
460
- }
461
- }
462
-
463
- info ! (
464
- "{} got GET request for {:?} on stream {}" ,
465
- conn. trace_id( ) ,
466
- path,
467
- stream_id
468
- ) ;
469
-
470
- let body = std:: fs:: read ( path. as_path ( ) )
471
- . unwrap_or_else ( |_| b"HELLO!!\r \n " . to_vec ( ) ) ;
472
-
473
- info ! (
474
- "{} sending response of size {} on stream {}" ,
475
- conn. trace_id( ) ,
476
- body. len( ) ,
477
- stream_id
478
- ) ;
479
-
480
- let written = match conn. stream_send ( stream_id, & body, true ) {
481
- Ok ( v) => v,
482
-
483
- Err ( quiche:: Error :: Done ) => 0 ,
484
-
485
- Err ( e) => {
486
- error ! ( "{} stream send failed {:?}" , conn. trace_id( ) , e) ;
487
- return ;
488
- } ,
489
- } ;
490
-
491
- if written < body. len ( ) {
492
- let response = PartialResponse { body, written } ;
493
- client. partial_responses . insert ( stream_id, response) ;
494
- }
495
- }
496
- }
497
-
498
445
/// Handles newly writable streams.
499
446
fn handle_writable ( client : & mut Client , stream_id : u64 ) {
500
447
let conn = & mut client. conn ;
448
+ // end early
449
+ match conn. stream_send ( stream_id, & [ ] , true ) {
450
+ Ok ( ..) => ( ) ,
501
451
502
- debug ! ( "{} stream {} is writable" , conn. trace_id( ) , stream_id) ;
503
-
504
- if !client. partial_responses . contains_key ( & stream_id) {
505
- return ;
506
- }
507
-
508
- let resp = client. partial_responses . get_mut ( & stream_id) . unwrap ( ) ;
509
- let body = & resp. body [ resp. written ..] ;
510
-
511
- let written = match conn. stream_send ( stream_id, body, true ) {
512
- Ok ( v) => v,
513
-
514
- Err ( quiche:: Error :: Done ) => 0 ,
515
-
516
- Err ( e) => {
517
- client. partial_responses . remove ( & stream_id) ;
518
-
519
- error ! ( "{} stream send failed {:?}" , conn. trace_id( ) , e) ;
520
- return ;
521
- } ,
522
- } ;
452
+ Err ( quiche:: Error :: Done ) => ( ) ,
523
453
524
- resp. written += written;
454
+ Err ( e) => {
455
+ error ! ( "{} stream send failed {:?}" , conn. trace_id( ) , e) ;
525
456
526
- if resp. written == resp. body . len ( ) {
527
- client. partial_responses . remove ( & stream_id) ;
457
+ } ,
528
458
}
529
459
}
0 commit comments