HTTP代理兼容问题
最近收到客户反馈,在他们公司内网无法访问行情主站,远程看有使用HTTP代理,代理设置无异常;我们自己代理测试验证都是正常访问;
问题分析:
1. 首先取用户LOG分析,发现代理连接通过,在收到主站回包数据时分配缓冲区失败:
明显是数值过大导致内存分配失败,主动断开了主站连接,为什么会出现如此大的回包?
2. 分析代码逻辑发现,代理连上后,如果不先给主站发请求, 是不会收到主站数据的,为什么会先收到多余的脏数据?
3. 在客户机器上,用WireShark抓包分析代理连接过程:
与我们的代理服务器对比发现,多返回了一些数据, 测试代理只返回了“HTTP/1.1 200 Connection established";
4. 继续Review Http代理连接的处理逻辑,发现接收缓冲区固定了39个字符
5. 基本上可以判断问题原因, 因为后面代理返回数据未接收完整,导致后面行情协议解析出错
6. 临时增大了代理接收缓冲区,暂时解决;后面可以更好的方法是根据HTTP回包的Content-Length确定接收大小