[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

apache6 getaddrinfo problem (pkg/13751)



pkg/13751 で書いたとおり、apache6-1.3.19 は
(実際にはもっと前からだと思いますが)
httpd.conf で ServerName を指定しなかった場合に問題があると思います。

先ほど apache6-1.3.20 を commit した Martti Kuparinen から、
「1.3.20 でも再現するか教えてね」とのメールが届いたので試しましたが、
やはり同じ問題が発生しました。

今さらではありますが、正直なところ getaddrinfo の使い方は
それほどわかっていないので、私のパッチが本当に正しい解か
気になっています。詳しい方、コメントいただければ幸いです。

インデントが変更されて 1.3.19 のパッチはそのままでは当たらないので、
一応 1.3.20 用のパッチを付けておきます。

--
 永江   英武     mailto:nagae@tk.airnet.ne.jp
Nagae Hidetake   http://www.tk.airnet.ne.jp/nagae/
diff -r -c apache_1.3.20.orig/src/main/util.c apache_1.3.20/src/main/util.c
*** apache_1.3.20.orig/src/main/util.c	Tue Oct  9 01:37:06 2001
--- apache_1.3.20/src/main/util.c	Tue Oct  9 01:38:50 2001
***************
*** 2088,2104 ****
  	hints.ai_flags = AI_CANONNAME;
  	res = NULL;
  	error = getaddrinfo(str, NULL, &hints, &res);
! 	if (error == 0)
  	{
  	    /* Since we found a fdqn, return it with no logged message. */
! 	    if (res)
! 		freeaddrinfo(res);
  	    return server_hostname;
  	}
  	else
  	{
  	    /* Recovery - return the default servername by IP: */
! 	    server_hostname = ap_pstrdup(a, res->ai_canonname);
  	    /* We will drop through to report the IP-named server */
          }
      }
--- 2088,2104 ----
  	hints.ai_flags = AI_CANONNAME;
  	res = NULL;
  	error = getaddrinfo(str, NULL, &hints, &res);
! 	if (error == 0 && res)
  	{
  	    /* Since we found a fdqn, return it with no logged message. */
! 	    server_hostname = ap_pstrdup(a, res->ai_canonname);
! 	    freeaddrinfo(res);
  	    return server_hostname;
  	}
  	else
  	{
  	    /* Recovery - return the default servername by IP: */
! 	    server_hostname = ap_pstrdup(a, str);
  	    /* We will drop through to report the IP-named server */
          }
      }