TinyWebServer icon indicating copy to clipboard operation
TinyWebServer copied to clipboard

process_read()可能有逻辑错误

Open gitzhangjz opened this issue 3 years ago • 4 comments

http_conn.cpp第348行,如果当前m_check_stateCHECK_STATE_REQUESTLINE或者CHECK_STATE_HEADER,并且parse_line()返回了LINE_BAD,按照程序的逻辑process_read()会返回NO_REQUEST(请求不完整),这应该不对吧,在解析请求行和头部的时候parse_line()返回LINE_OPEN的时候process_read才返回NO_REQUEST。 当parse_line()返回LINE_BADprocess_read应当返回BAD_REQUEST 不知道我表达的时候清楚

gitzhangjz avatar Feb 12 '22 06:02 gitzhangjz

老哥我新手,代码都可以编译通过,但是浏览器不能访问服务器,你的访问操作流程可以说一说吗?小生感激不尽。

image

czy1805209120 avatar Feb 12 '22 08:02 czy1805209120

我也是新手学习的哈,你./server没有正常运行,正常运行后命令行是输入不了命令的。

看一下目录里的2022_xx_xx_ServerLog日志文件,里边有错误信息。

我昨天也有错误,是mysql数据库没配置好,日志里会有"2022-02-10 18:47:16.305017 [erro]: MySQL Error"这样的字样,

然后用gdb调试定位错误尝试解决的。(项目的readme里有数据库的配置说明)

https://www.cnblogs.com/rookiezjz/p/15880674.html

加油!

gitzhangjz avatar Feb 12 '22 09:02 gitzhangjz

http_conn.cpp第348行,如果当前m_check_stateCHECK_STATE_REQUESTLINE或者CHECK_STATE_HEADER,并且parse_line()返回了LINE_BAD,按照程序的逻辑process_read()会返回NO_REQUEST(请求不完整),这应该不对吧,在解析请求行和头部的时候parse_line()返回LINE_OPEN的时候process_read才返回NO_REQUEST。 当parse_line()返回LINE_BADprocess_read应当返回BAD_REQUEST 不知道我表达的时候清楚

目前的代码确实有这个问题,当 parse_line() 返回 LINE_BAD 时,process_read() 应该返回 BAD_REQUEST,表示请求有误,但实际上因为无法进入 while 循环而返回 NO_REQUEST,表示请求不完整。应该在 while 循环后对 parse_line() 的返回值再进行判断而不是直接返回 NO_REQUEST

taifuer avatar Mar 23 '22 06:03 taifuer

老哥我新手,代码都可以编译通过,但是浏览器不能访问服务器,你的访问操作流程可以说一说吗?小生感激不尽。

image

看下日志输出

qinguoyi avatar Sep 26 '22 09:09 qinguoyi