Skip to content

Commit 8b188c4

Browse files
committed
wip
* Related #20 [ci skip]
1 parent ef8d96c commit 8b188c4

File tree

1 file changed

+9
-79
lines changed

1 file changed

+9
-79
lines changed

src/bin/serverTest.rs

+9-79
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,11 @@ fn main() {
311311

312312
// Process all readable streams.
313313
for s in client.conn.readable() {
314+
println!("reading stream {}", s);
314315
while let Ok((read, fin)) =
315316
client.conn.stream_recv(s, &mut buf)
316317
{
317-
debug!(
318+
println!(
318319
"{} received {} bytes",
319320
client.conn.trace_id(),
320321
read
@@ -329,8 +330,6 @@ fn main() {
329330
stream_buf.len(),
330331
fin
331332
);
332-
333-
handle_stream(client, s, stream_buf, "examples/root");
334333
}
335334
}
336335
}
@@ -443,87 +442,18 @@ fn validate_token<'a>(
443442
Some(quiche::ConnectionId::from_ref(&token[addr.len()..]))
444443
}
445444

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-
498445
/// Handles newly writable streams.
499446
fn handle_writable(client: &mut Client, stream_id: u64) {
500447
let conn = &mut client.conn;
448+
// end early
449+
match conn.stream_send(stream_id, &[], true) {
450+
Ok(..) => (),
501451

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) => (),
523453

524-
resp.written += written;
454+
Err(e) => {
455+
error!("{} stream send failed {:?}", conn.trace_id(), e);
525456

526-
if resp.written == resp.body.len() {
527-
client.partial_responses.remove(&stream_id);
457+
},
528458
}
529459
}

0 commit comments

Comments
 (0)