Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vim-cmdsrv-noxをpushしないか? #125

Closed
koron opened this issue Jan 12, 2012 · 18 comments
Closed

vim-cmdsrv-noxをpushしないか? #125

koron opened this issue Jan 12, 2012 · 18 comments

Comments

@koron
Copy link
Member

koron commented Jan 12, 2012

@ynkdir さんによる http://code.google.com/r/yukihironakadaira-vim-cmdsrv-nox/
Xが無くてもcmdsrv機能が動くようになるというもの。

セキュリティ的な対応もバッチリっぽいのにもかかわらずvim-devでの反応がない? Bram氏のTODOに入ってんのかな?

このissueは取り込まれるように働きかけるためのissueとしましょう。

@mattn
Copy link
Member

mattn commented Jan 12, 2012

https://groups.google.com/d/msg/vim_dev/dm8nvb5b3do/-SzW7dq4EBIJ

Thanks. This is a big change. I won't have time for this soon. I hope some others will try it out.

@koron
Copy link
Member Author

koron commented Jan 12, 2012

I hope some others will try it out.

サクラをするチャンス! ってか +kaoriya に取り込んで、大量の人柱を立てるか?w

@Shougo
Copy link
Member

Shougo commented Jan 12, 2012

その手はありますね。

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

TODOというほどのものでもないんですが気になってることをいちおう書いておきます。

  • ソケットへのアクセスはディレクトリの権限で制限してるので getpeer* はいらない気がするけどなんとなく残している。
  • Windowsのnamed pipeのアクセス制限はどうなってるのか。Windowsはマルチユーザーない?
  • ソケットファイルの名前をurlエンコードっぽくしてるけど&encをそのまま使ってるのでutf-8にしたほうがいいのか。
  • /tmp とかハードコーディングしてる。
  • ソケット通信でEOFをデータの終了としてるけど、データサイズを送受信したほうがよさそうな。
  • メッセージ書式。今は "Key1Value1Key2Value2" という感じ。パースを楽するため。
  • 異常終了するとソケットファイルが残る。/tmp に作ってるけど削除されるかどうかはシステムしだい。
  • ドキュメント。
  • ぶっちゃけ自分では使ってないので不具合たくさんありそう。日常的に client/server を活用することがない。

@Shougo
Copy link
Member

Shougo commented Jan 12, 2012

異常終了するとソケットファイルが残る。/tmp に作ってるけど削除されるかどうかはシステムしだい。

Vimの一時ファイル自体クラッシュすると残ってしまうから、これは仕方ないでしょう。

ハードコードな部分はこれから修正しないとだめでしょうね。
/tmpについては、Vimが使っているテンポラリなディレクトリではだめなんですか?

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

各Vimインスタンスが同じパスを参照できればいいのでどこでもいいんですが
Vimが自動で作る一時ディレクトリはインスタンス毎なのでだめだと思います。

で、思い出したんですがサーバー一覧をソケットファイルの一覧からとってるので --serverlist で死んだサーバーがでたりします。まあしょうがないですが。

@mattn
Copy link
Member

mattn commented Jan 12, 2012

そのソケットファイルのファイル名にプロセスIDが埋まっているなら生死確認は出来るかも。

@mattn
Copy link
Member

mattn commented Jan 12, 2012

@ynkdir 久々最新取ってwin32で試したんですが、結構遅いすね。調整すれば速くなります?

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

むぅそうですか。
なんでしょうねぇ。
調整できそうなポイントはなかったと思います。

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

あーあと気になるといえば複数のサーバー間で互いに呼び出し合うような場合に問題ないかどうかきっちり検証できてないです。問題ないとは思いますが。

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

あと同時接続数の問題もありました。
"# define CMDSRV_INSTANCES 5" なんですが。
リクエストを受けて結果を返すまでを一つの接続でやってるので
ちょっとアクセスが立て込んだり互いに呼び出しあったりするだけで制限に到達してしまいます。
受信と送信の接続を分ける (現実装と同じ) といいと思うんですがなんか複雑になりそうなのでとりあえず今の形になってます。

@ynkdir
Copy link
Member

ynkdir commented Jan 12, 2012

そのソケットファイルのファイル名にプロセスIDが埋まっているなら生死確認は出来るかも。

そうするとサーバーIDとパスが一意に定まらないのでタイミングによって同じIDのサーバーができてしまって
それを防ぐにはロックしたりなんなりしないといけなくて面倒くさいと思った記憶があります。

死活チェックのために接続してみてエラーをみるというのもやってみたんですが
IOでウェイトがかかったり同時接続数の制限にかかったり(開放に時間がかかる?)でうまくいきませんでした。

どうしても死活チェックが必要ならそれしかないですかねぇ。

@mattn
Copy link
Member

mattn commented Apr 19, 2013

#367

@Shougo
Copy link
Member

Shougo commented Apr 19, 2013

これも一年放置されてしまっているので、Vim 7.4が出るときにpushできないですかね?

@Shougo
Copy link
Member

Shougo commented May 11, 2013

ようやくVim 7.4の話が出てきているので、パッチの完成度を上げて推すのは今がチャンスだと思いますが……

@thinca
Copy link
Member

thinca commented May 11, 2013

すでに mattn さんが言及してますね。
https://groups.google.com/d/msg/vim_dev/ZWWgK9aXQ2Y/R2-HfFTLs2YJ

@koron
Copy link
Member Author

koron commented May 19, 2013

とりあえずpushはしたので、一旦閉じます。
7.4に取り込まれなかったら、あたらしいissue作って再チャレンジ、かな。

@koron koron closed this as completed May 19, 2013
@Shougo
Copy link
Member

Shougo commented May 19, 2013

そうですね。他のパッチも多いですし……。

karino2 added a commit to karino2/vim that referenced this issue Sep 21, 2016
Original version of clientserver feature depend on X.
But this feature is also useful for other environment.
This patch enable clientserver feature without X.

Apply patch of:
https://gist.github.com/ynkdir/996d53a402f533fed518

See disucussion:
vim-jp/issues#367
vim-jp/issues#125
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants