#iron #request #drain

iron-drain

Iron中间件,确保在重用套接字之前完全读取请求

3个版本

使用旧的Rust 2015

0.1.2 2017年1月20日
0.1.1 2016年4月2日
0.1.0 2016年4月2日

20#drain

每月21次下载

MIT 许可证

4KB

这是一个小巧的Rust包,包含一个Iron中间件。该中间件旨在解决hyper中的bug,该bug可能导致套接字在没有完全读取上一个请求的情况下被重用,这总是会导致下一个请求在解析时失败。

有关使用方法,请参阅文档。


lib.rs:

Iron中间件,确保在重用套接字之前完全读取请求

Hyper保持套接字活跃以在请求之间重用它们,以提高速度。如果一个不应该有主体的请求发送了一个主体,或者如果服务器没有读取请求的全部主体,那么下一个请求将因为网络缓冲区中剩余的数据而被损坏。

此模块中的Drain适配器定义了一个iron AfterMiddleware,确保在下一个请求之前清空缓冲区,无论当前请求是否成功或失败。它读取一个可配置的限制,如果有更多数据剩余,它将关闭套接字。

使用方法

extern crate iron;
extern crate iron_drain;

use iron::prelude::*;
use iron::status;
use iron_drain::Drain;

let mut srv = Chain::new(|_: &mut Request| {
    Ok(Response::with((status::Ok, "Hello world!")))
});
srv.link_after(Drain::new());
Iron::new(srv).http("localhost:3000").unwrap();

依赖关系

~6MB
~138K SLoC