socsvn commit: r224640 -
soc2011/kibab/freebsd-src-head/contrib/bind9/lib/lwres
kibab at FreeBSD.org
kibab at FreeBSD.org
Tue Jul 26 07:39:32 UTC 2011
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);
More information about the svn-soc-all
mailing list