[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[postfix-jp: 2151] Re: sleep中にコネクションが切断されたことを検出したい
- Subject: [postfix-jp: 2151] Re: sleep中にコネクションが切断されたことを検出したい
- From: SATOH Kiyoshi <satoh0@xxxxxxxxx>
- Date: Tue, 11 Jul 2006 15:43:05 +0900
さとうです。
On Tue, 11 Jul 2006 15:19:12 +0900
Yoshisato YANAGISAWA <yanagisawa@xxxxxxxxxxxxxxxxxxx> wrote:
Subject: [postfix-jp: 2150] Re: sleep中にコネクションが切断されたことを検出したい
> この説明によるとvstream_feofやvstream_ferrorは直前に実施した操作でEOFや
> エラーが置きているかをしらべる関数のようですね。
んー、確かにそう書かれてますね。
もうちょっと見たらわかることなのに、良く確認せずに書いてすみません。
> vstream_feofを呼んだ場合もvstream_ferrorを呼んだ場合もvbufにあるフラグの
> チェックしかしていないため、これらを呼び続けても同じ結果しか返さない
確認しました。確かに、読んでるだけでフラグが変更されないので、同じ結果
だけしか返りませんね。
> 実装はしていませんが、アイディアとして一言言うなれば、
> こういう実装はどうでしょう?
>
> 1. わざとここでVSTREAM_GETC(以下略してgetc)を呼出す
> 2. if (greet pauseのタイムアウト時間を経過)
> タイムアウトして続きの処理を行う
> else /* Greet Pauseで指定した時間より前に何かの処理が行われた */
> case getcで何かのデータが取れた場合:
> Improper Pipeliningということで504終了。
> case getcでデータが取れなかった場合:
> if (vstream_feofあるいはvstream_ferrorがtrue)
> 相手が接続を閉じたと判断して接続を終了
> else
> getcがなんらかの理由でタイムアウトしたと判断して
> 経過時間分を減じて2の最初のif文からやりなおし。
確かにこれならいけそうかも。
というか自分もこれに近いことは考えて、でも、なにかデータ取れちゃったと
きにどうしよう、と思ってやめたんですが、こっちが返して無いうちになんか送っ
てきてたら504で終了、とすることで、あまり大きな修正にせずにすみますね。
> 何故selectが出てきたか良くわかりませんが、
> close(2)やshutdown(2)してくれた場合には検出できると思います。
> しかし、vstream_feofやvstream_ferrorだけではなくvstream_freadや
> VSTREAM_GETCなんかも呼ばないとEOFやエラーというフラグは立たないと
> 思います。
良く覚えてないんですが、selectってタイムアウト時間の設定って出来ません
でしたっけ?それで自動的に切れたときには、shutdownしたのと同じにしてくれ
るのかなと思いまして。
なんにしても、読むか書くかしないと、フラグの更新がされないわけですね。
大変参考になりました。ちょっと試してみます。
--
佐藤 潔 (SATOH Kiyoshi) <satoh@xxxxxxxxx> http://d.hatena.ne.jp/stealthinu/
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list
- Follow-Ups
-
- [postfix-jp: 2152] Re: sleep中にコネクションが切断されたことを検出したい, Takahiro Kambe
- [postfix-jp: 2153] Re: sleep中にコネクションが切断されたことを検出したい, IWAMOTO Kouichi
- References
-
- [postfix-jp: 2149] sleep中にコネクションが切断されたことを検出したい, SATOH Kiyoshi
- [postfix-jp: 2150] Re: sleep中にコネクションが切断されたことを検出したい, Yoshisato YANAGISAWA
[検索ページ]
[Postfix-JP ML Home]