[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:377] socket on little endien machines
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-08-01 01:08:03 UTC
List:
ruby-list #377
まつもと ゆきひろです
しばらく前に九工大の黒田さんから,Linuxでsocketを使うと,
portをサービス名で指定するとちゃんと動くが,port番号で指定す
ると動かないという現象を指摘されていたのですが,今日になって
初めて原因が分かりました.
原因はlinux machinのcpuはlittle endienだった事です.port番号
はnetwork byte orderで指定する必要があったのに,htonsを噛ま
せるのを忘れていました.
既に修正しましたので,次のリリースでは反映されます.
お急ぎの場合は以下のパッチを当ててください.
# 最近黒田さんへのメイルがエラーになる事が多いんだけど,この
# メイルはちゃんと届くかなあ.
--- ext/socket/socket.c~ Wed Jul 31 19:25:45 1996
+++ ext/socket/socket.c Thu Aug 1 00:05:02 1996
@@ -208 +208 @@
- _servent.s_port = servport;
+ _servent.s_port = htons(servport);
@@ -365 +365,3 @@
- char *a = (char*)&sockaddr->sin_addr;
+ long x = ntohl(sockaddr->sin_addr.s_addr);
+ char *a = (char*)&x;
+
まつもと ゆきひろ /:|)