• 代理容不下的一个空格


          在做一个语音云的代理,今天突然发现代理的最近的好几个版本都不能代理语音云了,客户端总是报告返回结果超时。

          困惑,之前测试也没用报这方面的bug啊,功能是通过的啊,怎么到现在才爆出这样一个bug呢。

          开始怀疑:

        (1)由于在改变架构后的所有版本都有这个问题,开始怀疑改变架构时,功能就没有正确实现。可是,我清楚的记得,改变架构后,自己进行了测试,通过后才提交的版本啊。

        (2) 由于我经常给测试自己编译的版本让他们测试,我又开始怀疑我编译的版本用到了一直没有传到svn上的代码。可这怎么可能呢,大哥?没次咱都是把代码提交完啊。但是,我还是努力地找回我删到回收站的代码,查看他们和现有代码的差异,没有什么收获。

        (3)我也怀疑是服务器的木马病毒搞的鬼,因为最近服务器在闹毒。可是midomi和识别都没有问题啊?

    (4)根据打屏可以看到,我的确将结果http转发给了客户端啊,可是客户端为什么没有收到呢?我有点儿怀疑iocp了(可感觉告诉我,要先怀疑自己啊)。我也联想到了上次LoadRunner报告超时是因为脚本中将接收的字节数写大了,导致它认为没有收完数据。(有点儿接近了,^_^)

    最终结局:

    抓包看,发现语音云的响应http中的有些头域竟然在值后面多了个空格,导致我自己生成的http的长度头域值比实际打了1。最终导致客户端认为我没有将完整的数据给它。

            解释一下:代理对语音云的http处理逻辑是,收一个完整的http,解析处理,使用http解析结果生成一个http,转发给对端。


    总结:

    我必须承认,今天这个bug让我汗流不止,心跳不停,让我紧张地没有吃好晚饭。有bug怕什么,这不是也被咱解决了吗?

  • 相关阅读:
    tensorflow的日常Demo
    docker 搭建Mysql集群
    简单版nginx lua 完成定向流量分发策略
    简单版nginx lua 完成流量上报于中间件
    redis 数据备份持久化方案
    nginx 场景业务汇总 (中)
    nginx 场景业务汇总 (初)
    Sentinel 哨兵 实现redis高可用
    工地信息化——施工现场网格化管理系统实施小记
    小记 xian80 坐标转换 wgs84
  • 原文地址:https://www.cnblogs.com/yeta/p/2819762.html
Copyright © 2020-2023  润新知