[Anthy-dev 1789] Re: uim-helperでのwrite(2)とselect(2)

Back to archive index

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*****



Anthy-dev メーリングリストの案内
Back to archive index