记录一个CSAPP中Tiny Web Server的问题
Tiny Web Server读取客户端发送来的请求头并将其输出到Terminal,此外不对首部的字段做其他处理。读取首部的代码如下:
1 |
|
该函数存在的一个问题是,若客户端的连接断开,Rio_readlineb(rp, buf, MAXLINE)
将读取到EOF
,而循环判断条件为strcmp(buf, "\r\n")
,由于无法从客户端读取到数据,buf
内容将永远不会更新,该循环成为死循环。为避免这种情况,Rio_readlineb(rp, buf, MAXLINE)
返回0
时函数应返回:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!