徒然なる日々を送るソフトウェアデベロッパーの記録(2)

技術上思ったことや感じたことを気ままに記録していくブログです。さくらから移設しました。

たかが2オクテット、されど2オクテット

久々に PHP に post でファイルを送りつける C++ コードを書いたら、PHP 側に
エラーコード 3: PARTIAL UPLOAD という正体不明のエラーが出た。

PHP の問題だろうと思って放っておいたが、クライアント側の問題だった
(初歩的なミスですいません)。

multipart/form-data の最後はデリミタ + "--" で終了するが、
ここを "--\r\n" と書いてしまい、Content-Length の計算も最後の
"\r\n" を含んでしまっていたため、PHP は途中で転送が終了したと
判定したようだ。

不思議なのは、このコードでもたまに転送が成功してしまうことだ。
こういうバグは見つけずらい。

なお、"\r\n" は1オクテットとして計算すべしという文献もあるが、
PHP は2オクテットとして計算するようだ。