From dev-return-25850-apmail-apr-dev-archive=apr.apache.org@apr.apache.org Tue Apr 15 11:02:24 2014 Return-Path: X-Original-To: apmail-apr-dev-archive@www.apache.org Delivered-To: apmail-apr-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1345B1161C for ; Tue, 15 Apr 2014 11:02:24 +0000 (UTC) Received: (qmail 79601 invoked by uid 500); 15 Apr 2014 11:02:21 -0000 Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 79173 invoked by uid 500); 15 Apr 2014 11:02:12 -0000 Mailing-List: contact dev-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Id: Delivered-To: mailing list dev@apr.apache.org Received: (qmail 79153 invoked by uid 99); 15 Apr 2014 11:02:09 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Apr 2014 11:02:09 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of ylavic.dev@gmail.com designates 209.85.223.175 as permitted sender) Received: from [209.85.223.175] (HELO mail-ie0-f175.google.com) (209.85.223.175) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Apr 2014 11:02:03 +0000 Received: by mail-ie0-f175.google.com with SMTP id to1so9193901ieb.34 for ; Tue, 15 Apr 2014 04:01:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Ysrkkpge/SymZ67RcQ/i8y8lTR7T+utei4eGeCD1BPY=; b=zwqkDhZK8NzgjOEinQXuZIVb5U0j850tGfnAF4U5vpHKsnDZaVop7mp5fqMTWlQSp6 OrbeV7mdT6TQO9WRRQntd+WOSuLruVOKTVRMtYf7oB10VaI+cWhvUgPoiaUaVXJaye0g ueYATWga+g43tnhoytVo5JaCfE2+kQ6XUNxhi/YKCTUC6Qvj0APsKoPNZzxIAkfz4BOG dO8+BDeXMkzu8/f9mGvl77NqcALGAig8kiuoDU+PtEDo0UNaX4hCmgTklSqxbdkecw1T 4jSNuS9b/vaYaZFD9/9PG5TrDwGUGZOYBFKNYOv9YRz0vJTJGEC3TLa+KbL/KBLtUOXV s2kw== MIME-Version: 1.0 X-Received: by 10.50.62.51 with SMTP id v19mr22145646igr.21.1397559701200; Tue, 15 Apr 2014 04:01:41 -0700 (PDT) Received: by 10.43.11.194 with HTTP; Tue, 15 Apr 2014 04:01:41 -0700 (PDT) In-Reply-To: References: Date: Tue, 15 Apr 2014 13:01:41 +0200 Message-ID: Subject: Re: New apr_sockaddr_info_copy() function From: Yann Ylavic To: Jeff Trawick Cc: apr Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked by ClamAV on apache.org On Sun, Apr 13, 2014 at 7:12 PM, Jeff Trawick wrote: > On Thu, Jan 23, 2014 at 7:24 PM, Yann Ylavic wrote: >> >> Hi, >> >> I'd like to propose the following/attached patch which adds the >> apr_sockaddr_info_copy() function to network_io. > > > Committed to APR trunk as r1587045... Thanks. > > If you are able, could you submit a patch to add a testcase for this? Even > if the testcase isn't interesting, it would be a big head start in case > someone has a need to test a particular aspect of it in the future. Thanks! > Index: test/testsock.c =================================================================== --- test/testsock.c (revision 1587094) +++ test/testsock.c (working copy) @@ -97,6 +97,56 @@ static void test_addr_info(abts_case *tc, void *da ABTS_INT_EQUAL(tc, 0, ntohs(sa->sa.sin.sin_port)); } +static void test_addr_copy(abts_case *tc, void *data) +{ + apr_status_t rv; + apr_sockaddr_t *sa1, *sa2; + int rc; + const char *hosts[] = { + "127.0.0.1", +#if APR_HAVE_IPV6 + "::1", +#endif + NULL + }, **host = hosts; + + /* Loop up to and including NULL */ + do { + rv = apr_sockaddr_info_get(&sa1, *host, APR_UNSPEC, 80, 0, p); + APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv); + + rv = apr_sockaddr_info_copy(&sa2, sa1, p); + APR_ASSERT_SUCCESS(tc, "Problem copying sockaddr", rv); + + ABTS_PTR_NOTNULL(tc, sa1); + do { + ABTS_PTR_NOTNULL(tc, sa2); + + rc = apr_sockaddr_equal(sa2, sa1); + ABTS_INT_NEQUAL(tc, 0, rc); + ABTS_INT_EQUAL(tc, 80, sa1->port); + ABTS_INT_EQUAL(tc, sa2->port, sa1->port); + ABTS_INT_EQUAL(tc, 80, ntohs(sa1->sa.sin.sin_port)); + ABTS_INT_EQUAL(tc, ntohs(sa2->sa.sin.sin_port), ntohs(sa1->sa.sin.sin_port)); + + if (*host) { + ABTS_PTR_NOTNULL(tc, sa1->hostname); + ABTS_PTR_NOTNULL(tc, sa2->hostname); + ABTS_STR_EQUAL(tc, *host, sa1->hostname); + ABTS_STR_EQUAL(tc, sa1->hostname, sa2->hostname); + ABTS_TRUE(tc, sa1->hostname != sa2->hostname); + } + else { + ABTS_PTR_EQUAL(tc, NULL, sa1->hostname); + ABTS_PTR_EQUAL(tc, NULL, sa2->hostname); + } + + } while ((sa2 = sa2->next, sa1 = sa1->next)); + ABTS_PTR_EQUAL(tc, NULL, sa2); + + } while (*host++); +} + static void test_serv_by_name(abts_case *tc, void *data) { apr_status_t rv; @@ -562,6 +612,7 @@ abts_suite *testsock(abts_suite *suite) suite = ADD_SUITE(suite) socket_name = IPV4_SOCKET_NAME; abts_run_test(suite, test_addr_info, NULL); + abts_run_test(suite, test_addr_copy, NULL); abts_run_test(suite, test_serv_by_name, NULL); abts_run_test(suite, test_create_bind_listen, NULL); abts_run_test(suite, test_send, NULL); [END] Regards, Yann.