Etsushi Kato
ekato****@ees*****
2005年 2月 9日 (水) 00:32:16 JST
On Tue, Feb 08, 2005 at 06:32:32PM +0900, Etsushi Kato <ekato****@ees*****> wrote: > socket に non block io を利用して、write(2) が失敗し、 > EAGAIN の場合はリトライするように変更してみました。r609です。 > > この変更で、もれなくメッセージを受け渡すことができるようになりましたが、 > uim-xim のように IM context がたくさんある場合に、custom 後の > prop のアップデートで DoS 的に永遠に EAGAIN になってしまう場合が > 稀にありました。 > しょうがないので、uim_helper_send_message において、 EAGAIN の > 場合には usleep させてからリトライという手でとりあえず回避しました。 > このあたりはもうすこしまともに修正したほうがいいような気もします… uim-helper-server は上の変更で、すべての通信をもれなく write(2) できる ようになったはずです。 uim_helper_send_message() のほうは、非常に高頻度で同じ fd に write(2) が起きた場合 timeout してしまう可能性があるのですが、bridge での prop_{list,label} のコールバックを、フォーカスしているコンテキストでの みで行なうことによって問題を回避できたと思います。ヤマケンさんの方でも 様子を見て頂けますか? -- Etsushi Kato ekato****@ees*****