レスが反映されないバグと、レスがダブってレス番異常が出るバグの原因が分かった。

2chに投げる差分取得のバイト数が間違ってた。
簡略して説明するので若干語弊があるが、詳しく知りたきゃググッてくれ。

差分取得するとき、鯖に
「何月何日何時何分何秒から後、更新されてる? 更新されてるなら、***バイト以降のデータを頂戴」
っていう形式でリクエストを投げる。
この時、***バイト数は、前回(鯖に投げる時刻)の鯖上のファイルサイズ。
で、鯖から送られてくるデータはgzip圧縮されている。
ヘッダに記載されているContent-Length:の値はファイルサイズじゃない。

差分取得したときは圧縮されないので問題ないのだが、問題が出るのはサイズ不一致で再取得したとき。
再取得時には、gzip圧縮される。
gzip圧縮されている状態のサイズを、ファイルサイズとして記録してしまうというバグがあった。

→サイズ
■■■■■■■■■■■■■   鯖上のdatサイズ
■■■■■■■■            gzip圧縮されたサイズ
           ↑      ↑
           │   本来記録すべきサイズ(A)
        転送されたデータのサイズ(B)

で、次の巡回時、転送されたデータのサイズ(B)で差分取得してしまう。
そうすると、
■■■■■■■■■■■■■□   鯖上のdatサイズ
■■■■■■■■☆☆☆☆☆□   gzip圧縮されたサイズ
           ↑      ↑
           │    正しいリクエスト位置
       間違ったリクエスト位置
となる。
必要なのは□部分だけなのだが、間違って投げたリクエストのせいで☆分まで受信してしまう。
通常は、その後のチェックで「サイズ不一致再取得」となる。
が、チェック方法は「受信したデータの先頭が改行文字か否か」、という方法なので、稀に間違った位置でありながら
先頭がたまたま改行文字になることもある。
その結果、正しいデータだと勘違いしてdファイルに追加書き込みしてしまう。
コレが、レスがダブル原因。

さらに、datサイズに圧縮されたサイズが書き込まれているため、実際のサイズより少ない位置で検索ポイントを切り上げてしまう。
これが、レスが反映されないバグの原因。

問題は・・・

・・・ソースのバックアップのかなり古いモノを開いても、このバグが確認できるということ。
で、このバグを修正してからスレ巡回させたら、キャッシュファイルの破損があちこちにあるらしく落ちる落ちるwww