2008/04/16

Yahoo! に更新Pingを送る時には2引数で

Blogger は Weblogs.com にしか更新 ping を送らない為、自前で更新 ping を送るRubyスクリプトを書いて使っているのですが、何故か、http://api.my.yahoo.co.jp/RPC2への ping 送信だけ、失敗していました。

それもXML-RPC的な失敗ではなく、セッションが強制的に切断されている感じです。

気になるので tcpdump でパケットを調べたところ、Yahoo!(日本)の更新 ping サーバに対し、4引数を指定して weblogUpdates.ping メソッドを呼び出すと失敗することが分かりました。

つまり、
      res = c.call("weblogUpdates.ping", name, url, changesurl, category)
ではだめで、
      res = c.call("weblogUpdates.ping", name, url)
にしなければ、だめ、ということ。

で、その拒否の仕方なのですが、なんと、いきなり TCP の FIN を送りつけて、セッションを強制切断してきます。ぐぇー、な、なんて野蛮な... (^^;

米国Yahooの更新ping サーバ(http://api.my.yahoo.com/RPC2)へ同じメッセージを送ると、同じく受け入れは拒否されますが、XML-RPC的に「Bad request」とエラーメッセージを返してくれます(国毎に独自実装をもっているの...?)。

Weblogs.Com XML-RPC interfaceを見ると、4つの引数指定は可能ですし、Googleを始めとする他のサーバでは、普通に受け入れてくれているのですけれど。

というわけで、Yahoo!に更新 ping を打つ方は、是非2引数で打ちましょう。

0 件のコメント:

コメントを投稿