TinyWebServer
TinyWebServer copied to clipboard
process_read()可能有逻辑错误
http_conn.cpp
第348行,如果当前m_check_state
是CHECK_STATE_REQUESTLINE
或者CHECK_STATE_HEADER
,并且parse_line()
返回了LINE_BAD
,按照程序的逻辑process_read()
会返回NO_REQUEST
(请求不完整),这应该不对吧,在解析请求行和头部的时候parse_line()
返回LINE_OPEN
的时候process_read
才返回NO_REQUEST
。
当parse_line()
返回LINE_BAD
,process_read
应当返回BAD_REQUEST
不知道我表达的时候清楚
老哥我新手,代码都可以编译通过,但是浏览器不能访问服务器,你的访问操作流程可以说一说吗?小生感激不尽。
我也是新手学习的哈,你./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
加油!
http_conn.cpp
第348行,如果当前m_check_state
是CHECK_STATE_REQUESTLINE
或者CHECK_STATE_HEADER
,并且parse_line()
返回了LINE_BAD
,按照程序的逻辑process_read()
会返回NO_REQUEST
(请求不完整),这应该不对吧,在解析请求行和头部的时候parse_line()
返回LINE_OPEN
的时候process_read
才返回NO_REQUEST
。 当parse_line()
返回LINE_BAD
,process_read
应当返回BAD_REQUEST
不知道我表达的时候清楚
目前的代码确实有这个问题,当 parse_line()
返回 LINE_BAD
时,process_read()
应该返回 BAD_REQUEST
,表示请求有误,但实际上因为无法进入 while 循环而返回 NO_REQUEST
,表示请求不完整。应该在 while 循环后对 parse_line()
的返回值再进行判断而不是直接返回 NO_REQUEST
。
老哥我新手,代码都可以编译通过,但是浏览器不能访问服务器,你的访问操作流程可以说一说吗?小生感激不尽。
看下日志输出