Post がうまくいかない件の調査

はてなダイアリーの日記投稿ページの form タグをコピーして action だけ別のところにすげかえてリクエストの dump をとってみた。
見事に Content-length: 0 だ。これで投稿させろというのは確かに無理だ。
Content-length 0 ってのは、send の失敗じゃなくてデータを作るところの問題だろう。

w3m on Mona

POST / HTTP/1.0
User-Agent: w3m/0.5.2+cvs-1.1001
Accept: text/html, text/*;q=0.5, image/*
Accept-Encoding: 
Accept-Language: en;q=1.0
Host: 10.12.0.37:8181
Referer: http://10.12.0.37/
Content-type: multipart/form-data; boundary=------------------------------111-1073000904-10730767040
Content-length: 0

w3m on Linux

POST / HTTP/1.0
User-Agent: w3m/0.5.2
Accept: text/html, text/*;q=0.5, image/*, application/*, audio/*, multipart/*
Accept-Encoding: gzip, compress, bzip, bzip2, deflate
Accept-Language: ja;q=1.0, en;q=0.5
Host: 10.12.0.37:8181
Referer: http://10.12.0.37/
Content-type: multipart/form-data; boundary=------------------------------166016743936169318400
Content-length: 1536

--------------------------------166016743936169318400
Content-Disposition: form-data; name="dummy"

1
--------------------------------166016743936169318400
Content-Disposition: form-data; name="mode"

enter
--------------------------------166016743936169318400
Content-Disposition: form-data; name="rkm"

l0KlQD5N6QzmRaYcB1HhXQ
--------------------------------166016743936169318400
Content-Disposition: form-data; name="timestamp"


--------------------------------166016743936169318400
Content-Disposition: form-data; name="year"

2010
--------------------------------166016743936169318400
Content-Disposition: form-data; name="month"

06
--------------------------------166016743936169318400
Content-Disposition: form-data; name="day"

02
--------------------------------166016743936169318400
Content-Disposition: form-data; name="title"


--------------------------------166016743936169318400
Content-Disposition: form-data; name="edit"

保存する
--------------------------------166016743936169318400
Content-Disposition: form-data; name="body"

Hello, World
--------------------------------166016743936169318400
Content-Disposition: form-data; name="image"; filename=""
Content-Type: application/octet-stream


--------------------------------166016743936169318400
Content-Disposition: form-data; name="imagetitle"


--------------------------------166016743936169318400
Content-Disposition: form-data; name="tburl"


--------------------------------166016743936169318400--

追記

enctype="multipart/form-data"のときにのみ起きるようだ。勘が冴えてる。

追記2

form_write_data の fprintf が temp file ではなくて stdout を向いているように見える。