From owner-FreeBSD-users-jp@jp.FreeBSD.org Wed Jan 22 00:31:29 2003
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id h0LFVT119169;
	Wed, 22 Jan 2003 00:31:29 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from utahime.as.wakwak.ne.jp (utahime.as.wakwak.ne.jp [61.205.238.40])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id h0LFVSJ19164
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Wed, 22 Jan 2003 00:31:28 +0900 (JST)
	(envelope-from yasu@utahime.org)
Received: from eastasia.home.utahime.org (eastasia.home.utahime.org [192.168.174.1])
	by utahime.as.wakwak.ne.jp (Postfix) with ESMTP id 6F08AE
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Wed, 22 Jan 2003 00:31:27 +0900 (JST)
Received: from localhost (angel.home.utahime.org [192.168.174.4])
	by eastasia.home.utahime.org (Postfix) with ESMTP
	id 58274101; Wed, 22 Jan 2003 00:31:27 +0900 (JST)
Message-Id: <20030122.003009.01148625.yasu@utahime.org>
To: FreeBSD-users-jp@jp.FreeBSD.org
From: KIMURA Yasuhiro <yasu@utahime.org>
Organization: Utahime no Mori
X-Mailer: Mew version 3.1.52 on Emacs 21.2 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
 boundary="--Next_Part(Wed_Jan_22_00:30:09_2003_406)--"
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Wed, 22 Jan 2003 00:30:09 +0900
X-Sequence: FreeBSD-users-jp 73046
Subject: [FreeBSD-users-jp 73046] Unix =?ISO-2022-JP?B?GyRCJUklYRsoQg==?=
 =?ISO-2022-JP?B?GyRCJSQlcyU9JTElQyVIJEtCUCQ5JGsbKEI=?=
 getpeername()
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: yasu@utahime.org
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+030107

----Next_Part(Wed_Jan_22_00:30:09_2003_406)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

  $B$H$"$k(BML$B$G$N$d$j<h$j$G!"0J2<$N%Q%C%A$NB8:_$rCN$j$^$7$?!#(B

http://www.jp.freebsd.org/cgi/cvsweb.cgi/ports/mail/cyrus-imapd2/files/patch-df?rev=1.3&content-type=text/x-cvsweb-markup

$B$G!"$3$N%Q%C%A$K4X$9$k5-=R$N$&$A$N(B

It seems getpeername() returns with no error but doesn't fill struct
sockaddr correctly against PF_UNIX socket under 5-CURRENT.

