■ V6板作ろう。 まだまだ現役です。at OPERATE
■ V6板作ろう。 まだまだ現役です。 - 暇つぶし2ch599:root▲▲ ★
08/07/29 02:56:15 0 BE:2188883-DIA(100513)
>>573
確かに、

URLリンク(bg20.2ch.net)

はできるのに、

URLリンク(bg20.2ch.net)

は、短パンマンになりますね。

600:root▲▲ ★
08/07/29 03:08:36 0 BE:1641863-DIA(100513)
>>599
エラーコード 5656 を手がかりに、bg20 を少し見てみました。
結果、原因ぽいものがわかりますた。

・bg20 は「IPv6あり」のカーネル(FreeBSDのデフォルト設定)でシステムが作られている
・しかし、外につながるインタフェースにはIPv6アドレスがついていない

この状況の場合、*6.2Rまでの*FreeBSDだと、
*IPv6で優先的につなぎにいって*、経路がないよエラーになるようです。
(7.0RからはIPv4を先に試すようです)

システム標準の telnet とかでは以下のように、
IPv4に自動的にフォールバックしてつながるのですが、

%telnet ipv6.2ch.net 80
Trying 2407:3000:6:175::12...
telnet: connect to address 2407:3000:6:175::12: No route to host
Trying 125.6.175.12...
Connected to ipv6.2ch.net.
Escape character is '^]'.

どうも、p.so は、そういうつくりになっていない模様。

601:root▲▲ ★
08/07/29 03:09:03 0 BE:5746379-DIA(100513)
プログラム側でこの状況をうまく回避できないか、少し見てみます。

602:root▲▲ ★
08/07/29 03:11:30 0 BE:1460328-DIA(100513)
/* Make sure we have IPV6 support first before giving apr_sockaddr_info_get
APR_UNSPEC, because it may give us back an IPV6 address even if we can't
create IPV6 sockets. */

ふうむ、、、。

603:root▲▲ ★
08/07/29 03:14:08 0 BE:6566898-DIA(100513)
URLリンク(bg20.2ch.net)

できたっぽい。

604:root▲▲ ★
08/07/29 03:15:35 0 BE:4469377-DIA(100513)
- if (apr_sockaddr_info_get(&sockaddr, host, APR_UNSPEC, 80, 0, pool)
+ if (apr_sockaddr_info_get(&sockaddr, host, APR_INET, 80, 0, pool)

これでできたけど、
この解決方法はちょっと、負けっぽいなぁ。

(IPv4を明示的に指定して回避)

でも今はとりあえず、これで動かすことにするか、、、。
r.so も同じことしてきます。

605:root▲▲ ★
08/07/29 03:16:57 0 BE:365322-DIA(100513)
URLリンク(bg20.2ch.net)

できた。

606:root▲▲ ★
08/07/29 03:18:42 0 BE:1276872-DIA(100513)
同じことを bg21 bg22 bg23 でもやればいいのか。

いってきます。

607:root▲▲ ★
08/07/29 03:20:29 0 BE:1459744-DIA(100513)
・・・この部分はたぶん、SunOS さんが昔書いて板で公開した、、、。ところでしたっけか。

こんな場合、どうするのがプログラムマナー的にはいいんだろう。

AF_UNSPEC を試してだめだったらエラーコード見て、
それからプロトコル別にやってみる、とかがいいんだろうか。

608:root▲▲ ★
08/07/29 03:26:44 0 BE:4377986-DIA(100513)
bg21 bg22 bg23 の p.i r.i にも同じ変更を入れた。

609:root▲▲ ★
08/07/29 03:31:07 0 BE:3192757-DIA(100513)
で、ipv6以外の 2ch のサーバは外向けはIPv4しか今のところ、持っていないので、
影響は出ないはずです。

しかし、この修正はいまいちですね。
将来に禍根を残しそうな感じ。
たぶん、もっといいコーディング方法がある気がします。

あと、FreeBSD 7.0R では APR_UNSPEC の際の動作が改良されているようなので、
7.0R に上げるまでは、とりあえずこれでいくか、
あるいはソースレベルで改良するのがいい、ということで。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch