たかが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オクテットとして計算するようだ。