$B$H$$$&ItJ,$,5$$K$J$C$?$N$G!"E:IU$7$?$h$&$J4JC1$J%W%m%0%i%`$r=q$$$F!"$3(B
$B$l$r$$$m$$$m$J(BUnix$B7O$N(BOS$B$GF0$+$7$F$_$^$7$?!#(B

$B$9$k$H!"(BLinux(Debian unstable, kernel-2.4.20)$B!"(BNetBSD(1.5.2,i386)$B5Z$S(B
Solaris(SunOS5.7,sparc)$B$G$O$$$:$l$b(B

$B%5!<%PB&(B:
yasu@angel[23]% ./server /tmp/aaa    
nsaun.sun_family=PF_UNIX, nsaun.sun_path=""
psaun.sun_family=PF_UNIX, psaun.sun_path=""
yasu@angel[24]% 

$B%/%i%$%"%s%HB&(B:
yasu@angel[10]% ./client /tmp/aaa    
psaun.sun_family=PF_UNIX, psaun.sun_path="/tmp/aaa"
yasu@angel[11]% 

$B$H$J$C$?$N$KBP$7$F!"(BFreeBSD$B$G$O(B4.7R(i386)$B!"(B5.0R(i386)$B6&$K(B

$B%5!<%PB&(B:
yasu@eastasia[5]% ./server /tmp/aaa
nsaun.sun_family=PF_UNIX, nsaun.sun_path=""
psaun.sun_family=0
yasu@eastasia[6]% 

$B%/%i%$%"%s%HB&(B:
yasu@eastasia[5]% ./client /tmp/aaa 
psaun.sun_family=PF_UNIX, psaun.sun_path="/tmp/aaa"
yasu@eastasia[6]% 

$B$H$J$C$F!"%5!<%PB&$N7k2L$,B>$N(BOS$B$H0[$j$^$9!#(Bpsaun$B<+BN$OD>A0$G(B

    memset(&psaun, 0, sizeof(psaun));

$B$H$7$F$$$k$N$G!"3N$+$K7o$N%Q%C%A$N5-=R$NDL$j!"(Bgetpeername()$B$,(Bpsaun$B$KCM(B
$B$r@_Dj$7$F$J$$$h$&$G$9!#(B

$B0J>e$N$h$&$K(BFreeBSD$B$G$O(BUnix$B%I%a%$%s%=%1%C%H$KBP$9$k(Bgetpeername()$B$N?6$k(B
$BIq$$$,B>$N(BUnix$B7O(BOS$B$H0c$&$N$G$9$,!"$3$l$O2?$+M}M3$,$"$C$F$3$&$J$C$F$$$k(B
$B$N$G$7$g$&$+!#$"$k$$$OC1$J$k%P%0$G$7$g$&$+!#2?$H$J$/5$$K$J$C$F$$$k$N$G!"(B
$B$4B8$8$NJ}$,$$$?$i65$($F$/$@$5$$!#(B

---
$BLZB<(B $B9/9@(B 
Mail: yasu@utahime.org
WWW:  http://www.utahime.org/

----Next_Part(Wed_Jan_22_00:30:09_2003_406)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="client.c"

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

int
main(int argc, char **argv)
{
    int s, len;
    struct sockaddr_un  saun, psaun;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s UnixDomainSocketPath\n", argv[0]);
        return 1;
    }
    s = socket(PF_UNIX, SOCK_STREAM, 0);
    if (s < 0) {
        perror("socket");
        return -1;
    }
    memset(&saun, 0, sizeof(saun));
    saun.sun_family = PF_UNIX;
    strcpy(saun.sun_path, argv[1]);
    if (connect(s, (struct sockaddr *) &saun, sizeof(saun)) < 0) {
        perror("connect");
        return -1;
    }
    len = sizeof(psaun);
    memset(&psaun, 0, sizeof(psaun));
    if (getpeername(s, (struct sockaddr *) &psaun, &len) < 0) {
        perror("getpeername");
        return -1;
    }
    switch (psaun.sun_family) {
    case PF_UNIX:
        printf("psaun.sun_family=PF_UNIX, psaun.sun_path=\"%s\"\n",
               psaun.sun_path);
        break;
    defaut:
        printf("psaun.sun_family=%d\n", psaun.sun_family);
        break;
    }
    sleep(10);
    shutdown(s, SHUT_RDWR);
    return 0;
}

        

----Next_Part(Wed_Jan_22_00:30:09_2003_406)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="server.c"

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

int
main(int argc, char **argv)
{
    int s, ns, len;
    struct sockaddr_un  saun, nsaun, psaun;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s UnixDomainSocketPath\n", argv[0]);
        return 1;
    }
    s = socket(PF_UNIX, SOCK_STREAM, 0);
    if (s < 0) {
        perror("socket");
        return -1;
    }
    memset(&saun, 0, sizeof(saun));
    saun.sun_family = PF_UNIX;
    strcpy(saun.sun_path, argv[1]);
    unlink(argv[1]);
    if (bind(s, (struct sockaddr *) &saun, sizeof(saun)) < 0) {
        perror("bind");
        return -1;
    }
    if (listen(s, 1) < 0) {
        perror("listen");
        return -1;
    }
    len = sizeof(nsaun);
    memset(&nsaun, 0, sizeof(nsaun));
    ns = accept(s, (struct sockaddr *) &nsaun, &len);
    if (ns < 0) {
        perror("accept");
        return -1;
    }
    switch (nsaun.sun_family) {
    case PF_UNIX:
        printf("nsaun.sun_family=PF_UNIX, nsaun.sun_path=\"%s\"\n",
               nsaun.sun_path);
        break;
    default:
        printf("nsaun.sun_family=%d\n", nsaun.sun_family);
        break;
    }
    len = sizeof(psaun);
    memset(&psaun, 0, sizeof(psaun));
    if (getpeername(ns, (struct sockaddr *) &psaun, &len) < 0) {
        perror("getpeername");
        return -1;
    }
    switch (psaun.sun_family) {
    case PF_UNIX:
        printf("psaun.sun_family=PF_UNIX, psaun.sun_path=\"%s\"\n",
               psaun.sun_path);
        break;
    default:
        printf("psaun.sun_family=%d\n", psaun.sun_family);
        break;
    }
    sleep(10);
    shutdown(ns, SHUT_RDWR);
    return 0;
}

----Next_Part(Wed_Jan_22_00:30:09_2003_406)----
