From owner-svn-soc-all@FreeBSD.ORG Tue Jul 26 07:39:32 2011 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id CA275106564A for ; Tue, 26 Jul 2011 07:39:31 +0000 (UTC) (envelope-from kibab@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Tue, 26 Jul 2011 07:39:31 +0000 Date: Tue, 26 Jul 2011 07:39:31 +0000 From: kibab@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20110726073931.CA275106564A@hub.freebsd.org> Cc: Subject: socsvn commit: r224640 - soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jul 2011 07:39:32 -0000 Author: kibab Date: Tue Jul 26 07:39:31 2011 New Revision: 224640 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224640 Log: Use global socket, not destroying it after each request. Modified: soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres/context.c Modified: soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres/context.c ============================================================================== --- soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres/context.c Tue Jul 26 04:33:00 2011 (r224639) +++ soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres/context.c Tue Jul 26 07:39:31 2011 (r224640) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: context.c,v 1.50.332.5 2009-09-01 23:47:05 tbox Exp $ */ +/* $Id: context.c,v 1.50.332.5 2009/09/01 23:47:05 tbox Exp $ */ /*! \file context.c lwres_context_create() creates a #lwres_context_t structure for use in @@ -131,6 +131,8 @@ LIBLWRES_EXTERNAL_DATA lwres_uint16_t lwres_udp_port = LWRES_UDP_PORT; LIBLWRES_EXTERNAL_DATA const char *lwres_resolv_conf = LWRES_RESOLV_CONF; +static int glob_socket = 0; + static void * lwres_malloc(void *, size_t); @@ -218,7 +220,7 @@ ctx = *contextp; *contextp = NULL; - if (ctx->sock != -1) { + if (ctx->sock != -1 && !glob_socket) { #ifdef WIN32 DestroySockets(); #endif @@ -331,32 +333,41 @@ #ifdef WIN32 InitSockets(); #endif - s = socket(domain, SOCK_DGRAM, IPPROTO_UDP); - if (s < 0) { + + if(glob_socket==0) { + printf("Creating new socket!!!\n"); + s = socket(domain, SOCK_DGRAM, IPPROTO_UDP); + if (s < 0) { #ifdef WIN32 - DestroySockets(); + DestroySockets(); #endif - return (LWRES_R_IOERROR); - } + return (LWRES_R_IOERROR); + } - ret = connect(s, sa, salen); - if (ret != 0) { + ret = connect(s, sa, salen); + if (ret != 0) { #ifdef WIN32 - DestroySockets(); + DestroySockets(); #endif - (void)close(s); - return (LWRES_R_IOERROR); - } + (void)close(s); + return (LWRES_R_IOERROR); + } - MAKE_NONBLOCKING(s, ret); - if (ret < 0) { + MAKE_NONBLOCKING(s, ret); + if (ret < 0) { #ifdef WIN32 - DestroySockets(); + DestroySockets(); #endif - (void)close(s); - return (LWRES_R_IOERROR); - } + (void)close(s); + return (LWRES_R_IOERROR); + //glob_socket = s; + } + glob_socket = s; + } else { + printf("Reusing existing socket!\n"); + s = glob_socket; + } ctx->sock = s; return (LWRES_R_SUCCESS);