......Firefox通过sptunnel浏览页面, 页面已经成功显示.........................
......等待1-2秒后, sptunnel打印出下面的日志.................................
sptunnel[15807]: session(1025.0) read error, errno 0, status 0
sptunnel[15807]: session(1025.0) error, r 320(0), w 492(0), i 0, o 0,
s 1(1023)
sptunnel[15807]: session(1025.0) invalid, unknown FROM
sptunnel[15807]: session(1024.0) read error, errno 0, status 0
sptunnel[15807]: session(1024.0) error, r 492(0), w 320(0), i 0, o 0,
s 0(1024)
sptunnel[15807]: session(1024.0) invalid, unknown FROM
进一步查看日志的来源, 是在speventcb.cpp的179行, void SP_EventCallback :: onRead()函数
内.
从日志可以看出, 此时errno==0, 跟踪进去, 也可以看到len==0.
当len==0 && errno == 0的时候, 通常意味着数据已经全部读完, 此时似乎不应该再调用addEvent( session,
EV_READ, -1 ); 而应该停止read, 设置标志位, 等待write结束后, 关闭session.
上面这些日志显然并不应该出现.
我刚刚接触spserver, 对event-driven i/o并不熟悉, 上面说的也不知道对不对, 请指教.