Project

General

Profile

Backport #4231

configure.bat --with-winsock2 が socket/extconf.rbに効いていない

Added by katonbo (Masahiro Kitajima) over 8 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
[ruby-dev:42945]

Description

=begin
 win32/configure.bat の --with-winsock2 オプションが、ext/socket/extconf.rb に伝わるようになっていないために、socket.so が ws2_32.dll をリンクせず、常に wsock32.dll をリンクしています。
=end

History

#1

Updated by shyouhei (Shyouhei Urabe) over 8 years ago

  • Status changed from Open to Assigned
  • Assignee set to usa (Usaku NAKAMURA)

=begin

=end

#2

Updated by shyouhei (Shyouhei Urabe) over 8 years ago

=begin
(2011/01/05 15:04), KOSAKI Motohiro wrote:

wikipediaで調べたところ、Windows98以降でwinsock2が使えるようですので
winsock1のサポートを打ち切るってのが一番簡単だと思うのですがどうでしょうか

将来のバージョンについては完璧に同意しますが、1.8.7に関して今サポートしてるも
のを突如打ち切るのはさすがに躊躇してしまいます。

=end

#3

Updated by usa (Usaku NAKAMURA) over 8 years ago

=begin
こんにちは、なかむら(う)です。

In message "[ruby-dev:42946] Re: [Ruby 1.8-Bug#4231][Open] configure.bat --with-winsock2 が socket/extconf.rbに効いていない"
on Jan.05,2011 15:04:37, kosaki.motohiro@jp.fujitsu.com wrote:

Bug #4231: configure.bat --with-winsock2 が socket/extconf.rbに効いていない
http://redmine.ruby-lang.org/issues/show/4231

起票者: Masahiro Kitajima
ステータス: Open, 優先度: Normal
ruby -v: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]

 win32/configure.bat の --with-winsock2 オプションが、ext/socket/extconf.rb に伝わるようになっていないために、socket.so が ws2_32.dll をリンクせず、常に wsock32.dll をリンクしています。

wikipediaで調べたところ、Windows98以降でwinsock2が使えるようですので
winsock1のサポートを打ち切るってのが一番簡単だと思うのですがどうでしょうか

1.8の途中でwinsock2サポートを入れたときに、1.8は互換性維持の
ため選択性、1.9はwinsock2必須、と決断しました。
今になって覆す理由はないと感じます。

それでは。
--
U.Nakamura usa@garbagecollect.jp

=end

#4

Updated by usa (Usaku NAKAMURA) over 8 years ago

=begin
こんにちは、なかむら(う)です。

In message "[ruby-dev:42945] [Ruby 1.8-Bug#4231][Open] configure.bat --with-winsock2 が socket/extconf.rbに効いていない"
on Jan.05,2011 14:52:04, redmine@ruby-lang.org wrote:

 win32/configure.bat の --with-winsock2 オプションが、ext/socket/extconf.rb に伝わるようになっていないために、socket.so が ws2_32.dll をリンクせず、常に wsock32.dll をリンクしています。

ご指摘のバグはありますけど、なんかうまいことws2_32.dllにもリ
ンクされてますね。
なのでバグってるけど結果はオーライだという...

ちなみに、htonl()とntohs()だけがsocket.soからwinsock32.dllか
らリンクされ(これらはws2_32.dllにforwardされる)、getaddrinfo()、
getnameinfo()、freeaddrinfo()がws2_32.dllからリンクされるよう
になると思います。
(残りのwinsock関数はruby本体がリンクするので問題ない)

それでは。
--
U.Nakamura usa@garbagecollect.jp

=end

#5

Updated by katonbo (Masahiro Kitajima) over 8 years ago

=begin

ところで、1.8.7は--with-winsock2が効いてない状況で3年バグ報告が
なかったのだから実害が出るまで放置ってのはダメなんでしょうか?

 winsock2 対応版を使っているつもりで wsock32.dll を使っている人
が居るはずですが、問題は表面化しないのかも知れませんね。

 バイナリ配布物では、
arton さんの ActiveScriptRuby(1.8.7.35) の socket.so は wsock32.dll、
usa さんの ruby-1.9.2-p136-i386-mswin32.zip の socket.so は ws2_32.dll
がリンクされていました。

実はこのバグは[ruby-dev:42944] [Ruby 1.8-Bug#4230]の修正に関係してたりする??
あっちはlocalhostが動かないとか言ってるから必要度が高いと思ってるのですが。

 これは別問題でである事を確認しています。
 wsock32.dll、ws2_32.dll で現象に違いはありませんでした。

--
北島雅博(かとんぼ)

=end

#6

Updated by usa (Usaku NAKAMURA) over 8 years ago

  • Assignee changed from usa (Usaku NAKAMURA) to shyouhei (Shyouhei Urabe)

=begin
で、えーと、現状実害はなくて、ruby_1_8_7とruby_1_8_6のみにこの問題があって、ruby_1_8のr30401をバックポートすればこの問題は直る、というのが私の見解です。

で、本件は実害ないからどうでもいいですが、r30401はいずれにせよバックポートして欲しいなーと思っています。
=end

Updated by shyouhei (Shyouhei Urabe) over 8 years ago

  • Status changed from Assigned to Feedback

30401をバックポートしてみたんですがどんなもんでしょう

Updated by usa (Usaku NAKAMURA) over 8 years ago

  • Status changed from Feedback to Closed

VC6とVC10で確認しましたが、意図通りになってるように見えるので、closeします。

Also available in: Atom PDF