599 :
root▲▲ ★ :
2008/07/29(火) 02:56:15 ID:???0 BE:2188883-DIA(100513)
600 :
root▲▲ ★ :2008/07/29(火) 03:08:36 ID:???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▲▲ ★ :2008/07/29(火) 03:09:03 ID:???0 BE:5746379-DIA(100513)
プログラム側でこの状況をうまく回避できないか、少し見てみます。
602 :
root▲▲ ★ :2008/07/29(火) 03:11:30 ID:???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▲▲ ★ :2008/07/29(火) 03:14:08 ID:???0 BE:6566898-DIA(100513)
604 :
root▲▲ ★ :2008/07/29(火) 03:15:35 ID:???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▲▲ ★ :2008/07/29(火) 03:16:57 ID:???0 BE:365322-DIA(100513)
606 :
root▲▲ ★ :2008/07/29(火) 03:18:42 ID:???0 BE:1276872-DIA(100513)
同じことを bg21 bg22 bg23 でもやればいいのか。 いってきます。
607 :
root▲▲ ★ :2008/07/29(火) 03:20:29 ID:???0 BE:1459744-DIA(100513)
・・・この部分はたぶん、SunOS さんが昔書いて板で公開した、、、。ところでしたっけか。 こんな場合、どうするのがプログラムマナー的にはいいんだろう。 AF_UNSPEC を試してだめだったらエラーコード見て、 それからプロトコル別にやってみる、とかがいいんだろうか。
608 :
root▲▲ ★ :2008/07/29(火) 03:26:44 ID:???0 BE:4377986-DIA(100513)
bg21 bg22 bg23 の p.i r.i にも同じ変更を入れた。