From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 241891F61A for ; Sat, 10 Dec 2022 21:11:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1670706662; bh=T1ECqfr/7pC05P5Hj/AeaebtKKp2K/jw4/1Ggonh6bk=; h=From:To:Subject:Date:From; b=bE0s9r48A0OqYl6x71bvAMS1QRxRdEo4PTtORLsqD95MVPYsIHTnnn5195Sd7GN8A AVSDpqWTfDzWFlLgHekArWuq5fRdgsuKWkge1dumEqzwjU9cMx0DbuQT9SVcG5+rMH wQ9jbwN5WppvbNY1jjTQsDgtSIAPCag0r/0HqbxY= From: Eric Wong To: mwrap-perl@80x24.org Subject: [PATCH] set un.sun_len on *BSD systems Date: Sat, 10 Dec 2022 21:11:41 +0000 Message-Id: <20221210211141.89951-1-mwrap-perl@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Maybe this fixes some t/mwrap-httpd.t reliability problems I've noticed on FreeBSD... --- Makefile.PL | 4 +++- mwrap_httpd.h | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 3f1200b..6f563c1 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -104,6 +104,8 @@ push @writemakefile_args, ( WriteMakefile(@writemakefile_args); +my $tflags = $ccflags; +$tflags .= ' -DHAS_SOCKADDR_SA_LEN ' if $Config{d_sockaddr_sa_len}; sub MY::postamble { </dev/null || gnproc 2>/dev/null || echo 2) + 1 )) @@ -114,7 +116,7 @@ check-manifest :: MANIFEST build.env :: Makefile echo >\$\@+ extra_linker_flags=$LIBS -lpthread - echo >>\$\@+ extra_compiler_flags=-I. $INC $Config{ccflags} $ccflags + echo >>\$\@+ extra_compiler_flags=-I. $INC $Config{ccflags} $tflags mv \$\@+ \$\@ pure_all :: build.env diff --git a/mwrap_httpd.h b/mwrap_httpd.h index 13ac256..5c5a58b 100644 --- a/mwrap_httpd.h +++ b/mwrap_httpd.h @@ -942,7 +942,9 @@ static void h1d_event_step(struct mw_h1d *h1d) static int h1d_init(struct mw_h1d *h1d, const char *menv) { union mw_sockaddr sa = { .un = { .sun_family = AF_UNIX } }; - +#ifdef HAS_SOCKADDR_SA_LEN + sa.un.sun_len = (unsigned char)sizeof(struct sockaddr_un); +#endif const char *env = strstr(menv, "socket_dir:"); if (!env) return 1; if (env != menv && env[-1] != ',')