HTTP代理兼容问题

       最近收到客户反馈,在他们公司内网无法访问行情主站,远程看有使用HTTP代理,代理设置无异常;我们自己代理测试验证都是正常访问;

问题分析:

 1. 首先取用户LOG分析,发现代理连接通过,在收到主站回包数据时分配缓冲区失败:

        HTTP代理兼容问题

明显是数值过大导致内存分配失败,主动断开了主站连接,为什么会出现如此大的回包?

2. 分析代码逻辑发现,代理连上后,如果不先给主站发请求, 是不会收到主站数据的,为什么会先收到多余的脏数据?

3. 在客户机器上,用WireShark抓包分析代理连接过程:

HTTP代理兼容问题

与我们的代理服务器对比发现,多返回了一些数据, 测试代理只返回了“HTTP/1.1 200 Connection established";

4. 继续Review Http代理连接的处理逻辑,发现接收缓冲区固定了39个字符

5. 基本上可以判断问题原因, 因为后面代理返回数据未接收完整,导致后面行情协议解析出错

6. 临时增大了代理接收缓冲区,暂时解决;后面可以更好的方法是根据HTTP回包的Content-Length确定接收大小