From jamie@defiant.pinklemon.net  Sat May  6 22:16:27 2006
Return-Path: <jamie@defiant.pinklemon.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id D106916A401
	for <freebsd-gnats-submit@freebsd.org>; Sat,  6 May 2006 22:16:27 +0000 (UTC)
	(envelope-from jamie@defiant.pinklemon.net)
Received: from smtp-out.pinklemon.net (smtp-out.pinklemon.net [82.133.58.136])
	by mx1.FreeBSD.org (Postfix) with ESMTP id D31B443D45
	for <freebsd-gnats-submit@freebsd.org>; Sat,  6 May 2006 22:16:26 +0000 (GMT)
	(envelope-from jamie@defiant.pinklemon.net)
Received: from smtp-out.pinklemon.net (localhost.localdomain [127.0.0.1])
	by smtp-out.pinklemon.net (Postfix) with ESMTP id 0C72C250
	for <freebsd-gnats-submit@freebsd.org>; Sat,  6 May 2006 23:16:25 +0100 (BST)
Received: from lorien.silverdream.org (lorien.silverdream.org [82.133.58.131])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(Client CN "lorien.silverdream.org", Issuer "PinkLemonCA Certificate Master" (verified OK))
	by smtp-out.pinklemon.net (Postfix) with ESMTP id DEFE618C
	for <freebsd-gnats-submit@freebsd.org>; Sat,  6 May 2006 23:16:24 +0100 (BST)
Received: from localhost (localhost [127.0.0.1])
	by lorien.silverdream.org (Postfix) with ESMTP id 62869480518C
	for <freebsd-gnats-submit@freebsd.org>; Sat,  6 May 2006 23:16:24 +0100 (BST)
Received: from lorien.silverdream.org ([127.0.0.1])
 by localhost (lorien.silverdream.org [127.0.0.1]) (amavisd-new, port 10024)
 with LMTP id 24904-11 for <freebsd-gnats-submit@freebsd.org>;
 Sat,  6 May 2006 23:16:23 +0100 (BST)
Received: from lorien.silverdream.org (localhost [127.0.0.1])
	by lorien.silverdream.org (Postfix) with ESMTP id B9DA0480518A
	for <FreeBSD-gnats-submit@freebsd.org>; Sat,  6 May 2006 23:16:22 +0100 (BST)
Received: from defiant.pinklemon.net (defiant.pinklemon.net [65.23.155.53])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(Client did not present a certificate)
	by lorien.silverdream.org (Postfix) with ESMTP
	for <FreeBSD-gnats-submit@freebsd.org>; Sat,  6 May 2006 23:16:20 +0100 (BST)
Received: from defiant.pinklemon.net (localhost.serve.com [127.0.0.1])
	by defiant.pinklemon.net (8.13.4/8.13.4) with ESMTP id k46LxEon086131;
	Sat, 6 May 2006 17:59:14 -0400 (EDT)
	(envelope-from jamie@defiant.pinklemon.net)
Received: (from jamie@localhost)
	by defiant.pinklemon.net (8.13.4/8.13.4/Submit) id k46Lx6OD085917;
	Sat, 6 May 2006 17:59:06 -0400 (EDT)
	(envelope-from jamie)
Message-Id: <200605062159.k46Lx6OD085917@defiant.pinklemon.net>
Date: Sat, 6 May 2006 17:59:06 -0400 (EDT)
From: Jamie Penman-Smithson <jamie@silverdream.org>
Reply-To: Jamie Penman-Smithson <jamie@silverdream.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc: Jamie Penman-Smithson <jamie@silverdream.org>
Subject: [patch] port dns/powerdns does not have option for compiling geo backend
X-Send-Pr-Version: 3.113
X-GNATS-Notify: tremere@cainites.net

>Number:         96891
>Category:       ports
>Synopsis:       [patch] port dns/powerdns does not have option for compiling geo backend
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    gabor
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat May 06 22:20:21 GMT 2006
>Closed-Date:    Fri Jan 12 23:57:32 GMT 2007
>Last-Modified:  Fri Jan 12 23:57:32 GMT 2007
>Originator:     Jamie Penman-Smithson
>Release:        FreeBSD 6.1-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD defiant.pinklemon.net 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #0: Sat Mar 18 07:58:14 EST 2006 jamie@defiant.pinklemon.net:/usr/obj/usr/src/sys/PHOENIX i386
>Description:
	The Makefile does not include an option to enable the geobackend.
>How-To-Repeat:
	
>Fix:
	The attached patch adds the WITH_GEO knob.


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback 
State-Changed-By: edwin 
State-Changed-When: Sat May 6 22:24:09 UTC 2006 
State-Changed-Why:  
Awaiting maintainers feedback 

http://www.freebsd.org/cgi/query-pr.cgi?pr=96891 

From: "Jamie L. Penman-Smithson" <jamie@silverdream.org>
To: bug-followup@FreeBSD.org,
 Jamie Luke Penman-Smithson <jamie@silverdream.org>
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Sat, 6 May 2006 23:43:55 +0100

 This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
 --Apple-Mail-5--1002972065
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain; charset=US-ASCII; format=flowed
 
 Apparently send-pr didn't attach the patch, so here it is:
 
 --- Makefile.old        Sat May  6 17:52:16 2006
 +++ Makefile    Sat May  6 17:53:29 2006
 @@ -90,6 +90,10 @@
 PLIST_SUB+=            WITHSQLLITE="@comment "
 .endif
 +.if defined(WITH_GEO)
 +CONFIGURE_MODULES+=    "geo"
 +.endif
 +
 .if defined(POWERDNS_WITH_RECURSOR)
 USE_RC_SUBR+=  pdns_recursor
 CONFIGURE_ARGS+=       --enable-recursor
 
 -- 
 -Jamie L. Penman-Smithson <jamie@silverdream.org>
   t: +44 1273 424795; f: +44 1273 424795
   PGP: C0A7 955E EED6 A309 23D7 863B C76A 26A3 F0DC FCA8
   never send mail to: oubliette.z@gmail.com
 
 
 
 --Apple-Mail-5--1002972065
 content-type: application/pgp-signature; x-mac-type=70674453;
 	name=PGP.sig
 content-description: This is a digitally signed message part
 content-disposition: inline; filename=PGP.sig
 content-transfer-encoding: 7bit
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.1 (Darwin)
 
 iD8DBQFEXSas0mxM1DK1CAsRAi/wAJ4/PIP1Qy5QlXWwLv1rx9iEqGutLgCfcuaV
 dn2xnBoiYVob6Q3EPfN64eg=
 =gBuw
 -----END PGP SIGNATURE-----
 
 --Apple-Mail-5--1002972065--

From: Ralf van der Enden <tremere@cainites.net>
To: bug-followup@FreeBSD.org, jamie@silverdream.org
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Wed, 10 May 2006 23:30:49 +0200

 ------------12411D463B870124
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Hello bug-followup,
 
   I've attached a patch for dns/powerdns which includes an option to
   enable the "geo" backend.
 
   It also OPTIONizes the port, fixes the pkg-plist (added some files
   which were left behind) and cleans up the Makefile
   significantly.
 
   A while ago I've submitted a a report to add a new port. This new
   patch for dns/powerdns relies on that new port for the new OpenDBX
   backend. Here's a link to that GNATS report:
 
 http://www.freebsd.org/cgi/query-pr.cgi?pr=95005
 
 >Category:       ports
 >Responsible:    freebsd-ports-bugs
 >Synopsis:       New port: databases/opendbx
 >Arrival-Date:   Mon Mar 27 15:40:15 GMT 2006
 
 -- 
 Best regards,
  Ralf                          mailto:tremere@cainites.net
 ------------12411D463B870124
 Content-Type: application/octet-stream; name="pdns-2.9.20_1.diff"
 Content-transfer-encoding: base64
 Content-Disposition: attachment; filename="pdns-2.9.20_1.diff"
 
 ZGlmZiAtcnVOIHBvd2VyZG5zLm9yZy9NYWtlZmlsZSBwb3dlcmRucy9NYWtlZmlsZQotLS0g
 cG93ZXJkbnMub3JnL01ha2VmaWxlCUZyaSBNYXIgMTcgMTQ6MzQ6MDMgMjAwNgorKysgcG93
 ZXJkbnMvTWFrZWZpbGUJV2VkIE1heSAxMCAyMzoxNzoyNCAyMDA2CkBAIC0yLDExICsyLDEy
 IEBACiAjIERhdGUgQ3JlYXRlZDoJCQkJMTQuSmFuIDIwMDMKICMgV2hvbToJCQkJCWRpcmsu
 bWV5ZXJAZGlub2V4LnN1Yi5vcmcKICMKLSMgJEZyZWVCU0Q6IHBvcnRzL2Rucy9wb3dlcmRu
 cy9NYWtlZmlsZSx2IDEuNDcgMjAwNi8wMi8yMyAxMDozNjoyMiBhZGUgRXhwICQKKyMgJEZy
 ZWVCU0Q6IHBvcnRzL2Rucy9wb3dlcmRucy9NYWtlZmlsZSx2IDEuNDggMjAwNi8wMy8xNyAx
 NjoxNDo0MSBnYXJnYSBFeHAgJAogIwogCiBQT1JUTkFNRT0JcG93ZXJkbnMKIFBPUlRWRVJT
 SU9OPQkyLjkuMjAKK1BPUlRSRVZJU0lPTj0JMQogQ0FURUdPUklFUz0JZG5zIGlwdjYKIE1B
 U1RFUl9TSVRFUz0JaHR0cDovL2Rvd25sb2Fkcy5wb3dlcmRucy5jb20vcmVsZWFzZXMvIFwK
 IAkJaHR0cDovL21pcnJvcnMuZXZvbHZhLnJvL3Bvd2VyZG5zLmNvbS9yZWxlYXNlcy8KQEAg
 LTI0LDggKzI1LDggQEAKIENYWEZMQUdTKz0JLUkke0xPQ0FMQkFTRX0vaW5jbHVkZQogTERG
 TEFHUys9CS1MJHtMT0NBTEJBU0V9L2xpYgogQ09ORklHVVJFX1RBUkdFVD0JLS1idWlsZD0k
 e01BQ0hJTkVfQVJDSH0tcG9ydGJsZC1mcmVlYnNkJHtPU1JFTH0KLUNPTkZJR1VSRV9BUkdT
 Kz0JLS13aXRoLW1vZHVsZXM9IiR7Q09ORklHVVJFX01PRFVMRVN9IHBpcGUiIFwKLQkJCS0t
 d2l0aC1keW5tb2R1bGVzPSIiCitDT05GSUdVUkVfQVJHUys9CS0td2l0aC1tb2R1bGVzPSJw
 aXBlIiBcCisJCQktLXdpdGgtZHlubW9kdWxlcz0iJHtDT05GSUdVUkVfTU9EVUxFU30iCiAj
 CQkJLS1lbmFibGUtZGVidWcKIFNDUklQVFNfRU5WPQlXUktESVJQUkVGSVg9IiR7V1JLRElS
 UFJFRklYfSIgXAogCQlDVVJESVIyPSIkey5DVVJESVJ9IiBcCkBAIC0zNiw2MiArMzcsODAg
 QEAKIAogU1VCX0ZJTEVTPQlwa2ctbWVzc2FnZQogCitPUFRJT05TPQlQR1NRTAkJIlBvc3Rn
 cmVTUUwgYmFja2VuZCIgb24gXAorCQlNWVNRTAkJIk15U1FMIGJhY2tlbmQiIG9mZiBcCisJ
 CVNRTElURQkJIlNRTGl0ZSAyIGJhY2tlbmQiIG9mZiBcCisJCVNRTElURTMJCSJTUUxpdGUg
 MyBiYWNrZW5kIiBvZmYgXAorCQlPUEVOREJYCQkiT3BlbkRCWCBiYWNrZW5kIiBvZmYgXAor
 CQlPUEVOTERBUAkiT3BlbkxEQVAgYmFja2VuZCIgb2ZmIFwKKwkJR0VPCQkiR2VvIGJhY2tl
 bmQiIG9mZiBcCisJCVJFQ1VSU09SCSJCdWlsZCBSZWN1cnNvciIgb2ZmCisKIC5pbmNsdWRl
 IDxic2QucG9ydC5wcmUubWs+CiAKIFVTRV9SQ19TVUJSKz0JcGRucwogCi0jIHVzZSB1c2Vy
 IGNvbmZpZyBpZiBwb3NzaWJsZQotLmlmIGV4aXN0cygke1dSS0RJUlBSRUZJWH0key5DVVJE
 SVJ9L01ha2VmaWxlLmluYykKLS5pbmNsdWRlICIke1dSS0RJUlBSRUZJWH0key5DVVJESVJ9
 L01ha2VmaWxlLmluYyIKKy5pZiBkZWZpbmVkKFdJVEhfR0VPKQorQ09ORklHVVJFX01PRFVM
 RVMrPQkiZ2VvIgorUExJU1RfU1VCKz0JCVdJVEhHRU89IiIKIC5lbHNlCi0uaWYgZGVmaW5l
 ZChCQVRDSCkKLSMgZGVmYXVsdCBwYWNrYWdlLCBjYW4gYmUgY29uZmlndXJlZCBpbiAvZXRj
 L21ha2UuY29uZgotUE9XRVJETlNfT1BUSU9OUz89CVwiUG9zdGdyZVNRTFwiCi0uZW5kaWYK
 LSMgbWFrZSBJTkRFWCBtYXRjaAotTk9fREVTQ1JJQkU9eWVzCitQTElTVF9TVUIrPQkJV0lU
 SEdFTz0iQGNvbW1lbnQgIgogLmVuZGlmCiAKLS5pZiBkZWZpbmVkKFdJVEhfUE9TVEdSRVNR
 TF9EUklWRVIpICYmICFkZWZpbmVkKFdJVEhPVVRfUE9TVEdSRVNRTF9EUklWRVIpCi1MSUJf
 REVQRU5EUys9CXBxWytdWytdLjQ6JHtQT1JUU0RJUn0vZGF0YWJhc2VzL3Bvc3RncmVzcWwt
 bGlicHErKwotQ09ORklHVVJFX0FSR1MrPQktLWVuYWJsZS1wZ3NxbCAtLXdpdGgtcGdzcWwt
 aW5jbHVkZXM9JHtMT0NBTEJBU0V9L2luY2x1ZGUKLUNPTkZJR1VSRV9NT0RVTEVTKz0JImdw
 Z3NxbCIKLUNGTEFHUys9CQktRERMTElNUE9SVD0iIgorLmlmIGRlZmluZWQoV0lUSF9QR1NR
 TCkKK1VTRV9QR1NRTD89ICAgICAgICAgICAgIFlFUworQ09ORklHVVJFX01PRFVMRVMrPSAg
 ICAgInBnc3FsIgorUExJU1RfU1VCKz0gICAgICAgICAgICAgV0lUSFBHU1FMPSIiCiAuZWxz
 ZQotQ09ORklHVVJFX0FSR1MrPQktLWRpc2FibGUtcGdzcWwKK1BMSVNUX1NVQis9ICAgICAg
 ICAgICAgIFdJVEhQR1NRTD0iQGNvbW1lbnQgIgogLmVuZGlmCiAKLS5pZiBkZWZpbmVkKFdJ
 VEhfTVlTUUxfRFJJVkVSKQotVVNFX01ZU1FMPz0JCVlFUwotQ09ORklHVVJFX0FSR1MrPQkt
 LWVuYWJsZS1teXNxbCAtLXdpdGgtbXlzcWwtaW5jbHVkZXM9JHtMT0NBTEJBU0V9Ci1DT05G
 SUdVUkVfTU9EVUxFUys9CSJnbXlzcWwiCi1QTElTVF9TVUIrPQkJV0lUSE1ZU1FMPSIiCisu
 aWYgZGVmaW5lZChXSVRIX01ZU1FMKQorVVNFX01ZU1FMPz0gICAgICAgICAgICAgWUVTCitD
 T05GSUdVUkVfTU9EVUxFUys9ICAgICAibXlzcWwiCitDWFhGTEFHUys9ICAgICAgICAgICAg
 ICAtSSR7TE9DQUxCQVNFfS9pbmNsdWRlL215c3FsCitMREZMQUdTKz0gICAgICAgICAgICAg
 ICAtTCR7TE9DQUxCQVNFfS9saWIvbXlzcWwKK1BMSVNUX1NVQis9ICAgICAgICAgICAgIFdJ
 VEhNWVNRTD0iIgogLmVsc2UKLUNPTkZJR1VSRV9BUkdTKz0JLS1kaXNhYmxlLW15c3FsCi1Q
 TElTVF9TVUIrPQkJV0lUSE1ZU1FMPSJAY29tbWVudCAiCitQTElTVF9TVUIrPSAgICAgICAg
 ICAgICBXSVRITVlTUUw9IkBjb21tZW50ICIKIC5lbmRpZgogCi0uaWYgZGVmaW5lZChXSVRI
 X0xEQVApCisuaWYgZGVmaW5lZChXSVRIX09QRU5MREFQKQogVVNFX09QRU5MREFQPz0JCVlF
 UwogQ09ORklHVVJFX01PRFVMRVMrPQkibGRhcCIKLVBMSVNUX1NVQis9CQlXSVRITERBUD0i
 IgogQ1hYRkxBR1MrPQkJLUwke0xPQ0FMQkFTRX0vbGliCitQTElTVF9TVUIrPQkJV0lUSExE
 QVA9IiIKIC5lbHNlCiBQTElTVF9TVUIrPQkJV0lUSExEQVA9IkBjb21tZW50ICIKIC5lbmRp
 ZgogCiAuaWYgZGVmaW5lZChXSVRIX1NRTElURSkKLUxJQl9ERVBFTkRTKz0Jc3FsaXRlLjI6
 JHtQT1JUU0RJUn0vZGF0YWJhc2VzL3NxbGl0ZTIKLUNPTkZJR1VSRV9BUkdTKz0JLS1lbmFi
 bGUtc3FsaXRlCi1DT05GSUdVUkVfTU9EVUxFUys9CSJnc3FsaXRlIgotUExJU1RfU1VCKz0J
 CVdJVEhTUUxMSVRFPSIiCitVU0VfU1FMSVRFPz0gICAgICAgICAgICAyCitDT05GSUdVUkVf
 TU9EVUxFUys9ICAgICAic3FsaXRlIgorUExJU1RfU1VCKz0gICAgICAgICAgICAgV0lUSFNR
 TElURT0iIgogLmVsc2UKLUNPTkZJR1VSRV9BUkdTKz0JLS1kaXNhYmxlLXNxbGl0ZQotUExJ
 U1RfU1VCKz0JCVdJVEhTUUxMSVRFPSJAY29tbWVudCAiCitQTElTVF9TVUIrPSAgICAgICAg
 ICAgICBXSVRIU1FMSVRFPSJAY29tbWVudCAiCiAuZW5kaWYKIAotLmlmIGRlZmluZWQoUE9X
 RVJETlNfV0lUSF9SRUNVUlNPUikKLVVTRV9SQ19TVUJSKz0JcGRuc19yZWN1cnNvcgorLmlm
 IGRlZmluZWQoV0lUSF9TUUxJVEUzKQorVVNFX1NRTElURT89ICAgICAgICAgICAgMworQ09O
 RklHVVJFX01PRFVMRVMrPSAgICAgInNxbGl0ZTMiCitQTElTVF9TVUIrPSAgICAgICAgICAg
 ICBXSVRIU1FMSVRFMz0iIgorLmVsc2UKK1BMSVNUX1NVQis9ICAgICAgICAgICAgIFdJVEhT
 UUxJVEUzPSJAY29tbWVudCAiCisuZW5kaWYKKworLmlmIGRlZmluZWQoV0lUSF9PUEVOREJY
 KQorTElCX0RFUEVORFMrPQkJb3BlbmRieC4xOiR7UE9SVFNESVJ9L2RhdGFiYXNlcy9vcGVu
 ZGJ4CitDT05GSUdVUkVfTU9EVUxFUys9CSJvcGVuZGJ4IgorUExJU1RfU1VCKz0JCVdJVEhP
 UEVOREJYPSIiCitDWFhGTEFHUys9CQktTCR7TE9DQUxCQVNFfS9saWIKKy5lbHNlCitQTElT
 VF9TVUIrPQkJV0lUSE9QRU5EQlg9IkBjb21tZW50ICIKKy5lbmRpZgorCisuaWYgZGVmaW5l
 ZChXSVRIX1JFQ1VSU09SKQorVVNFX1JDX1NVQlIrPQkJcGRuc19yZWN1cnNvcgogQ09ORklH
 VVJFX0FSR1MrPQktLWVuYWJsZS1yZWN1cnNvcgogUExJU1RfU1VCKz0JCVJFQ1VSU09SPSIi
 CiAuZWxzZQpAQCAtMTEyLDIxICsxMzEsNyBAQAogVVNFX0dDQz0zLjQKIC5lbmRpZgogCi0u
 aWYgZGVmaW5lZChOT19ERVNDUklCRSkKLWRlc2NyaWJlOgotLmlmIGRlZmluZWQoQkFUQ0gp
 Ci0JQCAke1NFVEVOVn0gJHtTQ1JJUFRTX0VOVn0gJHtTSH0gJHtGSUxFU0RJUn0vY29uZmln
 dXJlLnBvd2VyZG5zCi0uZW5kaWYKLQlAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9ICR7X19z
 b2Z0TUFLRUZMQUdTfSBCQVRDSD15ZXMgJHsuVEFSR0VUfQotLmVuZGlmCi0KLXByZS1ldmVy
 eXRoaW5nOjoKLQlAICR7U0VURU5WfSAke1NDUklQVFNfRU5WfSAke1NIfSAke0ZJTEVTRElS
 fS9jb25maWd1cmUucG93ZXJkbnMKLQotcG9zdC1jbGVhbjoKLQlAICR7Uk19IC1mICR7V1JL
 RElSUFJFRklYfSR7LkNVUkRJUn0vTWFrZWZpbGUuaW5jCi0KLS5pZiBkZWZpbmVkKFdJVEhf
 TERBUCkKKy5pZiBkZWZpbmVkKFdJVEhfT1BFTkxEQVApCiBwb3N0LXBhdGNoOgogCSR7UkVJ
 TlBMQUNFX0NNRH0gLWUgJ3M7LUkuIDstSS4gLUkke0xPQ0FMQkFTRX0vaW5jbHVkZSA7JyBc
 CiAJCS1lICdzO2xhX0xERkxBR1MgPTtsYV9MREZMQUdTID0gLUwke0xPQ0FMQkFTRX0vbGli
 OycgXApkaWZmIC1ydU4gcG93ZXJkbnMub3JnL01ha2VmaWxlLmluYyBwb3dlcmRucy9NYWtl
 ZmlsZS5pbmMKLS0tIHBvd2VyZG5zLm9yZy9NYWtlZmlsZS5pbmMJV2VkIEZlYiAxNSAxMzo1
 NjozNiAyMDA2CisrKyBwb3dlcmRucy9NYWtlZmlsZS5pbmMJVGh1IEphbiAgMSAwMTowMDow
 MCAxOTcwCkBAIC0xICswLDAgQEAKLVdJVEhfUE9TVEdSRVNRTF9EUklWRVI9WUVTCmRpZmYg
 LXJ1TiBwb3dlcmRucy5vcmcvZmlsZXMvY29uZmlndXJlLnBvd2VyZG5zIHBvd2VyZG5zL2Zp
 bGVzL2NvbmZpZ3VyZS5wb3dlcmRucwotLS0gcG93ZXJkbnMub3JnL2ZpbGVzL2NvbmZpZ3Vy
 ZS5wb3dlcmRucwlUdWUgRmViIDE0IDEzOjM1OjU0IDIwMDYKKysrIHBvd2VyZG5zL2ZpbGVz
 L2NvbmZpZ3VyZS5wb3dlcmRucwlXZWQgTWF5IDEwIDIwOjEzOjIwIDIwMDYKQEAgLTE2LDYg
 KzE2LDcgQEAKIE15U1FMCQkiTXlTUUwgZHJpdmVyIiBPRkYgXAogT3BlbkxEQVAJIk9wZW5M
 REFQIGJhY2tlbmQiIE9GRiBcCiBTUUxpdGUJCSJTUUxpdGUgYmFja2VuZCIgT0ZGIFwKK09w
 ZW5EQlgJCSJPcGVuREJYIGJhY2tlbmQiIE9GRiBcCiBSZWN1cnNvcgkiQnVpbGQgUmVjdXJz
 b3IiIE9GRiBcCiAyPiAvdG1wL2NoZWNrbGlzdC50bXAuJCQKIApAQCAtNTMsNiArNTQsOSBA
 QAogCQlcIlNRTGl0ZVwiKQogCQkJZWNobyBXSVRIX1NRTElURT1ZRVMKIAkJCWVjaG8gU1FM
 SVRFX1BPUlQ/PWRhdGFiYXNlcy9zcWxpdGUKKwkJCTs7CisJCVwiT3BlbkRCWFwiKQorCQkJ
 ZWNobyBXSVRIX09QRU5EQlg9WUVTCiAJCQk7OwogCQlcIlJlY3Vyc29yXCIpCiAJCQllY2hv
 IFBPV0VSRE5TX1dJVEhfUkVDVVJTT1I9WUVTCmRpZmYgLXJ1TiBwb3dlcmRucy5vcmcvZmls
 ZXMvcGRucy5jb25mIHBvd2VyZG5zL2ZpbGVzL3BkbnMuY29uZgotLS0gcG93ZXJkbnMub3Jn
 L2ZpbGVzL3BkbnMuY29uZglUdWUgRmViIDE0IDEzOjM1OjU0IDIwMDYKKysrIHBvd2VyZG5z
 L2ZpbGVzL3BkbnMuY29uZglXZWQgTWF5IDEwIDIwOjEzOjIwIDIwMDYKQEAgLTE2LDYgKzE2
 LDE1IEBACiAjbGF1bmNoPWdzcWxpdGUKICNnc3FsaXRlLWRhdGFiYXNlPTxwYXRoIHRvIHlv
 dXIgU1FMaXRlIGRhdGFiYXNlPgogCisjIE9wZW5EQlgKKyNsYXVuY2g9b3BlbmRieAorI29w
 ZW5kYngtYmFja2VuZD1teXNxbCAKKyNvcGVuZGJ4LWhvc3Q9MTI3LjAuMC4xCisjb3BlbmRi
 eC1kYXRhYmFzZT1wZG5zCisjb3BlbmRieC11c2VybmFtZT1wZG5zCisjb3BlbmRieC1wYXNz
 d29yZD1wZG5zCisKKyMgQXV0b2dlbmVyYXRlZCBjb25maWd1cmF0aW9uIGZpbGUgdGVtcGxh
 dGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBhbGxvdy1heGZyLWlw
 cwlJZiBkaXNhYmxlZCwgRE8gYWxsb3cgem9uZXRyYW5zZmVycyBmcm9tIHRoZXNlIElQIGFk
 ZHJlc3NlcwogIwpAQCAtMjQwLDYgKzI0OSwyMSBAQAogIyBzb2EtbWluaW11bS10dGwJRGVm
 YXVsdCBTT0EgbWluaW51bSB0dGwKICMKICMgc29hLW1pbmltdW0tdHRsPTM2MDAKKworIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHNvYS1yZWZyZXNoLWRlZmF1bHQJ
 RGVmYXVsdCBTT0EgcmVmcmVzaAorIworIyBzb2EtcmVmcmVzaC1kZWZhdWx0PTEwODAwCisK
 KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBzb2EtcmV0cnktZGVmYXVs
 dAlEZWZhdWx0IFNPQSByZXRyeQorIworIyBzb2EtcmV0cnktZGVmYXVsdD0zNjAwCisKKyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBzb2EtZXhwaXJlLWRlZmF1bHQJ
 RGVmYXVsdCBTT0EgZXhwaXJlCisjCisjIHNvYS1leHBpcmUtZGVmYXVsdD02MDQ4MDAKIAog
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHNvYS1zZXJpYWwtb2Zmc2V0
 CU1ha2Ugc3VyZSB0aGF0IG5vIFNPQSBzZXJpYWwgaXMgbGVzcyB0aGFuIHRoaXMgbnVtYmVy
 CmRpZmYgLXJ1TiBwb3dlcmRucy5vcmcvZmlsZXMvcGRuc19teXNxbC5zcWwgcG93ZXJkbnMv
 ZmlsZXMvcGRuc19teXNxbC5zcWwKLS0tIHBvd2VyZG5zLm9yZy9maWxlcy9wZG5zX215c3Fs
 LnNxbAlUdWUgRmViIDE0IDEzOjM1OjU0IDIwMDYKKysrIHBvd2VyZG5zL2ZpbGVzL3BkbnNf
 bXlzcWwuc3FsCVdlZCBNYXkgMTAgMjA6MTM6MjAgMjAwNgpAQCAtMSwzOCArMSw1MCBAQAot
 Y3JlYXRlIHRhYmxlIGRvbWFpbnMgKAotIGlkICAgICAgICAgICAgICBJTlQgYXV0b19pbmNy
 ZW1lbnQsCi0gbmFtZSAgICAgICAgICAgIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKLSBtYXN0
 ZXIgICAgICAgICAgVkFSQ0hBUigyMCkgREVGQVVMVCBOVUxMLAotIGxhc3RfY2hlY2sgICAg
 ICBJTlQgREVGQVVMVCBOVUxMLAotIHR5cGUgICAgICAgICAgICBWQVJDSEFSKDYpIE5PVCBO
 VUxMLAotIG5vdGlmaWVkX3NlcmlhbCBJTlQgREVGQVVMVCBOVUxMLAotIGFjY291bnQgICAg
 ICAgICBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwsCi0gcHJpbWFyeSBrZXkgKGlkKQotKXR5
 cGU9SW5ub0RCOworQ1JFQVRFIFRBQkxFIGRvbWFpbnMgKAorCWlkIElOVCBhdXRvX2luY3Jl
 bWVudCwKKwluYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKwl0eXBlIFZBUkNIQVIoNikg
 Tk9UIE5VTEwsCisJbWFzdGVyIFZBUkNIQVIoNDApIERFRkFVTFQgTlVMTCwKKwlhY2NvdW50
 IFZBUkNIQVIoNDApIERFRkFVTFQgTlVMTCwKKwlub3RpZmllZF9zZXJpYWwgSU5UIERFRkFV
 TFQgTlVMTCwKKwlsYXN0X2NoZWNrIElOVCBERUZBVUxUIE5VTEwsCitDT05TVFJBSU5UIHBr
 X2lkCisJUFJJTUFSWSBLRVkgKGlkKSwKK0NPTlNUUkFJTlQgdW5xX25hbWUKKwlVTklRVUUg
 KG5hbWUpCispIHR5cGU9SW5ub0RCOwogCi1DUkVBVEUgVU5JUVVFIElOREVYIG5hbWVfaW5k
 ZXggT04gZG9tYWlucyhuYW1lKTsKIAogQ1JFQVRFIFRBQkxFIHJlY29yZHMgKAotICBpZCAg
 ICAgICAgICAgICAgSU5UIGF1dG9faW5jcmVtZW50LAotICBkb21haW5faWQgICAgICAgSU5U
 IERFRkFVTFQgTlVMTCwKLSAgbmFtZSAgICAgICAgICAgIFZBUkNIQVIoMjU1KSBERUZBVUxU
 IE5VTEwsCi0gIHR5cGUgICAgICAgICAgICBWQVJDSEFSKDYpIERFRkFVTFQgTlVMTCwKLSAg
 Y29udGVudCAgICAgICAgIFZBUkNIQVIoMjU1KSBERUZBVUxUIE5VTEwsCi0gIHR0bCAgICAg
 ICAgICAgICBJTlQgREVGQVVMVCBOVUxMLAotICBwcmlvICAgICAgICAgICAgSU5UIERFRkFV
 TFQgTlVMTCwKLSAgY2hhbmdlX2RhdGUgICAgIElOVCBERUZBVUxUIE5VTEwsCi0gIHByaW1h
 cnkga2V5KGlkKQotKXR5cGU9SW5ub0RCOwotCi1DUkVBVEUgSU5ERVggcmVjX25hbWVfaW5k
 ZXggT04gcmVjb3JkcyhuYW1lKTsKLUNSRUFURSBJTkRFWCBuYW1ldHlwZV9pbmRleCBPTiBy
 ZWNvcmRzKG5hbWUsdHlwZSk7Ci1DUkVBVEUgSU5ERVggZG9tYWluX2lkIE9OIHJlY29yZHMo
 ZG9tYWluX2lkKTsKLQotY3JlYXRlIHRhYmxlIHN1cGVybWFzdGVycyAoCi0gIGlwIFZBUkNI
 QVIoMjUpIE5PVCBOVUxMLAotICBuYW1lc2VydmVyIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwK
 LSAgYWNjb3VudCBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwKKwlpZCBJTlQgYXV0b19pbmNy
 ZW1lbnQsCisJZG9tYWluX2lkIElOVCBERUZBVUxUIE5VTEwsCisJbmFtZSBWQVJDSEFSKDI1
 NSkgREVGQVVMVCBOVUxMLAorCXR5cGUgVkFSQ0hBUig2KSBERUZBVUxUIE5VTEwsCisJdHRs
 IElOVCBERUZBVUxUIE5VTEwsCisJcHJpbyBJTlQgREVGQVVMVCBOVUxMLAorCWNvbnRlbnQg
 VkFSQ0hBUigyNTUpIERFRkFVTFQgTlVMTCwKKwljaGFuZ2VfZGF0ZSBJTlQgREVGQVVMVCBO
 VUxMLAorQ09OU1RSQUlOVCBwa19pZAorCVBSSU1BUlkgS0VZIChpZCksCitDT05TVFJBSU5U
 IGZrX2RvbWFpbmlkCisJRk9SRUlHTiBLRVkgKGRvbWFpbl9pZCkKKwlSRUZFUkVOQ0VTIGRv
 bWFpbnMoaWQpCisJT04gVVBEQVRFIENBU0NBREUKKwlPTiBERUxFVEUgQ0FTQ0FERQorKSB0
 eXBlPUlubm9EQjsKKworQ1JFQVRFIElOREVYIGlkeF9yZG9tYWluaWQgT04gcmVjb3Jkcyhk
 b21haW5faWQpOworQ1JFQVRFIElOREVYIGlkeF9ybmFtZSBPTiByZWNvcmRzKG5hbWUpOwor
 Q1JFQVRFIElOREVYIGlkeF9ybmFtZV9ydHlwZSBPTiByZWNvcmRzKG5hbWUsdHlwZSk7CisK
 KworQ1JFQVRFIFRBQkxFIHN1cGVybWFzdGVycyAoCisJaXAgVkFSQ0hBUig0MCkgTk9UIE5V
 TEwsCisJbmFtZXNlcnZlciBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisJYWNjb3VudCBWQVJD
 SEFSKDQwKSBERUZBVUxUIE5VTEwKICk7CiAKLUdSQU5UIFNFTEVDVCBPTiBzdXBlcm1hc3Rl
 cnMgVE8gcGRuczsKLUdSQU5UIEFMTCBPTiBkb21haW5zIFRPIHBkbnM7Ci1HUkFOVCBBTEwg
 T04gcmVjb3JkcyBUTyBwZG5zOworQ1JFQVRFIElOREVYIGlkeF9zbWlwX3NtbnMgT04gc3Vw
 ZXJtYXN0ZXJzKGlwLG5hbWVzZXJ2ZXIpOworCisKK0dSQU5UIFNFTEVDVCBPTiBzdXBlcm1h
 c3RlcnMgVE8gcG93ZXJkbnM7CitHUkFOVCBBTEwgT04gZG9tYWlucyBUTyBwb3dlcmRuczsK
 K0dSQU5UIEFMTCBPTiByZWNvcmRzIFRPIHBvd2VyZG5zOwpkaWZmIC1ydU4gcG93ZXJkbnMu
 b3JnL2ZpbGVzL3BkbnNfcG9zdGdyZXNxbC5zcWwgcG93ZXJkbnMvZmlsZXMvcGRuc19wb3N0
 Z3Jlc3FsLnNxbAotLS0gcG93ZXJkbnMub3JnL2ZpbGVzL3BkbnNfcG9zdGdyZXNxbC5zcWwJ
 VHVlIEZlYiAxNCAxMzozNTo1NCAyMDA2CisrKyBwb3dlcmRucy9maWxlcy9wZG5zX3Bvc3Rn
 cmVzcWwuc3FsCVdlZCBNYXkgMTAgMjA6MTM6MjAgMjAwNgpAQCAtMSw0MCArMSw1MiBAQAot
 Y3JlYXRlIHRhYmxlIGRvbWFpbnMgKAotIGlkICAgICAgICAgICAgICBTRVJJQUwgUFJJTUFS
 WSBLRVksCi0gbmFtZSAgICAgICAgICAgIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKLSBtYXN0
 ZXIgICAgICAgICAgVkFSQ0hBUigyMCkgREVGQVVMVCBOVUxMLAotIGxhc3RfY2hlY2sgICAg
 ICBJTlQgREVGQVVMVCBOVUxMLAotIHR5cGUgICAgICAgICAgICBWQVJDSEFSKDYpIE5PVCBO
 VUxMLAotIG5vdGlmaWVkX3NlcmlhbCBJTlQgREVGQVVMVCBOVUxMLAotIGFjY291bnQgICAg
 ICAgICBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwKK0NSRUFURSBUQUJMRSBkb21haW5zICgK
 KwlpZCBTRVJJQUwsCisJbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisJdHlwZSBWQVJD
 SEFSKDYpIE5PVCBOVUxMLAorCW1hc3RlciBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwsCisJ
 YWNjb3VudCBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwKKwlub3RpZmllZF9zZXJpYWwgSU5U
 IERFRkFVTFQgTlVMTCwKKwlsYXN0X2NoZWNrIElOVCBERUZBVUxUIE5VTEwsCitDT05TVFJB
 SU5UIHBrX2lkCisJUFJJTUFSWSBLRVkgKGlkKSwKK0NPTlNUUkFJTlQgdW5xX25hbWUKKwlV
 TklRVUUgKG5hbWUpCiApOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBuYW1lX2luZGV4IE9OIGRv
 bWFpbnMobmFtZSk7CisKIAogQ1JFQVRFIFRBQkxFIHJlY29yZHMgKAotICAgICAgICBpZCAg
 ICAgICAgICAgICAgU0VSSUFMIFBSSU1BUlkgS0VZLAotICAgICAgICBkb21haW5faWQgICAg
 ICAgSU5UIERFRkFVTFQgTlVMTCwKLSAgICAgICAgbmFtZSAgICAgICAgICAgIFZBUkNIQVIo
 MjU1KSBERUZBVUxUIE5VTEwsCi0gICAgICAgIHR5cGUgICAgICAgICAgICBWQVJDSEFSKDYp
 IERFRkFVTFQgTlVMTCwKLSAgICAgICAgY29udGVudCAgICAgICAgIFZBUkNIQVIoMjU1KSBE
 RUZBVUxUIE5VTEwsCi0gICAgICAgIHR0bCAgICAgICAgICAgICBJTlQgREVGQVVMVCBOVUxM
 LAotICAgICAgICBwcmlvICAgICAgICAgICAgSU5UIERFRkFVTFQgTlVMTCwKLSAgICAgICAg
 Y2hhbmdlX2RhdGUgICAgIElOVCBERUZBVUxUIE5VTEwsCi0gICAgICAgIENPTlNUUkFJTlQg
 ZG9tYWluX2V4aXN0cwotICAgICAgICBGT1JFSUdOIEtFWShkb21haW5faWQpIFJFRkVSRU5D
 RVMgZG9tYWlucyhpZCkKLSAgICAgICAgT04gREVMRVRFIENBU0NBREUKKwlpZCBTRVJJQUws
 CisJZG9tYWluX2lkIElOVCBERUZBVUxUIE5VTEwsCisJbmFtZSBWQVJDSEFSKDI1NSkgREVG
 QVVMVCBOVUxMLAorCXR5cGUgVkFSQ0hBUig2KSBERUZBVUxUIE5VTEwsCisJdHRsIElOVCBE
 RUZBVUxUIE5VTEwsCisJcHJpbyBJTlQgREVGQVVMVCBOVUxMLAorCWNvbnRlbnQgVkFSQ0hB
 UigyNTUpIERFRkFVTFQgTlVMTCwKKwljaGFuZ2VfZGF0ZSBJTlQgREVGQVVMVCBOVUxMLAor
 Q09OU1RSQUlOVCBwa19pZAorCVBSSU1BUlkgS0VZIChpZCksCitDT05TVFJBSU5UIGZrX2Rv
 bWFpbmlkCisJRk9SRUlHTiBLRVkgKGRvbWFpbl9pZCkKKwlSRUZFUkVOQ0VTIGRvbWFpbnMo
 aWQpCisJT04gVVBEQVRFIENBU0NBREUKKwlPTiBERUxFVEUgQ0FTQ0FERQogKTsKIAotQ1JF
 QVRFIElOREVYIHJlY19uYW1lX2luZGV4IE9OIHJlY29yZHMobmFtZSk7Ci1DUkVBVEUgSU5E
 RVggbmFtZXR5cGVfaW5kZXggT04gcmVjb3JkcyhuYW1lLHR5cGUpOwotQ1JFQVRFIElOREVY
 IGRvbWFpbl9pZCBPTiByZWNvcmRzKGRvbWFpbl9pZCk7Ci0KLWNyZWF0ZSB0YWJsZSBzdXBl
 cm1hc3RlcnMgKAotICAgICAgICAgIGlwIFZBUkNIQVIoMjUpIE5PVCBOVUxMLAotICAgICAg
 ICAgIG5hbWVzZXJ2ZXIgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAotICAgICAgICAgIGFjY291
 bnQgVkFSQ0hBUig0MCkgREVGQVVMVCBOVUxMCitDUkVBVEUgSU5ERVggaWR4X3Jkb21haW5p
 ZCBPTiByZWNvcmRzKGRvbWFpbl9pZCk7CitDUkVBVEUgSU5ERVggaWR4X3JuYW1lIE9OIHJl
 Y29yZHMobmFtZSk7CitDUkVBVEUgSU5ERVggaWR4X3JuYW1lX3J0eXBlIE9OIHJlY29yZHMo
 bmFtZSx0eXBlKTsKKworCitDUkVBVEUgVEFCTEUgc3VwZXJtYXN0ZXJzICgKKwlpcCBWQVJD
 SEFSKDQwKSBOT1QgTlVMTCwKKwluYW1lc2VydmVyIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwK
 KwlhY2NvdW50IFZBUkNIQVIoNDApIERFRkFVTFQgTlVMTAogKTsKIAotR1JBTlQgU0VMRUNU
 IE9OIHN1cGVybWFzdGVycyBUTyBwZG5zOwotR1JBTlQgQUxMIE9OIGRvbWFpbnMgVE8gcGRu
 czsKLUdSQU5UIEFMTCBPTiBkb21haW5zX2lkX3NlcSBUTyBwZG5zOwotR1JBTlQgQUxMIE9O
 IHJlY29yZHMgVE8gcGRuczsKLUdSQU5UIEFMTCBPTiByZWNvcmRzX2lkX3NlcSBUTyBwZG5z
 OworQ1JFQVRFIElOREVYIGlkeF9zbWlwX3NtbnMgT04gc3VwZXJtYXN0ZXJzKGlwLG5hbWVz
 ZXJ2ZXIpOworCisKK0dSQU5UIFNFTEVDVCBPTiBzdXBlcm1hc3RlcnMgVE8gcG93ZXJkbnM7
 CitHUkFOVCBBTEwgT04gZG9tYWlucyBUTyBwb3dlcmRuczsKK0dSQU5UIEFMTCBPTiBkb21h
 aW5zX2lkX3NlcSBUTyBwb3dlcmRuczsKK0dSQU5UIEFMTCBPTiByZWNvcmRzIFRPIHBvd2Vy
 ZG5zOworR1JBTlQgQUxMIE9OIHJlY29yZHNfaWRfc2VxIFRPIHBvd2VyZG5zOwpkaWZmIC1y
 dU4gcG93ZXJkbnMub3JnL2ZpbGVzL3BkbnNfc3FsaXRlLnNxbCBwb3dlcmRucy9maWxlcy9w
 ZG5zX3NxbGl0ZS5zcWwKLS0tIHBvd2VyZG5zLm9yZy9maWxlcy9wZG5zX3NxbGl0ZS5zcWwJ
 VHVlIEZlYiAxNCAxMzozNTo1NCAyMDA2CisrKyBwb3dlcmRucy9maWxlcy9wZG5zX3NxbGl0
 ZS5zcWwJV2VkIE1heSAxMCAyMDoxMzoyMCAyMDA2CkBAIC0xLDMzICsxLDQ1IEBACi1jcmVh
 dGUgdGFibGUgZG9tYWlucyAoCi0gIGlkCQkJSU5URUdFUiBQUklNQVJZIEtFWSwKLSAgbmFt
 ZQkJCVZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKLSAgbWFzdGVyCQlWQVJDSEFSKDIwKSBERUZB
 VUxUIE5VTEwsCi0gIGxhc3RfY2hlY2sJCUlOVEVHRVIgREVGQVVMVCBOVUxMLAotICB0eXBl
 CQkJVkFSQ0hBUig2KSBOT1QgTlVMTCwKLSAgbm90aWZpZWRfc2VyaWFsCUlOVEVHRVIgREVG
 QVVMVCBOVUxMLAotICBhY2NvdW50CQlWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwKK0NSRUFU
 RSBUQUJMRSBkb21haW5zICgKKwlpZCBJTlQgQVVUT0lOQ1JFTUVOVCwKKwluYW1lIFZBUkNI
 QVIoMjU1KSBOT1QgTlVMTCwKKwl0eXBlIFZBUkNIQVIoNikgTk9UIE5VTEwsCisJbWFzdGVy
 IFZBUkNIQVIoNDApIERFRkFVTFQgTlVMTCwKKwlhY2NvdW50IFZBUkNIQVIoNDApIERFRkFV
 TFQgTlVMTCwKKwlub3RpZmllZF9zZXJpYWwgSU5UIERFRkFVTFQgTlVMTCwKKwlsYXN0X2No
 ZWNrIElOVCBERUZBVUxUIE5VTEwsCitDT05TVFJBSU5UIHBrX2lkCisJUFJJTUFSWSBLRVkg
 KGlkKSwKK0NPTlNUUkFJTlQgdW5xX25hbWUKKwlVTklRVUUgKG5hbWUpCiApOwogCi1DUkVB
 VEUgVU5JUVVFIElOREVYIG5hbWVfaW5kZXggT04gZG9tYWlucyhuYW1lKTsKIAogQ1JFQVRF
 IFRBQkxFIHJlY29yZHMgKAotICBpZAkJCUlOVEVHRVIgUFJJTUFSWSBLRVksCi0gIGRvbWFp
 bl9pZAkJSU5URUdFUiBERUZBVUxUIE5VTEwsCi0gIG5hbWUJCQlWQVJDSEFSKDI1NSkgREVG
 QVVMVCBOVUxMLAotICB0eXBlCQkJVkFSQ0hBUig2KSBERUZBVUxUIE5VTEwsCi0gIGNvbnRl
 bnQJCVZBUkNIQVIoMjU1KSBERUZBVUxUIE5VTEwsCi0gIHR0bAkJCUlOVEVHRVIgREVGQVVM
 VCBOVUxMLAotICBwcmlvCQkJSU5URUdFUiBERUZBVUxUIE5VTEwsCi0gIGNoYW5nZV9kYXRl
 CQlJTlRFR0VSIERFRkFVTFQgTlVMTAorCWlkIElOVCBBVVRPSU5DUkVNRU5ULAorCWRvbWFp
 bl9pZCBJTlQgREVGQVVMVCBOVUxMLAorCW5hbWUgVkFSQ0hBUigyNTUpIERFRkFVTFQgTlVM
 TCwKKwl0eXBlIFZBUkNIQVIoNikgREVGQVVMVCBOVUxMLAorCXR0bCBJTlQgREVGQVVMVCBO
 VUxMLAorCXByaW8gSU5UIERFRkFVTFQgTlVMTCwKKwljb250ZW50IFZBUkNIQVIoMjU1KSBE
 RUZBVUxUIE5VTEwsCisJY2hhbmdlX2RhdGUgSU5UIERFRkFVTFQgTlVMTCwKK0NPTlNUUkFJ
 TlQgcGtfaWQKKwlQUklNQVJZIEtFWSAoaWQpLAorQ09OU1RSQUlOVCBma19kb21haW5pZAor
 CUZPUkVJR04gS0VZIChkb21haW5faWQpCisJUkVGRVJFTkNFUyBkb21haW5zKGlkKQorCU9O
 IFVQREFURSBDQVNDQURFCisJT04gREVMRVRFIENBU0NBREUKICk7CiAKLUNSRUFURSBJTkRF
 WCByZWNfbmFtZV9pbmRleCBPTiByZWNvcmRzKG5hbWUpOwotQ1JFQVRFIElOREVYIG5hbWV0
 eXBlX2luZGV4IE9OIHJlY29yZHMobmFtZSx0eXBlKTsKLUNSRUFURSBJTkRFWCBkb21haW5f
 aWQgT04gcmVjb3Jkcyhkb21haW5faWQpOwotCi1jcmVhdGUgdGFibGUgc3VwZXJtYXN0ZXJz
 ICgKLSAgaXAJCQlWQVJDSEFSKDI1KSBOT1QgTlVMTCwKLSAgbmFtZXNlcnZlcgkJVkFSQ0hB
 UigyNTUpIE5PVCBOVUxMLAotICBhY2NvdW50CQlWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwK
 K0NSRUFURSBJTkRFWCBpZHhfcmRvbWFpbmlkIE9OIHJlY29yZHMoZG9tYWluX2lkKTsKK0NS
 RUFURSBJTkRFWCBpZHhfcm5hbWUgT04gcmVjb3JkcyhuYW1lKTsKK0NSRUFURSBJTkRFWCBp
 ZHhfcm5hbWVfcnR5cGUgT04gcmVjb3JkcyhuYW1lLHR5cGUpOworCisKK0NSRUFURSBUQUJM
 RSBzdXBlcm1hc3RlcnMgKAorCWlwIFZBUkNIQVIoNDApIE5PVCBOVUxMLAorCW5hbWVzZXJ2
 ZXIgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorCWFjY291bnQgVkFSQ0hBUig0MCkgREVGQVVM
 VCBOVUxMCiApOwogCitDUkVBVEUgSU5ERVggaWR4X3NtaXBfc21ucyBPTiBzdXBlcm1hc3Rl
 cnMoaXAsbmFtZXNlcnZlcik7CmRpZmYgLXJ1TiBwb3dlcmRucy5vcmcvcGtnLXBsaXN0IHBv
 d2VyZG5zL3BrZy1wbGlzdAotLS0gcG93ZXJkbnMub3JnL3BrZy1wbGlzdAlUaHUgRmViIDIz
 IDE1OjI2OjMxIDIwMDYKKysrIHBvd2VyZG5zL3BrZy1wbGlzdAlXZWQgTWF5IDEwIDIyOjM2
 OjMwIDIwMDYKQEAgLTIsMjAgKzIsMzYgQEAKIGJpbi96b25lMmxkYXAKIGJpbi96b25lMnNx
 bAogc2Jpbi9wZG5zX3NlcnZlcgorJSVXSVRIUEdTUUwlJWxpYi9saWJncGdteXNxbGJhY2tl
 bmRzcWxiYWNrZW5kLmEKKyUlV0lUSFBHU1FMJSVsaWIvbGliZ3Bnc3FsYmFja2VuZC5sYQor
 JSVXSVRIUEdTUUwlJWxpYi9saWJncGdzcWxiYWNrZW5kLnNvCislJVdJVEhQR1NRTCUlbGli
 L2xpYmdwZ3NxbGJhY2tlbmQuc28uMAogJSVXSVRITVlTUUwlJWxpYi9saWJnbXlzcWxiYWNr
 ZW5kLmEKKyUlV0lUSE1ZU1FMJSVsaWIvbGliZ215c3FsYmFja2VuZC5sYQogJSVXSVRITVlT
 UUwlJWxpYi9saWJnbXlzcWxiYWNrZW5kLnNvCiAlJVdJVEhNWVNRTCUlbGliL2xpYmdteXNx
 bGJhY2tlbmQuc28uMAogJSVXSVRIU1FMTElURSUlbGliL2xpYmdzcWxpdGViYWNrZW5kLmEK
 KyUlV0lUSFNRTExJVEUlJWxpYi9saWJnc3FsaXRlYmFja2VuZC5sYQogJSVXSVRIU1FMTElU
 RSUlbGliL2xpYmdzcWxpdGViYWNrZW5kLnNvCiAlJVdJVEhTUUxMSVRFJSVsaWIvbGliZ3Nx
 bGl0ZWJhY2tlbmQuc28uMAogJSVXSVRITERBUCUlbGliL2xpYmxkYXBiYWNrZW5kLmEKKyUl
 V0lUSExEQVAlJWxpYi9saWJsZGFwYmFja2VuZC5sYQogJSVXSVRITERBUCUlbGliL2xpYmxk
 YXBiYWNrZW5kLnNvCiAlJVdJVEhMREFQJSVsaWIvbGlibGRhcGJhY2tlbmQuc28uMAorJSVX
 SVRIT1BFTkRCWCUlbGliL2xpYm9wZW5kYnhiYWNrZW5kLmEKKyUlV0lUSE9QRU5EQlglJWxp
 Yi9saWJvcGVuZGJ4YmFja2VuZC5sYQorJSVXSVRIT1BFTkRCWCUlbGliL2xpYm9wZW5kYnhi
 YWNrZW5kLnNvCislJVdJVEhPUEVOREJYJSVsaWIvbGlib3BlbmRieGJhY2tlbmQuc28uMAor
 JSVXSVRIR0VPJSVsaWIvbGliZ2VvYmFja2VuZC5hCislJVdJVEhHRU8lJWxpYi9saWJnZW9i
 YWNrZW5kLmxhCislJVdJVEhHRU8lJWxpYi9saWJnZW9iYWNrZW5kLnNvCislJVdJVEhHRU8l
 JWxpYi9saWJnZW9iYWNrZW5kLnNvLjAKIGxpYi9saWJwaXBlYmFja2VuZC5hCiBsaWIvbGli
 cGlwZWJhY2tlbmQubGEKIGxpYi9saWJwaXBlYmFja2VuZC5zbwogbGliL2xpYnBpcGViYWNr
 ZW5kLnNvLjAKICUlUkVDVVJTT1IlJXNiaW4vcGRuc19yZWN1cnNvcgorJSVSRUNVUlNPUiUl
 c2Jpbi9yZWNfY29udHJvbAogQHVuZXhlYyBpZiBjbXAgLXMgJUQvZXRjL3BkbnMuY29uZiAl
 RC9ldGMvcGRucy5jb25mLWRpc3Q7IHRoZW4gcm0gLWYgJUQvZXRjL3BkbnMuY29uZjsgZmkK
 IGV0Yy9wZG5zLmNvbmYtZGlzdAogQGV4ZWMgWyAtZiAlQi9wZG5zLmNvbmYgXSB8fCBjcCAl
 Qi8lZiAlQi9wZG5zLmNvbmYK
 ------------12411D463B870124--
 

From: Ralf van der Enden <tremere@cainites.net>
To: bug-followup@FreeBSD.org, jamie@silverdream.org
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Wed, 10 May 2006 23:46:42 +0200

 ------------B7D5F10BB2D46
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Hello bug-followup,
 
   Please disregard the previous patch. Here's the correct one.
 
   My apologies.
 
 -- 
 Best regards,
  Ralf                          mailto:tremere@cainites.net
 ------------B7D5F10BB2D46
 Content-Type: application/octet-stream; name="pdns-2.9.20_1.diff"
 Content-transfer-encoding: base64
 Content-Disposition: attachment; filename="pdns-2.9.20_1.diff"
 
 ZGlmZiAtcnVOIHBvd2VyZG5zLm9yZy9NYWtlZmlsZSBwb3dlcmRucy9NYWtlZmlsZQotLS0g
 cG93ZXJkbnMub3JnL01ha2VmaWxlCUZyaSBNYXIgMTcgMTQ6MzQ6MDMgMjAwNgorKysgcG93
 ZXJkbnMvTWFrZWZpbGUJV2VkIE1heSAxMCAyMzoxNzoyNCAyMDA2CkBAIC0yLDExICsyLDEy
 IEBACiAjIERhdGUgQ3JlYXRlZDoJCQkJMTQuSmFuIDIwMDMKICMgV2hvbToJCQkJCWRpcmsu
 bWV5ZXJAZGlub2V4LnN1Yi5vcmcKICMKLSMgJEZyZWVCU0Q6IHBvcnRzL2Rucy9wb3dlcmRu
 cy9NYWtlZmlsZSx2IDEuNDcgMjAwNi8wMi8yMyAxMDozNjoyMiBhZGUgRXhwICQKKyMgJEZy
 ZWVCU0Q6IHBvcnRzL2Rucy9wb3dlcmRucy9NYWtlZmlsZSx2IDEuNDggMjAwNi8wMy8xNyAx
 NjoxNDo0MSBnYXJnYSBFeHAgJAogIwogCiBQT1JUTkFNRT0JcG93ZXJkbnMKIFBPUlRWRVJT
 SU9OPQkyLjkuMjAKK1BPUlRSRVZJU0lPTj0JMQogQ0FURUdPUklFUz0JZG5zIGlwdjYKIE1B
 U1RFUl9TSVRFUz0JaHR0cDovL2Rvd25sb2Fkcy5wb3dlcmRucy5jb20vcmVsZWFzZXMvIFwK
 IAkJaHR0cDovL21pcnJvcnMuZXZvbHZhLnJvL3Bvd2VyZG5zLmNvbS9yZWxlYXNlcy8KQEAg
 LTI0LDggKzI1LDggQEAKIENYWEZMQUdTKz0JLUkke0xPQ0FMQkFTRX0vaW5jbHVkZQogTERG
 TEFHUys9CS1MJHtMT0NBTEJBU0V9L2xpYgogQ09ORklHVVJFX1RBUkdFVD0JLS1idWlsZD0k
 e01BQ0hJTkVfQVJDSH0tcG9ydGJsZC1mcmVlYnNkJHtPU1JFTH0KLUNPTkZJR1VSRV9BUkdT
 Kz0JLS13aXRoLW1vZHVsZXM9IiR7Q09ORklHVVJFX01PRFVMRVN9IHBpcGUiIFwKLQkJCS0t
 d2l0aC1keW5tb2R1bGVzPSIiCitDT05GSUdVUkVfQVJHUys9CS0td2l0aC1tb2R1bGVzPSJw
 aXBlIiBcCisJCQktLXdpdGgtZHlubW9kdWxlcz0iJHtDT05GSUdVUkVfTU9EVUxFU30iCiAj
 CQkJLS1lbmFibGUtZGVidWcKIFNDUklQVFNfRU5WPQlXUktESVJQUkVGSVg9IiR7V1JLRElS
 UFJFRklYfSIgXAogCQlDVVJESVIyPSIkey5DVVJESVJ9IiBcCkBAIC0zNiw2MiArMzcsODAg
 QEAKIAogU1VCX0ZJTEVTPQlwa2ctbWVzc2FnZQogCitPUFRJT05TPQlQR1NRTAkJIlBvc3Rn
 cmVTUUwgYmFja2VuZCIgb24gXAorCQlNWVNRTAkJIk15U1FMIGJhY2tlbmQiIG9mZiBcCisJ
 CVNRTElURQkJIlNRTGl0ZSAyIGJhY2tlbmQiIG9mZiBcCisJCVNRTElURTMJCSJTUUxpdGUg
 MyBiYWNrZW5kIiBvZmYgXAorCQlPUEVOREJYCQkiT3BlbkRCWCBiYWNrZW5kIiBvZmYgXAor
 CQlPUEVOTERBUAkiT3BlbkxEQVAgYmFja2VuZCIgb2ZmIFwKKwkJR0VPCQkiR2VvIGJhY2tl
 bmQiIG9mZiBcCisJCVJFQ1VSU09SCSJCdWlsZCBSZWN1cnNvciIgb2ZmCisKIC5pbmNsdWRl
 IDxic2QucG9ydC5wcmUubWs+CiAKIFVTRV9SQ19TVUJSKz0JcGRucwogCi0jIHVzZSB1c2Vy
 IGNvbmZpZyBpZiBwb3NzaWJsZQotLmlmIGV4aXN0cygke1dSS0RJUlBSRUZJWH0key5DVVJE
 SVJ9L01ha2VmaWxlLmluYykKLS5pbmNsdWRlICIke1dSS0RJUlBSRUZJWH0key5DVVJESVJ9
 L01ha2VmaWxlLmluYyIKKy5pZiBkZWZpbmVkKFdJVEhfR0VPKQorQ09ORklHVVJFX01PRFVM
 RVMrPQkiZ2VvIgorUExJU1RfU1VCKz0JCVdJVEhHRU89IiIKIC5lbHNlCi0uaWYgZGVmaW5l
 ZChCQVRDSCkKLSMgZGVmYXVsdCBwYWNrYWdlLCBjYW4gYmUgY29uZmlndXJlZCBpbiAvZXRj
 L21ha2UuY29uZgotUE9XRVJETlNfT1BUSU9OUz89CVwiUG9zdGdyZVNRTFwiCi0uZW5kaWYK
 LSMgbWFrZSBJTkRFWCBtYXRjaAotTk9fREVTQ1JJQkU9eWVzCitQTElTVF9TVUIrPQkJV0lU
 SEdFTz0iQGNvbW1lbnQgIgogLmVuZGlmCiAKLS5pZiBkZWZpbmVkKFdJVEhfUE9TVEdSRVNR
 TF9EUklWRVIpICYmICFkZWZpbmVkKFdJVEhPVVRfUE9TVEdSRVNRTF9EUklWRVIpCi1MSUJf
 REVQRU5EUys9CXBxWytdWytdLjQ6JHtQT1JUU0RJUn0vZGF0YWJhc2VzL3Bvc3RncmVzcWwt
 bGlicHErKwotQ09ORklHVVJFX0FSR1MrPQktLWVuYWJsZS1wZ3NxbCAtLXdpdGgtcGdzcWwt
 aW5jbHVkZXM9JHtMT0NBTEJBU0V9L2luY2x1ZGUKLUNPTkZJR1VSRV9NT0RVTEVTKz0JImdw
 Z3NxbCIKLUNGTEFHUys9CQktRERMTElNUE9SVD0iIgorLmlmIGRlZmluZWQoV0lUSF9QR1NR
 TCkKK1VTRV9QR1NRTD89ICAgICAgICAgICAgIFlFUworQ09ORklHVVJFX01PRFVMRVMrPSAg
 ICAgInBnc3FsIgorUExJU1RfU1VCKz0gICAgICAgICAgICAgV0lUSFBHU1FMPSIiCiAuZWxz
 ZQotQ09ORklHVVJFX0FSR1MrPQktLWRpc2FibGUtcGdzcWwKK1BMSVNUX1NVQis9ICAgICAg
 ICAgICAgIFdJVEhQR1NRTD0iQGNvbW1lbnQgIgogLmVuZGlmCiAKLS5pZiBkZWZpbmVkKFdJ
 VEhfTVlTUUxfRFJJVkVSKQotVVNFX01ZU1FMPz0JCVlFUwotQ09ORklHVVJFX0FSR1MrPQkt
 LWVuYWJsZS1teXNxbCAtLXdpdGgtbXlzcWwtaW5jbHVkZXM9JHtMT0NBTEJBU0V9Ci1DT05G
 SUdVUkVfTU9EVUxFUys9CSJnbXlzcWwiCi1QTElTVF9TVUIrPQkJV0lUSE1ZU1FMPSIiCisu
 aWYgZGVmaW5lZChXSVRIX01ZU1FMKQorVVNFX01ZU1FMPz0gICAgICAgICAgICAgWUVTCitD
 T05GSUdVUkVfTU9EVUxFUys9ICAgICAibXlzcWwiCitDWFhGTEFHUys9ICAgICAgICAgICAg
 ICAtSSR7TE9DQUxCQVNFfS9pbmNsdWRlL215c3FsCitMREZMQUdTKz0gICAgICAgICAgICAg
 ICAtTCR7TE9DQUxCQVNFfS9saWIvbXlzcWwKK1BMSVNUX1NVQis9ICAgICAgICAgICAgIFdJ
 VEhNWVNRTD0iIgogLmVsc2UKLUNPTkZJR1VSRV9BUkdTKz0JLS1kaXNhYmxlLW15c3FsCi1Q
 TElTVF9TVUIrPQkJV0lUSE1ZU1FMPSJAY29tbWVudCAiCitQTElTVF9TVUIrPSAgICAgICAg
 ICAgICBXSVRITVlTUUw9IkBjb21tZW50ICIKIC5lbmRpZgogCi0uaWYgZGVmaW5lZChXSVRI
 X0xEQVApCisuaWYgZGVmaW5lZChXSVRIX09QRU5MREFQKQogVVNFX09QRU5MREFQPz0JCVlF
 UwogQ09ORklHVVJFX01PRFVMRVMrPQkibGRhcCIKLVBMSVNUX1NVQis9CQlXSVRITERBUD0i
 IgogQ1hYRkxBR1MrPQkJLUwke0xPQ0FMQkFTRX0vbGliCitQTElTVF9TVUIrPQkJV0lUSExE
 QVA9IiIKIC5lbHNlCiBQTElTVF9TVUIrPQkJV0lUSExEQVA9IkBjb21tZW50ICIKIC5lbmRp
 ZgogCiAuaWYgZGVmaW5lZChXSVRIX1NRTElURSkKLUxJQl9ERVBFTkRTKz0Jc3FsaXRlLjI6
 JHtQT1JUU0RJUn0vZGF0YWJhc2VzL3NxbGl0ZTIKLUNPTkZJR1VSRV9BUkdTKz0JLS1lbmFi
 bGUtc3FsaXRlCi1DT05GSUdVUkVfTU9EVUxFUys9CSJnc3FsaXRlIgotUExJU1RfU1VCKz0J
 CVdJVEhTUUxMSVRFPSIiCitVU0VfU1FMSVRFPz0gICAgICAgICAgICAyCitDT05GSUdVUkVf
 TU9EVUxFUys9ICAgICAic3FsaXRlIgorUExJU1RfU1VCKz0gICAgICAgICAgICAgV0lUSFNR
 TElURT0iIgogLmVsc2UKLUNPTkZJR1VSRV9BUkdTKz0JLS1kaXNhYmxlLXNxbGl0ZQotUExJ
 U1RfU1VCKz0JCVdJVEhTUUxMSVRFPSJAY29tbWVudCAiCitQTElTVF9TVUIrPSAgICAgICAg
 ICAgICBXSVRIU1FMSVRFPSJAY29tbWVudCAiCiAuZW5kaWYKIAotLmlmIGRlZmluZWQoUE9X
 RVJETlNfV0lUSF9SRUNVUlNPUikKLVVTRV9SQ19TVUJSKz0JcGRuc19yZWN1cnNvcgorLmlm
 IGRlZmluZWQoV0lUSF9TUUxJVEUzKQorVVNFX1NRTElURT89ICAgICAgICAgICAgMworQ09O
 RklHVVJFX01PRFVMRVMrPSAgICAgInNxbGl0ZTMiCitQTElTVF9TVUIrPSAgICAgICAgICAg
 ICBXSVRIU1FMSVRFMz0iIgorLmVsc2UKK1BMSVNUX1NVQis9ICAgICAgICAgICAgIFdJVEhT
 UUxJVEUzPSJAY29tbWVudCAiCisuZW5kaWYKKworLmlmIGRlZmluZWQoV0lUSF9PUEVOREJY
 KQorTElCX0RFUEVORFMrPQkJb3BlbmRieC4xOiR7UE9SVFNESVJ9L2RhdGFiYXNlcy9vcGVu
 ZGJ4CitDT05GSUdVUkVfTU9EVUxFUys9CSJvcGVuZGJ4IgorUExJU1RfU1VCKz0JCVdJVEhP
 UEVOREJYPSIiCitDWFhGTEFHUys9CQktTCR7TE9DQUxCQVNFfS9saWIKKy5lbHNlCitQTElT
 VF9TVUIrPQkJV0lUSE9QRU5EQlg9IkBjb21tZW50ICIKKy5lbmRpZgorCisuaWYgZGVmaW5l
 ZChXSVRIX1JFQ1VSU09SKQorVVNFX1JDX1NVQlIrPQkJcGRuc19yZWN1cnNvcgogQ09ORklH
 VVJFX0FSR1MrPQktLWVuYWJsZS1yZWN1cnNvcgogUExJU1RfU1VCKz0JCVJFQ1VSU09SPSIi
 CiAuZWxzZQpAQCAtMTEyLDIxICsxMzEsNyBAQAogVVNFX0dDQz0zLjQKIC5lbmRpZgogCi0u
 aWYgZGVmaW5lZChOT19ERVNDUklCRSkKLWRlc2NyaWJlOgotLmlmIGRlZmluZWQoQkFUQ0gp
 Ci0JQCAke1NFVEVOVn0gJHtTQ1JJUFRTX0VOVn0gJHtTSH0gJHtGSUxFU0RJUn0vY29uZmln
 dXJlLnBvd2VyZG5zCi0uZW5kaWYKLQlAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9ICR7X19z
 b2Z0TUFLRUZMQUdTfSBCQVRDSD15ZXMgJHsuVEFSR0VUfQotLmVuZGlmCi0KLXByZS1ldmVy
 eXRoaW5nOjoKLQlAICR7U0VURU5WfSAke1NDUklQVFNfRU5WfSAke1NIfSAke0ZJTEVTRElS
 fS9jb25maWd1cmUucG93ZXJkbnMKLQotcG9zdC1jbGVhbjoKLQlAICR7Uk19IC1mICR7V1JL
 RElSUFJFRklYfSR7LkNVUkRJUn0vTWFrZWZpbGUuaW5jCi0KLS5pZiBkZWZpbmVkKFdJVEhf
 TERBUCkKKy5pZiBkZWZpbmVkKFdJVEhfT1BFTkxEQVApCiBwb3N0LXBhdGNoOgogCSR7UkVJ
 TlBMQUNFX0NNRH0gLWUgJ3M7LUkuIDstSS4gLUkke0xPQ0FMQkFTRX0vaW5jbHVkZSA7JyBc
 CiAJCS1lICdzO2xhX0xERkxBR1MgPTtsYV9MREZMQUdTID0gLUwke0xPQ0FMQkFTRX0vbGli
 OycgXApkaWZmIC1ydU4gcG93ZXJkbnMub3JnL01ha2VmaWxlLmluYyBwb3dlcmRucy9NYWtl
 ZmlsZS5pbmMKLS0tIHBvd2VyZG5zLm9yZy9NYWtlZmlsZS5pbmMJV2VkIEZlYiAxNSAxMzo1
 NjozNiAyMDA2CisrKyBwb3dlcmRucy9NYWtlZmlsZS5pbmMJVGh1IEphbiAgMSAwMTowMDow
 MCAxOTcwCkBAIC0xICswLDAgQEAKLVdJVEhfUE9TVEdSRVNRTF9EUklWRVI9WUVTCmRpZmYg
 LXJ1TiBwb3dlcmRucy5vcmcvZmlsZXMvY29uZmlndXJlLnBvd2VyZG5zIHBvd2VyZG5zL2Zp
 bGVzL2NvbmZpZ3VyZS5wb3dlcmRucwotLS0gcG93ZXJkbnMub3JnL2ZpbGVzL2NvbmZpZ3Vy
 ZS5wb3dlcmRucwlUdWUgRmViIDE0IDEzOjM1OjU0IDIwMDYKKysrIHBvd2VyZG5zL2ZpbGVz
 L2NvbmZpZ3VyZS5wb3dlcmRucwlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAKQEAgLTEsNzAg
 KzAsMCBAQAotIyEvYmluL3NoCi0jCi0jICRGcmVlQlNEOiBwb3J0cy9kbnMvcG93ZXJkbnMv
 ZmlsZXMvY29uZmlndXJlLnBvd2VyZG5zLHYgMS45IDIwMDUvMTEvMDQgMTA6Mjc6Mzkga3dt
 IEV4cCAkCi0jCi1pZiBbIC1mICR7V1JLRElSUFJFRklYfSR7Q1VSRElSMn0vTWFrZWZpbGUu
 aW5jIF07IHRoZW4KLQlleGl0Ci1maQotCi1pZiBbICIke1BPV0VSRE5TX09QVElPTlN9IiBd
 OyB0aGVuCi0Jc2V0ICR7UE9XRVJETlNfT1BUSU9OU30KLWVsc2UKLQlkaWFsb2cgLS10aXRs
 ZSAiY29uZmlndXJhdGlvbiBvcHRpb25zIiAtLWNsZWFyIFwKLQkJCQktLWNoZWNrbGlzdCAi
 XG5cCi1QbGVhc2Ugc2VsZWN0IGRlc2lyZWQgb3B0aW9uczoiIC0xIC0xIDggXAotUG9zdGdy
 ZVNRTAkiUG9zdGdyZVNRTCBkcml2ZXIiIE9OIFwKLU15U1FMCQkiTXlTUUwgZHJpdmVyIiBP
 RkYgXAotT3BlbkxEQVAJIk9wZW5MREFQIGJhY2tlbmQiIE9GRiBcCi1TUUxpdGUJCSJTUUxp
 dGUgYmFja2VuZCIgT0ZGIFwKLVJlY3Vyc29yCSJCdWlsZCBSZWN1cnNvciIgT0ZGIFwKLTI+
 IC90bXAvY2hlY2tsaXN0LnRtcC4kJAotCi0gICAgICAgIHJldHZhbD0kPwotCWlmIFsgLXMg
 L3RtcC9jaGVja2xpc3QudG1wLiQkIF07IHRoZW4KLQkJCXNldCBgY2F0IC90bXAvY2hlY2ts
 aXN0LnRtcC4kJGAKLQlmaQotCXJtIC1mIC90bXAvY2hlY2tsaXN0LnRtcC4kJAotCi0JY2Fz
 ZSAkcmV0dmFsIGluCi0JCTApICAgICAgaWYgWyAteiAiJCoiIF07IHRoZW4KLQkJCQllY2hv
 ICJOb3RoaW5nIHNlbGVjdGVkIgotCQkJZmkKLQkJCTs7Ci0JCTEpICAgICAgZWNobyAiQ2Fu
 Y2VsIHByZXNzZWQuIgotCQkJZXhpdCAxCi0JCQk7OwotCWVzYWMKLWZpCi0KLSR7TUtESVJ9
 ICR7V1JLRElSUFJFRklYfSR7Q1VSRElSMn0KLWV4ZWMgPiAke1dSS0RJUlBSRUZJWH0ke0NV
 UkRJUjJ9L01ha2VmaWxlLmluYwotCi13aGlsZSBbICIkMSIgXTsgZG8KLQljYXNlICQxIGlu
 Ci0JCVwiUG9zdGdyZVNRTFwiKQotCQkJZWNobyBXSVRIX1BPU1RHUkVTUUxfRFJJVkVSPVlF
 UwotCQkJOzsKLQkJXCJNeVNRTFwiKQotCQkJZWNobyBXSVRIX01ZU1FMX0RSSVZFUj1ZRVMK
 LQkJCTs7Ci0JCVwiT3BlbkxEQVBcIikKLQkJCWVjaG8gV0lUSF9MREFQPVlFUwotCQkJOzsK
 LQkJXCJTUUxpdGVcIikKLQkJCWVjaG8gV0lUSF9TUUxJVEU9WUVTCi0JCQllY2hvIFNRTElU
 RV9QT1JUPz1kYXRhYmFzZXMvc3FsaXRlCi0JCQk7OwotCQlcIlJlY3Vyc29yXCIpCi0JCQll
 Y2hvIFBPV0VSRE5TX1dJVEhfUkVDVVJTT1I9WUVTCi0JCQk7OwotCQlcIm5vdGhpbmdcInx0
 cnVlKQotCQkJOzsKLQkJKikKLQkJCWVjaG8gIkludmFsaWQgb3B0aW9uKHMpOiAkKiIgPiAv
 ZGV2L3N0ZGVycgotCQkJcm0gLWYgJHtXUktESVJQUkVGSVh9JHtDVVJESVIyfS9NYWtlZmls
 ZS5pbmMKLQkJCWV4aXQgMQotCQkJOzsKLQllc2FjCi0gICAgc2hpZnQKLWRvbmUKLWV4ZWMg
 PiAvZGV2L3N0ZGVycgpkaWZmIC1ydU4gcG93ZXJkbnMub3JnL2ZpbGVzL3BkbnMuY29uZiBw
 b3dlcmRucy9maWxlcy9wZG5zLmNvbmYKLS0tIHBvd2VyZG5zLm9yZy9maWxlcy9wZG5zLmNv
 bmYJVHVlIEZlYiAxNCAxMzozNTo1NCAyMDA2CisrKyBwb3dlcmRucy9maWxlcy9wZG5zLmNv
 bmYJV2VkIE1heSAxMCAyMDoxMzoyMCAyMDA2CkBAIC0xNiw2ICsxNiwxNSBAQAogI2xhdW5j
 aD1nc3FsaXRlCiAjZ3NxbGl0ZS1kYXRhYmFzZT08cGF0aCB0byB5b3VyIFNRTGl0ZSBkYXRh
 YmFzZT4KIAorIyBPcGVuREJYCisjbGF1bmNoPW9wZW5kYngKKyNvcGVuZGJ4LWJhY2tlbmQ9
 bXlzcWwgCisjb3BlbmRieC1ob3N0PTEyNy4wLjAuMQorI29wZW5kYngtZGF0YWJhc2U9cGRu
 cworI29wZW5kYngtdXNlcm5hbWU9cGRucworI29wZW5kYngtcGFzc3dvcmQ9cGRucworCisj
 IEF1dG9nZW5lcmF0ZWQgY29uZmlndXJhdGlvbiBmaWxlIHRlbXBsYXRlCiAjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgYWxsb3ctYXhmci1pcHMJSWYgZGlzYWJsZWQs
 IERPIGFsbG93IHpvbmV0cmFuc2ZlcnMgZnJvbSB0aGVzZSBJUCBhZGRyZXNzZXMKICMKQEAg
 LTI0MCw2ICsyNDksMjEgQEAKICMgc29hLW1pbmltdW0tdHRsCURlZmF1bHQgU09BIG1pbmlu
 dW0gdHRsCiAjCiAjIHNvYS1taW5pbXVtLXR0bD0zNjAwCisKKyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIworIyBzb2EtcmVmcmVzaC1kZWZhdWx0CURlZmF1bHQgU09BIHJl
 ZnJlc2gKKyMKKyMgc29hLXJlZnJlc2gtZGVmYXVsdD0xMDgwMAorCisjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgc29hLXJldHJ5LWRlZmF1bHQJRGVmYXVsdCBTT0Eg
 cmV0cnkKKyMKKyMgc29hLXJldHJ5LWRlZmF1bHQ9MzYwMAorCisjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMKKyMgc29hLWV4cGlyZS1kZWZhdWx0CURlZmF1bHQgU09BIGV4
 cGlyZQorIworIyBzb2EtZXhwaXJlLWRlZmF1bHQ9NjA0ODAwCiAKICMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBzb2Etc2VyaWFsLW9mZnNldAlNYWtlIHN1cmUgdGhh
 dCBubyBTT0Egc2VyaWFsIGlzIGxlc3MgdGhhbiB0aGlzIG51bWJlcgpkaWZmIC1ydU4gcG93
 ZXJkbnMub3JnL2ZpbGVzL3BkbnNfbXlzcWwuc3FsIHBvd2VyZG5zL2ZpbGVzL3BkbnNfbXlz
 cWwuc3FsCi0tLSBwb3dlcmRucy5vcmcvZmlsZXMvcGRuc19teXNxbC5zcWwJVHVlIEZlYiAx
 NCAxMzozNTo1NCAyMDA2CisrKyBwb3dlcmRucy9maWxlcy9wZG5zX215c3FsLnNxbAlXZWQg
 TWF5IDEwIDIwOjEzOjIwIDIwMDYKQEAgLTEsMzggKzEsNTAgQEAKLWNyZWF0ZSB0YWJsZSBk
 b21haW5zICgKLSBpZCAgICAgICAgICAgICAgSU5UIGF1dG9faW5jcmVtZW50LAotIG5hbWUg
 ICAgICAgICAgICBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCi0gbWFzdGVyICAgICAgICAgIFZB
 UkNIQVIoMjApIERFRkFVTFQgTlVMTCwKLSBsYXN0X2NoZWNrICAgICAgSU5UIERFRkFVTFQg
 TlVMTCwKLSB0eXBlICAgICAgICAgICAgVkFSQ0hBUig2KSBOT1QgTlVMTCwKLSBub3RpZmll
 ZF9zZXJpYWwgSU5UIERFRkFVTFQgTlVMTCwKLSBhY2NvdW50ICAgICAgICAgVkFSQ0hBUig0
 MCkgREVGQVVMVCBOVUxMLAotIHByaW1hcnkga2V5IChpZCkKLSl0eXBlPUlubm9EQjsKK0NS
 RUFURSBUQUJMRSBkb21haW5zICgKKwlpZCBJTlQgYXV0b19pbmNyZW1lbnQsCisJbmFtZSBW
 QVJDSEFSKDI1NSkgTk9UIE5VTEwsCisJdHlwZSBWQVJDSEFSKDYpIE5PVCBOVUxMLAorCW1h
 c3RlciBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwsCisJYWNjb3VudCBWQVJDSEFSKDQwKSBE
 RUZBVUxUIE5VTEwsCisJbm90aWZpZWRfc2VyaWFsIElOVCBERUZBVUxUIE5VTEwsCisJbGFz
 dF9jaGVjayBJTlQgREVGQVVMVCBOVUxMLAorQ09OU1RSQUlOVCBwa19pZAorCVBSSU1BUlkg
 S0VZIChpZCksCitDT05TVFJBSU5UIHVucV9uYW1lCisJVU5JUVVFIChuYW1lKQorKSB0eXBl
 PUlubm9EQjsKIAotQ1JFQVRFIFVOSVFVRSBJTkRFWCBuYW1lX2luZGV4IE9OIGRvbWFpbnMo
 bmFtZSk7CiAKIENSRUFURSBUQUJMRSByZWNvcmRzICgKLSAgaWQgICAgICAgICAgICAgIElO
 VCBhdXRvX2luY3JlbWVudCwKLSAgZG9tYWluX2lkICAgICAgIElOVCBERUZBVUxUIE5VTEws
 Ci0gIG5hbWUgICAgICAgICAgICBWQVJDSEFSKDI1NSkgREVGQVVMVCBOVUxMLAotICB0eXBl
 ICAgICAgICAgICAgVkFSQ0hBUig2KSBERUZBVUxUIE5VTEwsCi0gIGNvbnRlbnQgICAgICAg
 ICBWQVJDSEFSKDI1NSkgREVGQVVMVCBOVUxMLAotICB0dGwgICAgICAgICAgICAgSU5UIERF
 RkFVTFQgTlVMTCwKLSAgcHJpbyAgICAgICAgICAgIElOVCBERUZBVUxUIE5VTEwsCi0gIGNo
 YW5nZV9kYXRlICAgICBJTlQgREVGQVVMVCBOVUxMLAotICBwcmltYXJ5IGtleShpZCkKLSl0
 eXBlPUlubm9EQjsKLQotQ1JFQVRFIElOREVYIHJlY19uYW1lX2luZGV4IE9OIHJlY29yZHMo
 bmFtZSk7Ci1DUkVBVEUgSU5ERVggbmFtZXR5cGVfaW5kZXggT04gcmVjb3JkcyhuYW1lLHR5
 cGUpOwotQ1JFQVRFIElOREVYIGRvbWFpbl9pZCBPTiByZWNvcmRzKGRvbWFpbl9pZCk7Ci0K
 LWNyZWF0ZSB0YWJsZSBzdXBlcm1hc3RlcnMgKAotICBpcCBWQVJDSEFSKDI1KSBOT1QgTlVM
 TCwKLSAgbmFtZXNlcnZlciBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCi0gIGFjY291bnQgVkFS
 Q0hBUig0MCkgREVGQVVMVCBOVUxMCisJaWQgSU5UIGF1dG9faW5jcmVtZW50LAorCWRvbWFp
 bl9pZCBJTlQgREVGQVVMVCBOVUxMLAorCW5hbWUgVkFSQ0hBUigyNTUpIERFRkFVTFQgTlVM
 TCwKKwl0eXBlIFZBUkNIQVIoNikgREVGQVVMVCBOVUxMLAorCXR0bCBJTlQgREVGQVVMVCBO
 VUxMLAorCXByaW8gSU5UIERFRkFVTFQgTlVMTCwKKwljb250ZW50IFZBUkNIQVIoMjU1KSBE
 RUZBVUxUIE5VTEwsCisJY2hhbmdlX2RhdGUgSU5UIERFRkFVTFQgTlVMTCwKK0NPTlNUUkFJ
 TlQgcGtfaWQKKwlQUklNQVJZIEtFWSAoaWQpLAorQ09OU1RSQUlOVCBma19kb21haW5pZAor
 CUZPUkVJR04gS0VZIChkb21haW5faWQpCisJUkVGRVJFTkNFUyBkb21haW5zKGlkKQorCU9O
 IFVQREFURSBDQVNDQURFCisJT04gREVMRVRFIENBU0NBREUKKykgdHlwZT1Jbm5vREI7CisK
 K0NSRUFURSBJTkRFWCBpZHhfcmRvbWFpbmlkIE9OIHJlY29yZHMoZG9tYWluX2lkKTsKK0NS
 RUFURSBJTkRFWCBpZHhfcm5hbWUgT04gcmVjb3JkcyhuYW1lKTsKK0NSRUFURSBJTkRFWCBp
 ZHhfcm5hbWVfcnR5cGUgT04gcmVjb3JkcyhuYW1lLHR5cGUpOworCisKK0NSRUFURSBUQUJM
 RSBzdXBlcm1hc3RlcnMgKAorCWlwIFZBUkNIQVIoNDApIE5PVCBOVUxMLAorCW5hbWVzZXJ2
 ZXIgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorCWFjY291bnQgVkFSQ0hBUig0MCkgREVGQVVM
 VCBOVUxMCiApOwogCi1HUkFOVCBTRUxFQ1QgT04gc3VwZXJtYXN0ZXJzIFRPIHBkbnM7Ci1H
 UkFOVCBBTEwgT04gZG9tYWlucyBUTyBwZG5zOwotR1JBTlQgQUxMIE9OIHJlY29yZHMgVE8g
 cGRuczsKK0NSRUFURSBJTkRFWCBpZHhfc21pcF9zbW5zIE9OIHN1cGVybWFzdGVycyhpcCxu
 YW1lc2VydmVyKTsKKworCitHUkFOVCBTRUxFQ1QgT04gc3VwZXJtYXN0ZXJzIFRPIHBvd2Vy
 ZG5zOworR1JBTlQgQUxMIE9OIGRvbWFpbnMgVE8gcG93ZXJkbnM7CitHUkFOVCBBTEwgT04g
 cmVjb3JkcyBUTyBwb3dlcmRuczsKZGlmZiAtcnVOIHBvd2VyZG5zLm9yZy9maWxlcy9wZG5z
 X3Bvc3RncmVzcWwuc3FsIHBvd2VyZG5zL2ZpbGVzL3BkbnNfcG9zdGdyZXNxbC5zcWwKLS0t
 IHBvd2VyZG5zLm9yZy9maWxlcy9wZG5zX3Bvc3RncmVzcWwuc3FsCVR1ZSBGZWIgMTQgMTM6
 MzU6NTQgMjAwNgorKysgcG93ZXJkbnMvZmlsZXMvcGRuc19wb3N0Z3Jlc3FsLnNxbAlXZWQg
 TWF5IDEwIDIwOjEzOjIwIDIwMDYKQEAgLTEsNDAgKzEsNTIgQEAKLWNyZWF0ZSB0YWJsZSBk
 b21haW5zICgKLSBpZCAgICAgICAgICAgICAgU0VSSUFMIFBSSU1BUlkgS0VZLAotIG5hbWUg
 ICAgICAgICAgICBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCi0gbWFzdGVyICAgICAgICAgIFZB
 UkNIQVIoMjApIERFRkFVTFQgTlVMTCwKLSBsYXN0X2NoZWNrICAgICAgSU5UIERFRkFVTFQg
 TlVMTCwKLSB0eXBlICAgICAgICAgICAgVkFSQ0hBUig2KSBOT1QgTlVMTCwKLSBub3RpZmll
 ZF9zZXJpYWwgSU5UIERFRkFVTFQgTlVMTCwKLSBhY2NvdW50ICAgICAgICAgVkFSQ0hBUig0
 MCkgREVGQVVMVCBOVUxMCitDUkVBVEUgVEFCTEUgZG9tYWlucyAoCisJaWQgU0VSSUFMLAor
 CW5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorCXR5cGUgVkFSQ0hBUig2KSBOT1QgTlVM
 TCwKKwltYXN0ZXIgVkFSQ0hBUig0MCkgREVGQVVMVCBOVUxMLAorCWFjY291bnQgVkFSQ0hB
 Uig0MCkgREVGQVVMVCBOVUxMCisJbm90aWZpZWRfc2VyaWFsIElOVCBERUZBVUxUIE5VTEws
 CisJbGFzdF9jaGVjayBJTlQgREVGQVVMVCBOVUxMLAorQ09OU1RSQUlOVCBwa19pZAorCVBS
 SU1BUlkgS0VZIChpZCksCitDT05TVFJBSU5UIHVucV9uYW1lCisJVU5JUVVFIChuYW1lKQog
 KTsKLUNSRUFURSBVTklRVUUgSU5ERVggbmFtZV9pbmRleCBPTiBkb21haW5zKG5hbWUpOwor
 CiAKIENSRUFURSBUQUJMRSByZWNvcmRzICgKLSAgICAgICAgaWQgICAgICAgICAgICAgIFNF
 UklBTCBQUklNQVJZIEtFWSwKLSAgICAgICAgZG9tYWluX2lkICAgICAgIElOVCBERUZBVUxU
 IE5VTEwsCi0gICAgICAgIG5hbWUgICAgICAgICAgICBWQVJDSEFSKDI1NSkgREVGQVVMVCBO
 VUxMLAotICAgICAgICB0eXBlICAgICAgICAgICAgVkFSQ0hBUig2KSBERUZBVUxUIE5VTEws
 Ci0gICAgICAgIGNvbnRlbnQgICAgICAgICBWQVJDSEFSKDI1NSkgREVGQVVMVCBOVUxMLAot
 ICAgICAgICB0dGwgICAgICAgICAgICAgSU5UIERFRkFVTFQgTlVMTCwKLSAgICAgICAgcHJp
 byAgICAgICAgICAgIElOVCBERUZBVUxUIE5VTEwsCi0gICAgICAgIGNoYW5nZV9kYXRlICAg
 ICBJTlQgREVGQVVMVCBOVUxMLAotICAgICAgICBDT05TVFJBSU5UIGRvbWFpbl9leGlzdHMK
 LSAgICAgICAgRk9SRUlHTiBLRVkoZG9tYWluX2lkKSBSRUZFUkVOQ0VTIGRvbWFpbnMoaWQp
 Ci0gICAgICAgIE9OIERFTEVURSBDQVNDQURFCisJaWQgU0VSSUFMLAorCWRvbWFpbl9pZCBJ
 TlQgREVGQVVMVCBOVUxMLAorCW5hbWUgVkFSQ0hBUigyNTUpIERFRkFVTFQgTlVMTCwKKwl0
 eXBlIFZBUkNIQVIoNikgREVGQVVMVCBOVUxMLAorCXR0bCBJTlQgREVGQVVMVCBOVUxMLAor
 CXByaW8gSU5UIERFRkFVTFQgTlVMTCwKKwljb250ZW50IFZBUkNIQVIoMjU1KSBERUZBVUxU
 IE5VTEwsCisJY2hhbmdlX2RhdGUgSU5UIERFRkFVTFQgTlVMTCwKK0NPTlNUUkFJTlQgcGtf
 aWQKKwlQUklNQVJZIEtFWSAoaWQpLAorQ09OU1RSQUlOVCBma19kb21haW5pZAorCUZPUkVJ
 R04gS0VZIChkb21haW5faWQpCisJUkVGRVJFTkNFUyBkb21haW5zKGlkKQorCU9OIFVQREFU
 RSBDQVNDQURFCisJT04gREVMRVRFIENBU0NBREUKICk7CiAKLUNSRUFURSBJTkRFWCByZWNf
 bmFtZV9pbmRleCBPTiByZWNvcmRzKG5hbWUpOwotQ1JFQVRFIElOREVYIG5hbWV0eXBlX2lu
 ZGV4IE9OIHJlY29yZHMobmFtZSx0eXBlKTsKLUNSRUFURSBJTkRFWCBkb21haW5faWQgT04g
 cmVjb3Jkcyhkb21haW5faWQpOwotCi1jcmVhdGUgdGFibGUgc3VwZXJtYXN0ZXJzICgKLSAg
 ICAgICAgICBpcCBWQVJDSEFSKDI1KSBOT1QgTlVMTCwKLSAgICAgICAgICBuYW1lc2VydmVy
 IFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKLSAgICAgICAgICBhY2NvdW50IFZBUkNIQVIoNDAp
 IERFRkFVTFQgTlVMTAorQ1JFQVRFIElOREVYIGlkeF9yZG9tYWluaWQgT04gcmVjb3Jkcyhk
 b21haW5faWQpOworQ1JFQVRFIElOREVYIGlkeF9ybmFtZSBPTiByZWNvcmRzKG5hbWUpOwor
 Q1JFQVRFIElOREVYIGlkeF9ybmFtZV9ydHlwZSBPTiByZWNvcmRzKG5hbWUsdHlwZSk7CisK
 KworQ1JFQVRFIFRBQkxFIHN1cGVybWFzdGVycyAoCisJaXAgVkFSQ0hBUig0MCkgTk9UIE5V
 TEwsCisJbmFtZXNlcnZlciBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisJYWNjb3VudCBWQVJD
 SEFSKDQwKSBERUZBVUxUIE5VTEwKICk7CiAKLUdSQU5UIFNFTEVDVCBPTiBzdXBlcm1hc3Rl
 cnMgVE8gcGRuczsKLUdSQU5UIEFMTCBPTiBkb21haW5zIFRPIHBkbnM7Ci1HUkFOVCBBTEwg
 T04gZG9tYWluc19pZF9zZXEgVE8gcGRuczsKLUdSQU5UIEFMTCBPTiByZWNvcmRzIFRPIHBk
 bnM7Ci1HUkFOVCBBTEwgT04gcmVjb3Jkc19pZF9zZXEgVE8gcGRuczsKK0NSRUFURSBJTkRF
 WCBpZHhfc21pcF9zbW5zIE9OIHN1cGVybWFzdGVycyhpcCxuYW1lc2VydmVyKTsKKworCitH
 UkFOVCBTRUxFQ1QgT04gc3VwZXJtYXN0ZXJzIFRPIHBvd2VyZG5zOworR1JBTlQgQUxMIE9O
 IGRvbWFpbnMgVE8gcG93ZXJkbnM7CitHUkFOVCBBTEwgT04gZG9tYWluc19pZF9zZXEgVE8g
 cG93ZXJkbnM7CitHUkFOVCBBTEwgT04gcmVjb3JkcyBUTyBwb3dlcmRuczsKK0dSQU5UIEFM
 TCBPTiByZWNvcmRzX2lkX3NlcSBUTyBwb3dlcmRuczsKZGlmZiAtcnVOIHBvd2VyZG5zLm9y
 Zy9maWxlcy9wZG5zX3NxbGl0ZS5zcWwgcG93ZXJkbnMvZmlsZXMvcGRuc19zcWxpdGUuc3Fs
 Ci0tLSBwb3dlcmRucy5vcmcvZmlsZXMvcGRuc19zcWxpdGUuc3FsCVR1ZSBGZWIgMTQgMTM6
 MzU6NTQgMjAwNgorKysgcG93ZXJkbnMvZmlsZXMvcGRuc19zcWxpdGUuc3FsCVdlZCBNYXkg
 MTAgMjA6MTM6MjAgMjAwNgpAQCAtMSwzMyArMSw0NSBAQAotY3JlYXRlIHRhYmxlIGRvbWFp
 bnMgKAotICBpZAkJCUlOVEVHRVIgUFJJTUFSWSBLRVksCi0gIG5hbWUJCQlWQVJDSEFSKDI1
 NSkgTk9UIE5VTEwsCi0gIG1hc3RlcgkJVkFSQ0hBUigyMCkgREVGQVVMVCBOVUxMLAotICBs
 YXN0X2NoZWNrCQlJTlRFR0VSIERFRkFVTFQgTlVMTCwKLSAgdHlwZQkJCVZBUkNIQVIoNikg
 Tk9UIE5VTEwsCi0gIG5vdGlmaWVkX3NlcmlhbAlJTlRFR0VSIERFRkFVTFQgTlVMTCwKLSAg
 YWNjb3VudAkJVkFSQ0hBUig0MCkgREVGQVVMVCBOVUxMCitDUkVBVEUgVEFCTEUgZG9tYWlu
 cyAoCisJaWQgSU5UIEFVVE9JTkNSRU1FTlQsCisJbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5V
 TEwsCisJdHlwZSBWQVJDSEFSKDYpIE5PVCBOVUxMLAorCW1hc3RlciBWQVJDSEFSKDQwKSBE
 RUZBVUxUIE5VTEwsCisJYWNjb3VudCBWQVJDSEFSKDQwKSBERUZBVUxUIE5VTEwsCisJbm90
 aWZpZWRfc2VyaWFsIElOVCBERUZBVUxUIE5VTEwsCisJbGFzdF9jaGVjayBJTlQgREVGQVVM
 VCBOVUxMLAorQ09OU1RSQUlOVCBwa19pZAorCVBSSU1BUlkgS0VZIChpZCksCitDT05TVFJB
 SU5UIHVucV9uYW1lCisJVU5JUVVFIChuYW1lKQogKTsKIAotQ1JFQVRFIFVOSVFVRSBJTkRF
 WCBuYW1lX2luZGV4IE9OIGRvbWFpbnMobmFtZSk7CiAKIENSRUFURSBUQUJMRSByZWNvcmRz
 ICgKLSAgaWQJCQlJTlRFR0VSIFBSSU1BUlkgS0VZLAotICBkb21haW5faWQJCUlOVEVHRVIg
 REVGQVVMVCBOVUxMLAotICBuYW1lCQkJVkFSQ0hBUigyNTUpIERFRkFVTFQgTlVMTCwKLSAg
 dHlwZQkJCVZBUkNIQVIoNikgREVGQVVMVCBOVUxMLAotICBjb250ZW50CQlWQVJDSEFSKDI1
 NSkgREVGQVVMVCBOVUxMLAotICB0dGwJCQlJTlRFR0VSIERFRkFVTFQgTlVMTCwKLSAgcHJp
 bwkJCUlOVEVHRVIgREVGQVVMVCBOVUxMLAotICBjaGFuZ2VfZGF0ZQkJSU5URUdFUiBERUZB
 VUxUIE5VTEwKKwlpZCBJTlQgQVVUT0lOQ1JFTUVOVCwKKwlkb21haW5faWQgSU5UIERFRkFV
 TFQgTlVMTCwKKwluYW1lIFZBUkNIQVIoMjU1KSBERUZBVUxUIE5VTEwsCisJdHlwZSBWQVJD
 SEFSKDYpIERFRkFVTFQgTlVMTCwKKwl0dGwgSU5UIERFRkFVTFQgTlVMTCwKKwlwcmlvIElO
 VCBERUZBVUxUIE5VTEwsCisJY29udGVudCBWQVJDSEFSKDI1NSkgREVGQVVMVCBOVUxMLAor
 CWNoYW5nZV9kYXRlIElOVCBERUZBVUxUIE5VTEwsCitDT05TVFJBSU5UIHBrX2lkCisJUFJJ
 TUFSWSBLRVkgKGlkKSwKK0NPTlNUUkFJTlQgZmtfZG9tYWluaWQKKwlGT1JFSUdOIEtFWSAo
 ZG9tYWluX2lkKQorCVJFRkVSRU5DRVMgZG9tYWlucyhpZCkKKwlPTiBVUERBVEUgQ0FTQ0FE
 RQorCU9OIERFTEVURSBDQVNDQURFCiApOwogCi1DUkVBVEUgSU5ERVggcmVjX25hbWVfaW5k
 ZXggT04gcmVjb3JkcyhuYW1lKTsKLUNSRUFURSBJTkRFWCBuYW1ldHlwZV9pbmRleCBPTiBy
 ZWNvcmRzKG5hbWUsdHlwZSk7Ci1DUkVBVEUgSU5ERVggZG9tYWluX2lkIE9OIHJlY29yZHMo
 ZG9tYWluX2lkKTsKLQotY3JlYXRlIHRhYmxlIHN1cGVybWFzdGVycyAoCi0gIGlwCQkJVkFS
 Q0hBUigyNSkgTk9UIE5VTEwsCi0gIG5hbWVzZXJ2ZXIJCVZBUkNIQVIoMjU1KSBOT1QgTlVM
 TCwKLSAgYWNjb3VudAkJVkFSQ0hBUig0MCkgREVGQVVMVCBOVUxMCitDUkVBVEUgSU5ERVgg
 aWR4X3Jkb21haW5pZCBPTiByZWNvcmRzKGRvbWFpbl9pZCk7CitDUkVBVEUgSU5ERVggaWR4
 X3JuYW1lIE9OIHJlY29yZHMobmFtZSk7CitDUkVBVEUgSU5ERVggaWR4X3JuYW1lX3J0eXBl
 IE9OIHJlY29yZHMobmFtZSx0eXBlKTsKKworCitDUkVBVEUgVEFCTEUgc3VwZXJtYXN0ZXJz
 ICgKKwlpcCBWQVJDSEFSKDQwKSBOT1QgTlVMTCwKKwluYW1lc2VydmVyIFZBUkNIQVIoMjU1
 KSBOT1QgTlVMTCwKKwlhY2NvdW50IFZBUkNIQVIoNDApIERFRkFVTFQgTlVMTAogKTsKIAor
 Q1JFQVRFIElOREVYIGlkeF9zbWlwX3NtbnMgT04gc3VwZXJtYXN0ZXJzKGlwLG5hbWVzZXJ2
 ZXIpOwpkaWZmIC1ydU4gcG93ZXJkbnMub3JnL3BrZy1wbGlzdCBwb3dlcmRucy9wa2ctcGxp
 c3QKLS0tIHBvd2VyZG5zLm9yZy9wa2ctcGxpc3QJVGh1IEZlYiAyMyAxNToyNjozMSAyMDA2
 CisrKyBwb3dlcmRucy9wa2ctcGxpc3QJV2VkIE1heSAxMCAyMjozNjozMCAyMDA2CkBAIC0y
 LDIwICsyLDM2IEBACiBiaW4vem9uZTJsZGFwCiBiaW4vem9uZTJzcWwKIHNiaW4vcGRuc19z
 ZXJ2ZXIKKyUlV0lUSFBHU1FMJSVsaWIvbGliZ3BnbXlzcWxiYWNrZW5kc3FsYmFja2VuZC5h
 CislJVdJVEhQR1NRTCUlbGliL2xpYmdwZ3NxbGJhY2tlbmQubGEKKyUlV0lUSFBHU1FMJSVs
 aWIvbGliZ3Bnc3FsYmFja2VuZC5zbworJSVXSVRIUEdTUUwlJWxpYi9saWJncGdzcWxiYWNr
 ZW5kLnNvLjAKICUlV0lUSE1ZU1FMJSVsaWIvbGliZ215c3FsYmFja2VuZC5hCislJVdJVEhN
 WVNRTCUlbGliL2xpYmdteXNxbGJhY2tlbmQubGEKICUlV0lUSE1ZU1FMJSVsaWIvbGliZ215
 c3FsYmFja2VuZC5zbwogJSVXSVRITVlTUUwlJWxpYi9saWJnbXlzcWxiYWNrZW5kLnNvLjAK
 ICUlV0lUSFNRTExJVEUlJWxpYi9saWJnc3FsaXRlYmFja2VuZC5hCislJVdJVEhTUUxMSVRF
 JSVsaWIvbGliZ3NxbGl0ZWJhY2tlbmQubGEKICUlV0lUSFNRTExJVEUlJWxpYi9saWJnc3Fs
 aXRlYmFja2VuZC5zbwogJSVXSVRIU1FMTElURSUlbGliL2xpYmdzcWxpdGViYWNrZW5kLnNv
 LjAKICUlV0lUSExEQVAlJWxpYi9saWJsZGFwYmFja2VuZC5hCislJVdJVEhMREFQJSVsaWIv
 bGlibGRhcGJhY2tlbmQubGEKICUlV0lUSExEQVAlJWxpYi9saWJsZGFwYmFja2VuZC5zbwog
 JSVXSVRITERBUCUlbGliL2xpYmxkYXBiYWNrZW5kLnNvLjAKKyUlV0lUSE9QRU5EQlglJWxp
 Yi9saWJvcGVuZGJ4YmFja2VuZC5hCislJVdJVEhPUEVOREJYJSVsaWIvbGlib3BlbmRieGJh
 Y2tlbmQubGEKKyUlV0lUSE9QRU5EQlglJWxpYi9saWJvcGVuZGJ4YmFja2VuZC5zbworJSVX
 SVRIT1BFTkRCWCUlbGliL2xpYm9wZW5kYnhiYWNrZW5kLnNvLjAKKyUlV0lUSEdFTyUlbGli
 L2xpYmdlb2JhY2tlbmQuYQorJSVXSVRIR0VPJSVsaWIvbGliZ2VvYmFja2VuZC5sYQorJSVX
 SVRIR0VPJSVsaWIvbGliZ2VvYmFja2VuZC5zbworJSVXSVRIR0VPJSVsaWIvbGliZ2VvYmFj
 a2VuZC5zby4wCiBsaWIvbGlicGlwZWJhY2tlbmQuYQogbGliL2xpYnBpcGViYWNrZW5kLmxh
 CiBsaWIvbGlicGlwZWJhY2tlbmQuc28KIGxpYi9saWJwaXBlYmFja2VuZC5zby4wCiAlJVJF
 Q1VSU09SJSVzYmluL3BkbnNfcmVjdXJzb3IKKyUlUkVDVVJTT1IlJXNiaW4vcmVjX2NvbnRy
 b2wKIEB1bmV4ZWMgaWYgY21wIC1zICVEL2V0Yy9wZG5zLmNvbmYgJUQvZXRjL3BkbnMuY29u
 Zi1kaXN0OyB0aGVuIHJtIC1mICVEL2V0Yy9wZG5zLmNvbmY7IGZpCiBldGMvcGRucy5jb25m
 LWRpc3QKIEBleGVjIFsgLWYgJUIvcGRucy5jb25mIF0gfHwgY3AgJUIvJWYgJUIvcGRucy5j
 b25mCg==
 ------------B7D5F10BB2D46--
 

From: "Ralf van der Enden" <tremere@cainites.net>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Thu, 11 May 2006 11:19:46 +0200

 This is a multi-part message in MIME format.
 
 ------=_NextPart_000_008F_01C674EC.CF346860
 Content-Type: text/plain;
 	format=flowed;
 	charset="Windows-1252";
 	reply-type=original
 Content-Transfer-Encoding: 7bit
 
 I'm very very sorry, but I must have been on crack last night. This really 
 is the latest working patch which replaces all previous ones.
 
 Best regards,
 Ralf
 
 ----- Original Message ----- 
 From: "Edwin Groothuis" <edwin@FreeBSD.org>
 To: <tremere@cainites.net>
 Sent: Sunday, May 07, 2006 12:24 AM
 Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for 
 compiling geo backend
 
 
 > Maintainer of dns/powerdns,
 >
 > Please note that PR ports/96891 has just been submitted.
 >
 > If it contains a patch for an upgrade, an enhancement or a bug fix
 > you agree on, reply to this email stating that you approve the patch
 > and a committer will take care of it.
 >
 > The full text of the PR can be found at:
 >    http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 >
 > -- 
 > Edwin Groothuis
 > edwin@FreeBSD.org
 > 
 
 ------=_NextPart_000_008F_01C674EC.CF346860
 Content-Type: application/octet-stream;
 	name="pdns-2.9.20_1.diff"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="pdns-2.9.20_1.diff"
 
 diff -ruN powerdns.org/Makefile powerdns/Makefile=0A=
 --- powerdns.org/Makefile	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/Makefile	Thu May 11 11:16:45 2006=0A=
 @@ -7,6 +7,7 @@=0A=
  =0A=
  PORTNAME=3D	powerdns=0A=
  PORTVERSION=3D	2.9.20=0A=
 +PORTREVISION=3D	1=0A=
  CATEGORIES=3D	dns ipv6=0A=
  MASTER_SITES=3D	http://downloads.powerdns.com/releases/ \=0A=
  		http://mirrors.evolva.ro/powerdns.com/releases/=0A=
 @@ -24,8 +25,8 @@=0A=
  CXXFLAGS+=3D	-I${LOCALBASE}/include=0A=
  LDFLAGS+=3D	-L${LOCALBASE}/lib=0A=
  CONFIGURE_TARGET=3D	--build=3D${MACHINE_ARCH}-portbld-freebsd${OSREL}=0A=
 -CONFIGURE_ARGS+=3D	--with-modules=3D"${CONFIGURE_MODULES} pipe" \=0A=
 -			--with-dynmodules=3D""=0A=
 +CONFIGURE_ARGS+=3D	--with-modules=3D"pipe" \=0A=
 +			--with-dynmodules=3D"${CONFIGURE_MODULES}"=0A=
  #			--enable-debug=0A=
  SCRIPTS_ENV=3D	WRKDIRPREFIX=3D"${WRKDIRPREFIX}" \=0A=
  		CURDIR2=3D"${.CURDIR}" \=0A=
 @@ -36,62 +37,80 @@=0A=
  =0A=
  SUB_FILES=3D	pkg-message=0A=
  =0A=
 +OPTIONS=3D	PGSQL		"PostgreSQL backend" on \=0A=
 +		MYSQL		"MySQL backend" off \=0A=
 +		SQLITE		"SQLite 2 backend" off \=0A=
 +		SQLITE3		"SQLite 3 backend" off \=0A=
 +		OPENDBX		"OpenDBX backend" off \=0A=
 +		OPENLDAP	"OpenLDAP backend" off \=0A=
 +		GEO		"Geo backend" off \=0A=
 +		RECURSOR	"Build Recursor" off=0A=
 +=0A=
  .include <bsd.port.pre.mk>=0A=
  =0A=
  USE_RC_SUBR+=3D	pdns=0A=
  =0A=
 -# use user config if possible=0A=
 -.if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)=0A=
 -.include "${WRKDIRPREFIX}${.CURDIR}/Makefile.inc"=0A=
 +.if defined(WITH_GEO)=0A=
 +CONFIGURE_MODULES+=3D	"geo"=0A=
 +PLIST_SUB+=3D		WITHGEO=3D""=0A=
  .else=0A=
 -.if defined(BATCH)=0A=
 -# default package, can be configured in /etc/make.conf=0A=
 -POWERDNS_OPTIONS?=3D	\"PostgreSQL\"=0A=
 -.endif=0A=
 -# make INDEX match=0A=
 -NO_DESCRIBE=3Dyes=0A=
 +PLIST_SUB+=3D		WITHGEO=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_POSTGRESQL_DRIVER) && =
 !defined(WITHOUT_POSTGRESQL_DRIVER)=0A=
 -LIB_DEPENDS+=3D	pq[+][+].4:${PORTSDIR}/databases/postgresql-libpq++=0A=
 -CONFIGURE_ARGS+=3D	--enable-pgsql =
 --with-pgsql-includes=3D${LOCALBASE}/include=0A=
 -CONFIGURE_MODULES+=3D	"gpgsql"=0A=
 -CFLAGS+=3D		-DDLLIMPORT=3D""=0A=
 +.if defined(WITH_PGSQL)=0A=
 +USE_PGSQL?=3D             YES=0A=
 +CONFIGURE_MODULES+=3D     "pgsql"=0A=
 +PLIST_SUB+=3D             WITHPGSQL=3D""=0A=
  .else=0A=
 -CONFIGURE_ARGS+=3D	--disable-pgsql=0A=
 +PLIST_SUB+=3D             WITHPGSQL=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_MYSQL_DRIVER)=0A=
 -USE_MYSQL?=3D		YES=0A=
 -CONFIGURE_ARGS+=3D	--enable-mysql --with-mysql-includes=3D${LOCALBASE}=0A=
 -CONFIGURE_MODULES+=3D	"gmysql"=0A=
 -PLIST_SUB+=3D		WITHMYSQL=3D""=0A=
 +.if defined(WITH_MYSQL)=0A=
 +USE_MYSQL?=3D             YES=0A=
 +CONFIGURE_MODULES+=3D     "mysql"=0A=
 +CXXFLAGS+=3D              -I${LOCALBASE}/include/mysql=0A=
 +LDFLAGS+=3D               -L${LOCALBASE}/lib/mysql=0A=
 +PLIST_SUB+=3D             WITHMYSQL=3D""=0A=
  .else=0A=
 -CONFIGURE_ARGS+=3D	--disable-mysql=0A=
 -PLIST_SUB+=3D		WITHMYSQL=3D"@comment "=0A=
 +PLIST_SUB+=3D             WITHMYSQL=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_LDAP)=0A=
 +.if defined(WITH_OPENLDAP)=0A=
  USE_OPENLDAP?=3D		YES=0A=
  CONFIGURE_MODULES+=3D	"ldap"=0A=
 -PLIST_SUB+=3D		WITHLDAP=3D""=0A=
  CXXFLAGS+=3D		-L${LOCALBASE}/lib=0A=
 +PLIST_SUB+=3D		WITHLDAP=3D""=0A=
  .else=0A=
  PLIST_SUB+=3D		WITHLDAP=3D"@comment "=0A=
  .endif=0A=
  =0A=
  .if defined(WITH_SQLITE)=0A=
 -LIB_DEPENDS+=3D	sqlite.2:${PORTSDIR}/databases/sqlite2=0A=
 -CONFIGURE_ARGS+=3D	--enable-sqlite=0A=
 -CONFIGURE_MODULES+=3D	"gsqlite"=0A=
 -PLIST_SUB+=3D		WITHSQLLITE=3D""=0A=
 +USE_SQLITE?=3D            2=0A=
 +CONFIGURE_MODULES+=3D     "sqlite"=0A=
 +PLIST_SUB+=3D             WITHSQLITE=3D""=0A=
  .else=0A=
 -CONFIGURE_ARGS+=3D	--disable-sqlite=0A=
 -PLIST_SUB+=3D		WITHSQLLITE=3D"@comment "=0A=
 +PLIST_SUB+=3D             WITHSQLITE=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(POWERDNS_WITH_RECURSOR)=0A=
 -USE_RC_SUBR+=3D	pdns_recursor=0A=
 +.if defined(WITH_SQLITE3)=0A=
 +USE_SQLITE?=3D            3=0A=
 +CONFIGURE_MODULES+=3D     "sqlite3"=0A=
 +PLIST_SUB+=3D             WITHSQLITE3=3D""=0A=
 +.else=0A=
 +PLIST_SUB+=3D             WITHSQLITE3=3D"@comment "=0A=
 +.endif=0A=
 +=0A=
 +.if defined(WITH_OPENDBX)=0A=
 +LIB_DEPENDS+=3D		opendbx.1:${PORTSDIR}/databases/opendbx=0A=
 +CONFIGURE_MODULES+=3D	"opendbx"=0A=
 +PLIST_SUB+=3D		WITHOPENDBX=3D""=0A=
 +CXXFLAGS+=3D		-L${LOCALBASE}/lib=0A=
 +.else=0A=
 +PLIST_SUB+=3D		WITHOPENDBX=3D"@comment "=0A=
 +.endif=0A=
 +=0A=
 +.if defined(WITH_RECURSOR)=0A=
 +USE_RC_SUBR+=3D		pdns_recursor=0A=
  CONFIGURE_ARGS+=3D	--enable-recursor=0A=
  PLIST_SUB+=3D		RECURSOR=3D""=0A=
  .else=0A=
 @@ -112,21 +131,7 @@=0A=
  USE_GCC=3D3.4=0A=
  .endif=0A=
  =0A=
 -.if defined(NO_DESCRIBE)=0A=
 -describe:=0A=
 -.if defined(BATCH)=0A=
 -	@ ${SETENV} ${SCRIPTS_ENV} ${SH} ${FILESDIR}/configure.powerdns=0A=
 -.endif=0A=
 -	@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} BATCH=3Dyes ${.TARGET}=0A=
 -.endif=0A=
 -=0A=
 -pre-everything::=0A=
 -	@ ${SETENV} ${SCRIPTS_ENV} ${SH} ${FILESDIR}/configure.powerdns=0A=
 -=0A=
 -post-clean:=0A=
 -	@ ${RM} -f ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc=0A=
 -=0A=
 -.if defined(WITH_LDAP)=0A=
 +.if defined(WITH_OPENLDAP)=0A=
  post-patch:=0A=
  	${REINPLACE_CMD} -e 's;-I. ;-I. -I${LOCALBASE}/include ;' \=0A=
  		-e 's;la_LDFLAGS =3D;la_LDFLAGS =3D -L${LOCALBASE}/lib;' \=0A=
 diff -ruN powerdns.org/Makefile.inc powerdns/Makefile.inc=0A=
 --- powerdns.org/Makefile.inc	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/Makefile.inc	Thu Jan  1 01:00:00 1970=0A=
 @@ -1 +0,0 @@=0A=
 -WITH_POSTGRESQL_DRIVER=3DYES=0A=
 diff -ruN powerdns.org/files/configure.powerdns =
 powerdns/files/configure.powerdns=0A=
 --- powerdns.org/files/configure.powerdns	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/files/configure.powerdns	Thu Jan  1 01:00:00 1970=0A=
 @@ -1,70 +0,0 @@=0A=
 -#!/bin/sh=0A=
 -#=0A=
 -# $FreeBSD: ports/dns/powerdns/files/configure.powerdns,v 1.9 =
 2005/11/04 10:27:39 kwm Exp $=0A=
 -#=0A=
 -if [ -f ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc ]; then=0A=
 -	exit=0A=
 -fi=0A=
 -=0A=
 -if [ "${POWERDNS_OPTIONS}" ]; then=0A=
 -	set ${POWERDNS_OPTIONS}=0A=
 -else=0A=
 -	dialog --title "configuration options" --clear \=0A=
 -				--checklist "\n\=0A=
 -Please select desired options:" -1 -1 8 \=0A=
 -PostgreSQL	"PostgreSQL driver" ON \=0A=
 -MySQL		"MySQL driver" OFF \=0A=
 -OpenLDAP	"OpenLDAP backend" OFF \=0A=
 -SQLite		"SQLite backend" OFF \=0A=
 -Recursor	"Build Recursor" OFF \=0A=
 -2> /tmp/checklist.tmp.$$=0A=
 -=0A=
 -        retval=3D$?=0A=
 -	if [ -s /tmp/checklist.tmp.$$ ]; then=0A=
 -			set `cat /tmp/checklist.tmp.$$`=0A=
 -	fi=0A=
 -	rm -f /tmp/checklist.tmp.$$=0A=
 -=0A=
 -	case $retval in=0A=
 -		0)      if [ -z "$*" ]; then=0A=
 -				echo "Nothing selected"=0A=
 -			fi=0A=
 -			;;=0A=
 -		1)      echo "Cancel pressed."=0A=
 -			exit 1=0A=
 -			;;=0A=
 -	esac=0A=
 -fi=0A=
 -=0A=
 -${MKDIR} ${WRKDIRPREFIX}${CURDIR2}=0A=
 -exec > ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc=0A=
 -=0A=
 -while [ "$1" ]; do=0A=
 -	case $1 in=0A=
 -		\"PostgreSQL\")=0A=
 -			echo WITH_POSTGRESQL_DRIVER=3DYES=0A=
 -			;;=0A=
 -		\"MySQL\")=0A=
 -			echo WITH_MYSQL_DRIVER=3DYES=0A=
 -			;;=0A=
 -		\"OpenLDAP\")=0A=
 -			echo WITH_LDAP=3DYES=0A=
 -			;;=0A=
 -		\"SQLite\")=0A=
 -			echo WITH_SQLITE=3DYES=0A=
 -			echo SQLITE_PORT?=3Ddatabases/sqlite=0A=
 -			;;=0A=
 -		\"Recursor\")=0A=
 -			echo POWERDNS_WITH_RECURSOR=3DYES=0A=
 -			;;=0A=
 -		\"nothing\"|true)=0A=
 -			;;=0A=
 -		*)=0A=
 -			echo "Invalid option(s): $*" > /dev/stderr=0A=
 -			rm -f ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc=0A=
 -			exit 1=0A=
 -			;;=0A=
 -	esac=0A=
 -    shift=0A=
 -done=0A=
 -exec > /dev/stderr=0A=
 diff -ruN powerdns.org/files/pdns.conf powerdns/files/pdns.conf=0A=
 --- powerdns.org/files/pdns.conf	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/files/pdns.conf	Thu May 11 11:16:19 2006=0A=
 @@ -16,6 +16,15 @@=0A=
  #launch=3Dgsqlite=0A=
  #gsqlite-database=3D<path to your SQLite database>=0A=
  =0A=
 +# OpenDBX=0A=
 +#launch=3Dopendbx=0A=
 +#opendbx-backend=3Dmysql =0A=
 +#opendbx-host=3D127.0.0.1=0A=
 +#opendbx-database=3Dpdns=0A=
 +#opendbx-username=3Dpdns=0A=
 +#opendbx-password=3Dpdns=0A=
 +=0A=
 +# Autogenerated configuration file template=0A=
  #################################=0A=
  # allow-axfr-ips	If disabled, DO allow zonetransfers from these IP =
 addresses=0A=
  #=0A=
 @@ -240,6 +249,21 @@=0A=
  # soa-minimum-ttl	Default SOA mininum ttl=0A=
  #=0A=
  # soa-minimum-ttl=3D3600=0A=
 +=0A=
 +#################################=0A=
 +# soa-refresh-default	Default SOA refresh=0A=
 +#=0A=
 +# soa-refresh-default=3D10800=0A=
 +=0A=
 +#################################=0A=
 +# soa-retry-default	Default SOA retry=0A=
 +#=0A=
 +# soa-retry-default=3D3600=0A=
 +=0A=
 +#################################=0A=
 +# soa-expire-default	Default SOA expire=0A=
 +#=0A=
 +# soa-expire-default=3D604800=0A=
  =0A=
  #################################=0A=
  # soa-serial-offset	Make sure that no SOA serial is less than this =
 number=0A=
 diff -ruN powerdns.org/files/pdns_mysql.sql powerdns/files/pdns_mysql.sql=0A=
 --- powerdns.org/files/pdns_mysql.sql	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/files/pdns_mysql.sql	Thu May 11 11:16:19 2006=0A=
 @@ -1,38 +1,50 @@=0A=
 -create table domains (=0A=
 - id              INT auto_increment,=0A=
 - name            VARCHAR(255) NOT NULL,=0A=
 - master          VARCHAR(20) DEFAULT NULL,=0A=
 - last_check      INT DEFAULT NULL,=0A=
 - type            VARCHAR(6) NOT NULL,=0A=
 - notified_serial INT DEFAULT NULL,=0A=
 - account         VARCHAR(40) DEFAULT NULL,=0A=
 - primary key (id)=0A=
 -)type=3DInnoDB;=0A=
 +CREATE TABLE domains (=0A=
 +	id INT auto_increment,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL,=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
 +) type=3DInnoDB;=0A=
  =0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
  =0A=
  CREATE TABLE records (=0A=
 -  id              INT auto_increment,=0A=
 -  domain_id       INT DEFAULT NULL,=0A=
 -  name            VARCHAR(255) DEFAULT NULL,=0A=
 -  type            VARCHAR(6) DEFAULT NULL,=0A=
 -  content         VARCHAR(255) DEFAULT NULL,=0A=
 -  ttl             INT DEFAULT NULL,=0A=
 -  prio            INT DEFAULT NULL,=0A=
 -  change_date     INT DEFAULT NULL,=0A=
 -  primary key(id)=0A=
 -)type=3DInnoDB;=0A=
 -=0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -  ip VARCHAR(25) NOT NULL,=0A=
 -  nameserver VARCHAR(255) NOT NULL,=0A=
 -  account VARCHAR(40) DEFAULT NULL=0A=
 +	id INT auto_increment,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
 +) type=3DInnoDB;=0A=
 +=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 -GRANT SELECT ON supermasters TO pdns;=0A=
 -GRANT ALL ON domains TO pdns;=0A=
 -GRANT ALL ON records TO pdns;=0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 +=0A=
 +=0A=
 +GRANT SELECT ON supermasters TO powerdns;=0A=
 +GRANT ALL ON domains TO powerdns;=0A=
 +GRANT ALL ON records TO powerdns;=0A=
 diff -ruN powerdns.org/files/pdns_postgresql.sql =
 powerdns/files/pdns_postgresql.sql=0A=
 --- powerdns.org/files/pdns_postgresql.sql	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/files/pdns_postgresql.sql	Thu May 11 11:16:19 2006=0A=
 @@ -1,40 +1,52 @@=0A=
 -create table domains (=0A=
 - id              SERIAL PRIMARY KEY,=0A=
 - name            VARCHAR(255) NOT NULL,=0A=
 - master          VARCHAR(20) DEFAULT NULL,=0A=
 - last_check      INT DEFAULT NULL,=0A=
 - type            VARCHAR(6) NOT NULL,=0A=
 - notified_serial INT DEFAULT NULL,=0A=
 - account         VARCHAR(40) DEFAULT NULL=0A=
 +CREATE TABLE domains (=0A=
 +	id SERIAL,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
  );=0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
 +=0A=
  =0A=
  CREATE TABLE records (=0A=
 -        id              SERIAL PRIMARY KEY,=0A=
 -        domain_id       INT DEFAULT NULL,=0A=
 -        name            VARCHAR(255) DEFAULT NULL,=0A=
 -        type            VARCHAR(6) DEFAULT NULL,=0A=
 -        content         VARCHAR(255) DEFAULT NULL,=0A=
 -        ttl             INT DEFAULT NULL,=0A=
 -        prio            INT DEFAULT NULL,=0A=
 -        change_date     INT DEFAULT NULL,=0A=
 -        CONSTRAINT domain_exists=0A=
 -        FOREIGN KEY(domain_id) REFERENCES domains(id)=0A=
 -        ON DELETE CASCADE=0A=
 +	id SERIAL,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
  );=0A=
  =0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -          ip VARCHAR(25) NOT NULL,=0A=
 -          nameserver VARCHAR(255) NOT NULL,=0A=
 -          account VARCHAR(40) DEFAULT NULL=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 -GRANT SELECT ON supermasters TO pdns;=0A=
 -GRANT ALL ON domains TO pdns;=0A=
 -GRANT ALL ON domains_id_seq TO pdns;=0A=
 -GRANT ALL ON records TO pdns;=0A=
 -GRANT ALL ON records_id_seq TO pdns;=0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 +=0A=
 +=0A=
 +GRANT SELECT ON supermasters TO powerdns;=0A=
 +GRANT ALL ON domains TO powerdns;=0A=
 +GRANT ALL ON domains_id_seq TO powerdns;=0A=
 +GRANT ALL ON records TO powerdns;=0A=
 +GRANT ALL ON records_id_seq TO powerdns;=0A=
 diff -ruN powerdns.org/files/pdns_sqlite.sql =
 powerdns/files/pdns_sqlite.sql=0A=
 --- powerdns.org/files/pdns_sqlite.sql	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/files/pdns_sqlite.sql	Thu May 11 11:16:19 2006=0A=
 @@ -1,33 +1,45 @@=0A=
 -create table domains (=0A=
 -  id			INTEGER PRIMARY KEY,=0A=
 -  name			VARCHAR(255) NOT NULL,=0A=
 -  master		VARCHAR(20) DEFAULT NULL,=0A=
 -  last_check		INTEGER DEFAULT NULL,=0A=
 -  type			VARCHAR(6) NOT NULL,=0A=
 -  notified_serial	INTEGER DEFAULT NULL,=0A=
 -  account		VARCHAR(40) DEFAULT NULL=0A=
 +CREATE TABLE domains (=0A=
 +	id INT AUTOINCREMENT,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL,=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
  );=0A=
  =0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
  =0A=
  CREATE TABLE records (=0A=
 -  id			INTEGER PRIMARY KEY,=0A=
 -  domain_id		INTEGER DEFAULT NULL,=0A=
 -  name			VARCHAR(255) DEFAULT NULL,=0A=
 -  type			VARCHAR(6) DEFAULT NULL,=0A=
 -  content		VARCHAR(255) DEFAULT NULL,=0A=
 -  ttl			INTEGER DEFAULT NULL,=0A=
 -  prio			INTEGER DEFAULT NULL,=0A=
 -  change_date		INTEGER DEFAULT NULL=0A=
 +	id INT AUTOINCREMENT,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
  );=0A=
  =0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -  ip			VARCHAR(25) NOT NULL,=0A=
 -  nameserver		VARCHAR(255) NOT NULL,=0A=
 -  account		VARCHAR(40) DEFAULT NULL=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 diff -ruN powerdns.org/pkg-plist powerdns/pkg-plist=0A=
 --- powerdns.org/pkg-plist	Thu May 11 11:15:47 2006=0A=
 +++ powerdns/pkg-plist	Thu May 11 11:16:19 2006=0A=
 @@ -2,20 +2,36 @@=0A=
  bin/zone2ldap=0A=
  bin/zone2sql=0A=
  sbin/pdns_server=0A=
 +%%WITHPGSQL%%lib/libgpgmysqlbackendsqlbackend.a=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.la=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.so=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.so.0=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.a=0A=
 +%%WITHMYSQL%%lib/libgmysqlbackend.la=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.so=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.so.0=0A=
  %%WITHSQLLITE%%lib/libgsqlitebackend.a=0A=
 +%%WITHSQLLITE%%lib/libgsqlitebackend.la=0A=
  %%WITHSQLLITE%%lib/libgsqlitebackend.so=0A=
  %%WITHSQLLITE%%lib/libgsqlitebackend.so.0=0A=
  %%WITHLDAP%%lib/libldapbackend.a=0A=
 +%%WITHLDAP%%lib/libldapbackend.la=0A=
  %%WITHLDAP%%lib/libldapbackend.so=0A=
  %%WITHLDAP%%lib/libldapbackend.so.0=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.a=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.la=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.so=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.so.0=0A=
 +%%WITHGEO%%lib/libgeobackend.a=0A=
 +%%WITHGEO%%lib/libgeobackend.la=0A=
 +%%WITHGEO%%lib/libgeobackend.so=0A=
 +%%WITHGEO%%lib/libgeobackend.so.0=0A=
  lib/libpipebackend.a=0A=
  lib/libpipebackend.la=0A=
  lib/libpipebackend.so=0A=
  lib/libpipebackend.so.0=0A=
  %%RECURSOR%%sbin/pdns_recursor=0A=
 +%%RECURSOR%%sbin/rec_control=0A=
  @unexec if cmp -s %D/etc/pdns.conf %D/etc/pdns.conf-dist; then rm -f =
 %D/etc/pdns.conf; fi=0A=
  etc/pdns.conf-dist=0A=
  @exec [ -f %B/pdns.conf ] || cp %B/%f %B/pdns.conf=0A=
 
 ------=_NextPart_000_008F_01C674EC.CF346860--
 

From: Tilman Linneweh <arved@freebsd.org>
To: bug-followup@freebsd.org, Ralf van der Enden <tremere@cainites.net>
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Sun, 6 Aug 2006 23:05:00 +0200

 Hello Ralf, 
 
 Can you send the patch again, but not encoded as quoted-printable?
 Thanks!

From: Stefan Walter <sw@gegenunendlich.de>
To: Ralf van der Enden <tremere@cainites.net>
Cc: GNATS <FreeBSD-gnats-submit@FreeBSD.org>
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Sun, 19 Nov 2006 17:18:19 +0100

 Hi Ralf,
 
 unfortunately, the patch you sent cannot be applied easily because your
 mail client sent it in quoted-printable format, which mangles line feeds,
 for instance. (See http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 for what your patch looks like.) Could you re-send the patch or make it
 available for download on a server? (Please note that I have just
 committed changes from two other PRs to the port, so you might have to
 generate a new patch.)
 
 Stefan

From: "Ralf van der Enden" <tremere@cainites.net>
To: "Stefan Walter" <sw@gegenunendlich.de>
Cc: "GNATS" <FreeBSD-gnats-submit@FreeBSD.org>
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Tue, 9 Jan 2007 09:28:36 +0100

 Hi again Stefan,
 
 I'm starting to hate MS Outlook Express. It seems it encoded all my 
 attachments as quoted-printable, so I've put the patch here: 
 http://www.cainites.net/files/pdns-2.9.20_2.diff
 
 Sorry for any inconvenience this has caused.
 
 Best regards,
 Ralf
 ----- Original Message ----- 
 From: "Stefan Walter" <sw@gegenunendlich.de>
 To: "Ralf van der Enden" <tremere@cainites.net>
 Cc: "GNATS" <FreeBSD-gnats-submit@FreeBSD.org>
 Sent: Sunday, November 19, 2006 5:18 PM
 Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for 
 compiling geo backend
 
 
 Hi Ralf,
 
 unfortunately, the patch you sent cannot be applied easily because your
 mail client sent it in quoted-printable format, which mangles line feeds,
 for instance. (See http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 for what your patch looks like.) Could you re-send the patch or make it
 available for download on a server? (Please note that I have just
 committed changes from two other PRs to the port, so you might have to
 generate a new patch.)
 
 Stefan
 

From: "Ralf van der Enden" <tremere@cainites.net>
To: "Stefan Walter" <sw@gegenunendlich.de>
Cc: "GNATS" <FreeBSD-gnats-submit@FreeBSD.org>
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for compiling geo backend
Date: Tue, 9 Jan 2007 09:25:05 +0100

 This is a multi-part message in MIME format.
 
 ------=_NextPart_000_0079_01C733D0.0C2B7FE0
 Content-Type: text/plain;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: 7bit
 
 Hi Stefan,
 
 Sorry for the long wait, but I've been quite busy. I also had to redo the 
 patch and test some things.
 
 Hopefully the attachment can be read this time.
 
 Best regards,
 Ralf
 
 ----- Original Message ----- 
 From: "Stefan Walter" <sw@gegenunendlich.de>
 To: "Ralf van der Enden" <tremere@cainites.net>
 Cc: "GNATS" <FreeBSD-gnats-submit@FreeBSD.org>
 Sent: Sunday, November 19, 2006 5:18 PM
 Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for 
 compiling geo backend
 
 
 Hi Ralf,
 
 unfortunately, the patch you sent cannot be applied easily because your
 mail client sent it in quoted-printable format, which mangles line feeds,
 for instance. (See http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 for what your patch looks like.) Could you re-send the patch or make it
 available for download on a server? (Please note that I have just
 committed changes from two other PRs to the port, so you might have to
 generate a new patch.)
 
 Stefan
 
 ------=_NextPart_000_0079_01C733D0.0C2B7FE0
 Content-Type: application/octet-stream;
 	name="pdns-2.9.20_2.diff"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="pdns-2.9.20_2.diff"
 
 diff -ruN powerdns/Makefile powerdns.new/Makefile=0A=
 --- powerdns/Makefile	Sun Nov 19 16:57:30 2006=0A=
 +++ powerdns.new/Makefile	Mon Jan  8 10:47:21 2007=0A=
 @@ -7,14 +7,14 @@=0A=
  =0A=
  PORTNAME=3D	powerdns=0A=
  PORTVERSION=3D	2.9.20=0A=
 -PORTREVISION=3D	1=0A=
 +PORTREVISION=3D	2=0A=
  CATEGORIES=3D	dns ipv6=0A=
  MASTER_SITES=3D	http://downloads.powerdns.com/releases/ \=0A=
  		http://mirrors.evolva.ro/powerdns.com/releases/=0A=
  DISTNAME=3D	pdns-${PORTVERSION}=0A=
  =0A=
  MAINTAINER=3D	tremere@cainites.net=0A=
 -COMMENT=3D	An advanced DNS server with SQL backend=0A=
 +COMMENT=3D	An advanced DNS server with multiple backends including SQL=0A=
  =0A=
  BUILD_DEPENDS=3D	bjam:${PORTSDIR}/devel/boost=0A=
  =0A=
 @@ -25,8 +25,9 @@=0A=
  CXXFLAGS+=3D	-I${LOCALBASE}/include=0A=
  LDFLAGS+=3D	-L${LOCALBASE}/lib=0A=
  CONFIGURE_TARGET=3D	--build=3D${MACHINE_ARCH}-portbld-freebsd${OSREL}=0A=
 -CONFIGURE_ARGS+=3D	--with-modules=3D"${CONFIGURE_MODULES} pipe" \=0A=
 -			--with-dynmodules=3D""=0A=
 +CONFIGURE_ARGS+=3D	--with-modules=3D"pipe" \=0A=
 +			--with-dynmodules=3D"${CONFIGURE_MODULES}" \=0A=
 +			--sysconfdir=3D"${PREFIX}/etc/pdns"=0A=
  #			--enable-debug=0A=
  SCRIPTS_ENV=3D	WRKDIRPREFIX=3D"${WRKDIRPREFIX}" \=0A=
  		CURDIR2=3D"${.CURDIR}" \=0A=
 @@ -37,97 +38,84 @@=0A=
  =0A=
  SUB_FILES=3D	pkg-message=0A=
  =0A=
 +OPTIONS=3D	PGSQL           "PostgreSQL backend" on \=0A=
 +		MYSQL           "MySQL backend" off \=0A=
 +		SQLITE          "SQLite 2 backend" off \=0A=
 +		SQLITE3         "SQLite 3 backend" off \=0A=
 +		OPENDBX         "OpenDBX backend" off \=0A=
 +		OPENLDAP        "OpenLDAP backend" off \=0A=
 +		GEO             "Geo backend" off=0A=
 +=0A=
  .include <bsd.port.pre.mk>=0A=
  =0A=
  USE_RC_SUBR+=3D	pdns=0A=
  =0A=
 -# use user config if possible=0A=
 -.if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)=0A=
 -.include "${WRKDIRPREFIX}${.CURDIR}/Makefile.inc"=0A=
 +.if defined(WITH_GEO)=0A=
 +CONFIGURE_MODULES+=3D	"geo"=0A=
 +PLIST_SUB+=3D		WITHGEO=3D""=0A=
  .else=0A=
 -.if defined(BATCH)=0A=
 -# default package, can be configured in /etc/make.conf=0A=
 -POWERDNS_OPTIONS?=3D	\"PostgreSQL\"=0A=
 -.endif=0A=
 -# make INDEX match=0A=
 -NO_DESCRIBE=3Dyes=0A=
 +PLIST_SUB+=3D		WITHGEO=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_POSTGRESQL_DRIVER) && =
 !defined(WITHOUT_POSTGRESQL_DRIVER)=0A=
 -LIB_DEPENDS+=3D	pq[+][+].4:${PORTSDIR}/databases/postgresql-libpq++=0A=
 -CONFIGURE_ARGS+=3D	--enable-pgsql =
 --with-pgsql-includes=3D${LOCALBASE}/include=0A=
 +.if defined(WITH_PGSQL)=0A=
 +USE_PGSQL?=3D		YES=0A=
  CONFIGURE_MODULES+=3D	"gpgsql"=0A=
 -CFLAGS+=3D		-DDLLIMPORT=3D""=0A=
 +PLIST_SUB+=3D		WITHPGSQL=3D""=0A=
  .else=0A=
 -CONFIGURE_ARGS+=3D	--disable-pgsql=0A=
 +CONFIGURE_ARG+=3D		--disable-pgsql=0A=
 +PLIST_SUB+=3D		WITHPGSQL=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_MYSQL_DRIVER)=0A=
 +.if defined(WITH_MYSQL)=0A=
  USE_MYSQL?=3D		YES=0A=
 -CONFIGURE_ARGS+=3D	--enable-mysql --with-mysql-includes=3D${LOCALBASE}=0A=
  CONFIGURE_MODULES+=3D	"gmysql"=0A=
 +CXXFLAGS+=3D		-I${LOCALBASE}/include/mysql=0A=
 +LDFLAGS+=3D		-L${LOCALBASE}/lib/mysql=0A=
  PLIST_SUB+=3D		WITHMYSQL=3D""=0A=
  .else=0A=
  CONFIGURE_ARGS+=3D	--disable-mysql=0A=
  PLIST_SUB+=3D		WITHMYSQL=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(WITH_LDAP)=0A=
 +.if defined(WITH_OPENLDAP)=0A=
  USE_OPENLDAP?=3D		YES=0A=
  CONFIGURE_MODULES+=3D	"ldap"=0A=
 -PLIST_SUB+=3D		WITHLDAP=3D""=0A=
  CXXFLAGS+=3D		-L${LOCALBASE}/lib -DLDAP_DEPRECATED=3D1=0A=
 +PLIST_SUB+=3D		WITHOPENLDAP=3D""=0A=
  .else=0A=
 -PLIST_SUB+=3D		WITHLDAP=3D"@comment "=0A=
 +PLIST_SUB+=3D		WITHOPENLDAP=3D"@comment "=0A=
  .endif=0A=
  =0A=
  .if defined(WITH_SQLITE)=0A=
 -LIB_DEPENDS+=3D	sqlite.2:${PORTSDIR}/databases/sqlite2=0A=
 -CONFIGURE_ARGS+=3D	--enable-sqlite=0A=
 +USE_SQLITE?=3D		2=0A=
  CONFIGURE_MODULES+=3D	"gsqlite"=0A=
 -PLIST_SUB+=3D		WITHSQLLITE=3D""=0A=
 +PLIST_SUB+=3D		WITHSQLITE=3D""=0A=
  .else=0A=
 -CONFIGURE_ARGS+=3D	--disable-sqlite=0A=
 -PLIST_SUB+=3D		WITHSQLLITE=3D"@comment "=0A=
 +PLIST_SUB+=3D		WITHSQLITE=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(POWERDNS_WITH_RECURSOR)=0A=
 -USE_RC_SUBR+=3D	pdns_recursor=0A=
 -CONFIGURE_ARGS+=3D	--enable-recursor=0A=
 -PLIST_SUB+=3D		RECURSOR=3D""=0A=
 +.if defined(WITH_SQLITE3)=0A=
 +USE_SQLITE?=3D		3=0A=
 +CONFIGURE_MODULES+=3D	"sqlite"=0A=
 +PLIST_SUB+=3D		WITHSQLITE3=3D""=0A=
  .else=0A=
 -PLIST_SUB+=3D		RECURSOR=3D"@comment "=0A=
 +PLIST_SUB+=3D		WITHSQLITE3=3D"@comment "=0A=
  .endif=0A=
  =0A=
 -.if defined(POWERDNS_WITH_RECURSOR)=0A=
 -.if exists(/usr/include/ucontext.h) && ${OSVERSION} >=3D 500000=0A=
 -UCONTEXT!=3D	${AWK} '/setcontext/ { print "YES" }' \=0A=
 -		/usr/include/ucontext.h=0A=
 -.if ${UCONTEXT} =3D=3D ""=0A=
 -BROKEN=3D		setcontext for recursor not found or FreeBSD version lower =
 than 5.0=0A=
 -.endif=0A=
 -.endif=0A=
 +.if defined(WITH_OPENDBX)=0A=
 +LIB_DEPENDS+=3D		opendbx.1:${PORTSDIR}/databases/opendbx=0A=
 +CONFIGURE_MODULES+=3D	"opendbx"=0A=
 +PLIST_SUB+=3D		WITHOPENDBX=3D""=0A=
 +CXXFLAGS+=3D		-L${LOCALBASE}/lib=0A=
 +.else=0A=
 +PLIST_SUB+=3D		WITHOPENDBX=3D"@comment "=0A=
  .endif=0A=
  =0A=
  .if ${OSVERSION} < 500039=0A=
  USE_GCC=3D3.4=0A=
  .endif=0A=
  =0A=
 -.if defined(NO_DESCRIBE)=0A=
 -describe:=0A=
 -.if defined(BATCH)=0A=
 -	@ ${SETENV} ${SCRIPTS_ENV} ${SH} ${FILESDIR}/configure.powerdns=0A=
 -.endif=0A=
 -	@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} BATCH=3Dyes ${.TARGET}=0A=
 -.endif=0A=
 -=0A=
 -pre-everything::=0A=
 -	@ ${SETENV} ${SCRIPTS_ENV} ${SH} ${FILESDIR}/configure.powerdns=0A=
 -=0A=
 -post-clean:=0A=
 -	@ ${RM} -f ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc=0A=
 -=0A=
 -.if defined(WITH_LDAP)=0A=
 +.if defined(WITH_OPENLDAP)=0A=
  post-patch:=0A=
  	${REINPLACE_CMD} -e 's;-I. ;-I. -I${LOCALBASE}/include ;' \=0A=
  		-e 's;la_LDFLAGS =3D;la_LDFLAGS =3D -L${LOCALBASE}/lib;' \=0A=
 @@ -138,8 +126,8 @@=0A=
  .endif=0A=
  =0A=
  post-install:=0A=
 -.if !exists(${PREFIX}/etc/pdns.conf)=0A=
 -	${INSTALL_DATA} ${PREFIX}/etc/pdns.conf-dist ${PREFIX}/etc/pdns.conf=0A=
 +.if !exists(${PREFIX}/etc/pdns/pdns.conf)=0A=
 +	${INSTALL_DATA} ${PREFIX}/etc/pdns/pdns.conf-dist =
 ${PREFIX}/etc/pdns/pdns.conf=0A=
  .endif=0A=
  .if !defined(NOPORTDOCS)=0A=
  	${MKDIR} ${EXAMPLESDIR}=0A=
 diff -ruN powerdns/Makefile.inc powerdns.new/Makefile.inc=0A=
 --- powerdns/Makefile.inc	Wed Feb 15 13:56:36 2006=0A=
 +++ powerdns.new/Makefile.inc	Thu Jan  1 01:00:00 1970=0A=
 @@ -1 +0,0 @@=0A=
 -WITH_POSTGRESQL_DRIVER=3DYES=0A=
 diff -ruN powerdns/files/configure.powerdns =
 powerdns.new/files/configure.powerdns=0A=
 --- powerdns/files/configure.powerdns	Sun Nov 19 16:54:44 2006=0A=
 +++ powerdns.new/files/configure.powerdns	Thu Jan  1 01:00:00 1970=0A=
 @@ -1,70 +0,0 @@=0A=
 -#!/bin/sh=0A=
 -#=0A=
 -# $FreeBSD: ports/dns/powerdns/files/configure.powerdns,v 1.10 =
 2006/11/19 15:54:44 stefan Exp $=0A=
 -#=0A=
 -if [ -f ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc ]; then=0A=
 -	exit=0A=
 -fi=0A=
 -=0A=
 -if [ "${POWERDNS_OPTIONS}" ]; then=0A=
 -	set ${POWERDNS_OPTIONS}=0A=
 -else=0A=
 -	dialog --title "configuration options" --clear \=0A=
 -				--checklist "\n\=0A=
 -Please select desired options:" -1 -1 8 \=0A=
 -PostgreSQL	"PostgreSQL driver" ON \=0A=
 -MySQL		"MySQL driver" OFF \=0A=
 -OpenLDAP	"OpenLDAP backend" OFF \=0A=
 -SQLite		"SQLite backend" OFF \=0A=
 -Recursor	"Build Recursor (DEPRECATED)" OFF \=0A=
 -2> /tmp/checklist.tmp.$$=0A=
 -=0A=
 -        retval=3D$?=0A=
 -	if [ -s /tmp/checklist.tmp.$$ ]; then=0A=
 -			set `cat /tmp/checklist.tmp.$$`=0A=
 -	fi=0A=
 -	rm -f /tmp/checklist.tmp.$$=0A=
 -=0A=
 -	case $retval in=0A=
 -		0)      if [ -z "$*" ]; then=0A=
 -				echo "Nothing selected"=0A=
 -			fi=0A=
 -			;;=0A=
 -		1)      echo "Cancel pressed."=0A=
 -			exit 1=0A=
 -			;;=0A=
 -	esac=0A=
 -fi=0A=
 -=0A=
 -${MKDIR} ${WRKDIRPREFIX}${CURDIR2}=0A=
 -exec > ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc=0A=
 -=0A=
 -while [ "$1" ]; do=0A=
 -	case $1 in=0A=
 -		\"PostgreSQL\")=0A=
 -			echo WITH_POSTGRESQL_DRIVER=3DYES=0A=
 -			;;=0A=
 -		\"MySQL\")=0A=
 -			echo WITH_MYSQL_DRIVER=3DYES=0A=
 -			;;=0A=
 -		\"OpenLDAP\")=0A=
 -			echo WITH_LDAP=3DYES=0A=
 -			;;=0A=
 -		\"SQLite\")=0A=
 -			echo WITH_SQLITE=3DYES=0A=
 -			echo SQLITE_PORT?=3Ddatabases/sqlite=0A=
 -			;;=0A=
 -		\"Recursor\")=0A=
 -			echo POWERDNS_WITH_RECURSOR=3DYES=0A=
 -			;;=0A=
 -		\"nothing\"|true)=0A=
 -			;;=0A=
 -		*)=0A=
 -			echo "Invalid option(s): $*" > /dev/stderr=0A=
 -			rm -f ${WRKDIRPREFIX}${CURDIR2}/Makefile.inc=0A=
 -			exit 1=0A=
 -			;;=0A=
 -	esac=0A=
 -    shift=0A=
 -done=0A=
 -exec > /dev/stderr=0A=
 diff -ruN powerdns/files/patch-opendbx powerdns.new/files/patch-opendbx=0A=
 --- powerdns/files/patch-opendbx	Thu Jan  1 01:00:00 1970=0A=
 +++ powerdns.new/files/patch-opendbx	Sun Jan  7 17:12:05 2007=0A=
 @@ -0,0 +1,1038 @@=0A=
 +--- modules/opendbxbackend/odbxbackend.hh	2006-03-15 19:29:39.000000000 =
 +0100=0A=
 ++++ modules/opendbxbackend/odbxbackend.hh	2006-09-03 11:34:13.000000000 =
 +0200=0A=
 +@@ -1,11 +1,10 @@=0A=
 + /*=0A=
 +  *  PowerDNS OpenDBX Backend=0A=
 +- *  Copyright (C) 2005 Norbert Sendetzky <norbert@linuxnetworks.de>=0A=
 ++ *  Copyright (C) 2005-2006 Norbert Sendetzky =
 <norbert@linuxnetworks.de>=0A=
 +  *=0A=
 +  *  This program is free software; you can redistribute it and/or =
 modify=0A=
 +- *  it under the terms of the GNU General Public License as published =
 by=0A=
 +- *  the Free Software Foundation; either version 2 of the License, or=0A=
 +- *  any later version.=0A=
 ++ *  it under the terms of the GNU General Public License version 2=0A=
 ++ *  as published by the Free Software Foundation=0A=
 +  *=0A=
 +  *  This program is distributed in the hope that it will be useful,=0A=
 +  *  but WITHOUT ANY WARRANTY; without even the implied warranty of=0A=
 +@@ -14,7 +13,7 @@=0A=
 +  *=0A=
 +  *  You should have received a copy of the GNU General Public License=0A=
 +  *  along with this program; if not, write to the Free Software=0A=
 +- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  =
 02111-1307  USA=0A=
 ++ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  =
 02110-1301  USA=0A=
 +  */=0A=
 + =0A=
 + =0A=
 +@@ -32,7 +31,6 @@=0A=
 + #include <pdns/arguments.hh>=0A=
 + #include <pdns/logger.hh>=0A=
 + #include <odbx.h>=0A=
 +-#include "modules/ldapbackend/utils.hh"=0A=
 + =0A=
 + =0A=
 + #ifndef ODBXBACKEND_HH=0A=
 +@@ -53,19 +51,23 @@=0A=
 + =0A=
 + class OdbxBackend : public DNSBackend=0A=
 + {=0A=
 ++	enum QueryType { READ, WRITE };=0A=
 ++=0A=
 + 	string m_myname;=0A=
 + 	string m_qname;=0A=
 + 	int m_default_ttl;=0A=
 + 	bool m_qlog;=0A=
 +-	odbx_t* m_handle;=0A=
 ++	odbx_t* m_handle[2];=0A=
 + 	odbx_result_t* m_result;=0A=
 + 	char m_escbuf[BUFLEN];=0A=
 + 	char m_buffer[2*BUFLEN];=0A=
 ++	vector<string> m_hosts[2];=0A=
 + =0A=
 +-	bool getRecord();=0A=
 +-	void execStmt( const char* stmt, unsigned long length, bool select );=0A=
 +-	void getDomainList( const string& query, vector<DomainInfo>* list, =
 bool (*check_fcn)(u_int32_t,u_int32_t,SOAData*,DomainInfo*) );=0A=
 +-	string escape( const string& str );=0A=
 ++	string escape( const string& str, QueryType type );=0A=
 ++	bool connectTo( const vector<string>& host, QueryType type );=0A=
 ++	bool getDomainList( const string& query, vector<DomainInfo>* list, =
 bool (*check_fcn)(u_int32_t,u_int32_t,SOAData*,DomainInfo*) );=0A=
 ++	bool execStmt( const char* stmt, unsigned long length, QueryType type =
 );=0A=
 ++	bool getRecord( QueryType type );=0A=
 + =0A=
 + =0A=
 + public:=0A=
 +@@ -107,37 +109,40 @@=0A=
 + 	void declareArguments( const string &suffix=3D"" )=0A=
 + 	{=0A=
 + 		declare( suffix, "backend", "OpenDBX backend","mysql" );=0A=
 +-		declare( suffix, "host", "Name or address of one or more DBMS =
 server","127.0.0.1" );=0A=
 +-		declare( suffix, "port", "Port the DBMS server is listening to","" );=0A=
 ++		declare( suffix, "host-read", "Name or address of one or more DBMS =
 server to read from","127.0.0.1" );=0A=
 ++		declare( suffix, "host-write", "Name or address of one or more DBMS =
 server used for updates","127.0.0.1" );=0A=
 ++		declare( suffix, "port", "Port the DBMS server are listening to","" =
 );=0A=
 + 		declare( suffix, "database", "Database name containing the DNS =
 records","powerdns" );=0A=
 + 		declare( suffix, "username","User for connecting to the =
 DBMS","powerdns");=0A=
 + 		declare( suffix, "password","Password for connecting to the =
 DBMS","");=0A=
 + =0A=
 +-		declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, =
 type, ttl, prio, content FROM records WHERE domain_id=3D':id'" );=0A=
 ++		declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, =
 type, ttl, prio, content FROM records WHERE domain_id=3D:id" );=0A=
 + =0A=
 + 		declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, =
 name, type, ttl, prio, content FROM records WHERE name=3D':name'" );=0A=
 +-		declare( suffix, "sql-lookupid", "Lookup query with id","SELECT =
 domain_id, name, type, ttl, prio, content FROM records WHERE =
 domain_id=3D':id' AND name=3D':name'" );=0A=
 ++		declare( suffix, "sql-lookupid", "Lookup query with id","SELECT =
 domain_id, name, type, ttl, prio, content FROM records WHERE =
 domain_id=3D:id AND name=3D':name'" );=0A=
 + 		declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT =
 domain_id, name, type, ttl, prio, content FROM records WHERE =
 name=3D':name' AND type=3D':type'" );=0A=
 +-		declare( suffix, "sql-lookuptypeid", "Lookup query with type and =
 id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE =
 domain_id=3D':id' AND name=3D':name' AND type=3D':type'" );=0A=
 ++		declare( suffix, "sql-lookuptypeid", "Lookup query with type and =
 id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE =
 domain_id=3D:id AND name=3D':name' AND type=3D':type'" );=0A=
 + =0A=
 +-		declare( suffix, "sql-zonedelete","Delete all records for this =
 zone","DELETE FROM records WHERE domain_id=3D':id'" );=0A=
 +-		declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, =
 d.name, d.type, d.master, d.last_check, r.content FROM domains AS d LEFT =
 JOIN records AS r ON d.id=3Dr.domain_id WHERE ( d.name=3D':name' AND =
 r.type=3D'SOA' ) OR ( d.name=3D':name' AND r.domain_id IS NULL )" );=0A=
 ++		declare( suffix, "sql-zonedelete","Delete all records for this =
 zone","DELETE FROM records WHERE domain_id=3D:id" );=0A=
 ++		declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, =
 d.name, d.type, d.master, d.last_check, r.content FROM domains d LEFT =
 JOIN records r ON ( d.id=3Dr.domain_id AND r.type=3D'SOA' ) WHERE =
 d.name=3D':name' AND d.status=3D'A'" );=0A=
 + =0A=
 + 		declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" );=0A=
 + 		declare( suffix, "sql-transactend", "Finish transaction", "COMMIT" );=0A=
 + 		declare( suffix, "sql-transactabort", "Abort transaction", =
 "ROLLBACK" );=0A=
 + =0A=
 + 		declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO =
 domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', =
 '%s' )" );=0A=
 +-		declare( suffix, "sql-insert-record","Feed record into table", =
 "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) =
 VALUES ( '%d', '%s', '%s', '%d', '%d', '%s' )" );=0A=
 ++		declare( suffix, "sql-insert-record","Feed record into table", =
 "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) =
 VALUES ( %d, '%s', '%s', %d, %d, '%s' )" );=0A=
 + =0A=
 +-		declare( suffix, "sql-update-serial", "Set zone to notified", =
 "UPDATE domains SET notified_serial=3D'%d' WHERE id=3D'%d'" );=0A=
 +-		declare( suffix, "sql-update-lastcheck", "Set time of last check", =
 "UPDATE domains SET last_check=3D'%d' WHERE id=3D'%d'" );=0A=
 ++		declare( suffix, "sql-update-serial", "Set zone to notified", =
 "UPDATE domains SET notified_serial=3D%d WHERE id=3D%d" );=0A=
 ++		declare( suffix, "sql-update-lastcheck", "Set time of last check", =
 "UPDATE domains SET last_check=3D%d WHERE id=3D%d" );=0A=
 + =0A=
 +-		declare( suffix, "sql-master", "Get master record for zone", "SELECT =
 master FROM domains WHERE name=3D':name' AND type=3D'SLAVE'" );=0A=
 ++		declare( suffix, "sql-master", "Get master record for zone", "SELECT =
 master FROM domains WHERE name=3D':name' AND status=3D'A' AND =
 type=3D'SLAVE'" );=0A=
 + 		declare( suffix, "sql-supermaster","Get supermaster info", "SELECT =
 account FROM supermasters WHERE ip=3D':ip' AND nameserver=3D':ns'" );=0A=
 + =0A=
 +-		declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT =
 d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, =
 r.content FROM domains AS d LEFT JOIN records AS r ON d.id=3Dr.domain_id =
 WHERE ( d.type=3D'SLAVE' AND r.type=3D'SOA' ) OR ( d.type=3D'SLAVE' AND =
 r.domain_id IS NULL )" );=0A=
 +-		declare( suffix, "sql-infomasters", "Get all updated masters", =
 "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, =
 r.change_date, r.content FROM domains AS d, records AS r WHERE =
 d.type=3D'MASTER' AND d.id=3Dr.domain_id AND r.type=3D'SOA'" );=0A=
 ++		declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT =
 d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, =
 r.content FROM domains d LEFT JOIN records r ON ( d.id=3Dr.domain_id AND =
 r.type=3D'SOA' ) WHERE d.status=3D'A' AND d.type=3D'SLAVE'" );=0A=
 ++		declare( suffix, "sql-infomasters", "Get all updated masters", =
 "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, =
 r.change_date, r.content FROM domains d JOIN records r ON =
 d.id=3Dr.domain_id WHERE d.status=3D'A' AND d.type=3D'MASTER' AND =
 r.type=3D'SOA'" );=0A=
 ++=0A=
 ++		declare( suffix, "host", "depricated, use host-read and host-write =
 instead","" );=0A=
 + 	}=0A=
 + =0A=
 + =0A=
 +--- modules/opendbxbackend/odbxbackend.cc	2006-03-15 19:29:39.000000000 =
 +0100=0A=
 ++++ modules/opendbxbackend/odbxbackend.cc	2006-06-17 11:39:04.000000000 =
 +0200=0A=
 +@@ -2,62 +2,80 @@=0A=
 + =0A=
 + =0A=
 + =0A=
 +-unsigned int odbx_host_index =3D 0;=0A=
 ++inline string& strbind( const string& search, const string& replace, =
 string& subject )=0A=
 ++{=0A=
 ++	size_t pos =3D 0;=0A=
 ++=0A=
 ++	while( ( pos =3D subject.find( search, pos ) ) !=3D string::npos )=0A=
 ++	{=0A=
 ++		subject.replace( pos, search.size(), replace );=0A=
 ++		pos +=3D replace.size();=0A=
 ++	}=0A=
 ++=0A=
 ++	return subject;=0A=
 ++}=0A=
 ++=0A=
 ++=0A=
 ++=0A=
 ++inline string& toLowerByRef( string& str )=0A=
 ++{=0A=
 ++	for( unsigned int i =3D 0; i < str.length(); i++ )=0A=
 ++	{=0A=
 ++		str[i] =3D dns_tolower( str[i] );=0A=
 ++	}=0A=
 ++=0A=
 ++	return str;=0A=
 ++}=0A=
 + =0A=
 + =0A=
 + =0A=
 + OdbxBackend::OdbxBackend( const string& suffix )=0A=
 + {=0A=
 +-	int err =3D -1;=0A=
 +-	unsigned int  idx, i, h;=0A=
 + 	vector<string> hosts;=0A=
 + =0A=
 + =0A=
 + 	try=0A=
 + 	{=0A=
 + 		m_result =3D NULL;=0A=
 ++		m_handle[READ] =3D NULL;=0A=
 ++		m_handle[WRITE] =3D NULL;=0A=
 + 		m_myname =3D "[OpendbxBackend]";=0A=
 + 		m_default_ttl =3D arg().asNum( "default-ttl" );=0A=
 + 		m_qlog =3D arg().mustDo( "query-logging" );=0A=
 + =0A=
 + 		setArgPrefix( "opendbx" + suffix );=0A=
 +-		stringtok( hosts, getArg( "host" ), ", " );=0A=
 + =0A=
 +-		idx =3D odbx_host_index++ % hosts.size();=0A=
 +-=0A=
 +-		for( i =3D 0; i < hosts.size(); i++ )=0A=
 ++		if( getArg( "host" ).size() > 0 )=0A=
 + 		{=0A=
 +-			h =3D ( idx + i ) % hosts.size();=0A=
 +-			if( !( err =3D odbx_init( &m_handle, getArg( "backend" ).c_str(), =
 hosts[h].c_str(), getArg( "port" ).c_str() ) ) ) { break; }=0A=
 ++			L.log( m_myname + " WARNING: Using depricated opendbx-host =
 parameter", Logger::Warning );=0A=
 ++			stringtok( m_hosts[READ], getArg( "host" ), ", " );=0A=
 ++			m_hosts[WRITE] =3D m_hosts[READ];=0A=
 + 		}=0A=
 +-=0A=
 +-		if( err < 0 )=0A=
 ++		else=0A=
 + 		{=0A=
 +-			L.log( m_myname + " OdbxBackend: Unable to connect to server - " + =
 string( odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 +-			throw( AhuException( "Fatal: odbx_init() failed" ) );=0A=
 ++			stringtok( m_hosts[READ], getArg( "host-read" ), ", " );=0A=
 ++			stringtok( m_hosts[WRITE], getArg( "host-write" ), ", " );=0A=
 + 		}=0A=
 + =0A=
 +-		if( ( err =3D odbx_bind_simple( m_handle, getArg( "database" =
 ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str() ) =
 ) < 0 )=0A=
 +-		{=0A=
 +-			L.log( m_myname + " OdbxBackend: Unable to bind to database - " + =
 string( odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 +-			throw( AhuException( "Fatal: odbx_bind_simple() failed" ) );=0A=
 +-		}=0A=
 ++		if( !connectTo( m_hosts[READ], READ ) ) { throw( AhuException( =
 "Fatal: Connecting to server for reading failed" ) ); }=0A=
 ++		if( !connectTo( m_hosts[WRITE], WRITE ) ) { throw( AhuException( =
 "Fatal: Connecting to server for writing failed" ) ); }=0A=
 + 	}=0A=
 + 	catch( exception& e )=0A=
 + 	{=0A=
 +-		L.log( m_myname + " OdbxBackend: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Fatal: STL exception" ) );=0A=
 ++		L.log( m_myname + " OdbxBackend(): Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 ++		throw( AhuException( "Fatal: STL exception" ) );=0A=
 + 	}=0A=
 +-=0A=
 +-	L.log( m_myname + " Connection succeeded", Logger::Notice );=0A=
 + }=0A=
 + =0A=
 + =0A=
 + =0A=
 + OdbxBackend::~OdbxBackend()=0A=
 + {=0A=
 +-	odbx_unbind( m_handle );=0A=
 +-	odbx_finish( m_handle );=0A=
 ++	odbx_unbind( m_handle[WRITE] );=0A=
 ++	odbx_unbind( m_handle[READ] );=0A=
 ++=0A=
 ++	odbx_finish( m_handle[WRITE] );=0A=
 ++	odbx_finish( m_handle[READ] );=0A=
 + }=0A=
 + =0A=
 + =0A=
 +@@ -65,17 +83,17 @@=0A=
 + bool OdbxBackend::getDomainInfo( const string& domain, DomainInfo& di )=0A=
 + {=0A=
 + 	const char* tmp;=0A=
 +-	string stmt;=0A=
 + =0A=
 + =0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " getDomainInfo()", Logger::Debug ) );=0A=
 + =0A=
 +-		stmt =3D strbind( ":name", escape( toLower( domain ) ), getArg( =
 "sql-zoneinfo" ) );=0A=
 +-		execStmt( stmt.c_str(), stmt.size(), true );=0A=
 ++		string stmt =3D getArg( "sql-zoneinfo" );=0A=
 ++		string& stmtref =3D strbind( ":name", escape( toLower( domain ), =
 READ ), stmt );=0A=
 + =0A=
 +-		if( !getRecord() ) { return false; }=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return =
 false; }=0A=
 ++		if( !getRecord( READ ) ) { return false; }=0A=
 + =0A=
 + 		do=0A=
 + 		{=0A=
 +@@ -95,7 +113,7 @@=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 1 ) ) !=3D NULL )=0A=
 + 			{=0A=
 +-				di.zone =3D string( tmp );=0A=
 ++				di.zone =3D string( tmp, odbx_field_length( m_result, 1 ) );=0A=
 + 			}=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 2 ) ) !=3D NULL )=0A=
 +@@ -112,7 +130,7 @@=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 3 ) ) !=3D NULL )=0A=
 + 			{=0A=
 +-				di.master =3D string( tmp );=0A=
 ++				di.master =3D string( tmp, odbx_field_length( m_result, 3 ) );=0A=
 + 			}=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 5 ) ) !=3D NULL )=0A=
 +@@ -125,16 +143,16 @@=0A=
 + 				SOAData sd;=0A=
 + =0A=
 + 				sd.serial =3D 0;=0A=
 +-					DNSPacket::fillSOAData( string( tmp ), sd );=0A=
 ++					DNSPacket::fillSOAData( string( tmp, odbx_field_length( m_result, =
 6 ) ), sd );=0A=
 + 				di.serial =3D sd.serial;=0A=
 + 			}=0A=
 + 		}=0A=
 +-		while( getRecord() );=0A=
 ++		while( getRecord( READ ) );=0A=
 + 	}=0A=
 + 	catch( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " getDomainInfo: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -144,11 +162,6 @@=0A=
 + =0A=
 + bool OdbxBackend::list( const string& target, int zoneid )=0A=
 + {=0A=
 +-	string stmt;=0A=
 +-	size_t len;=0A=
 +-=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " list()", Logger::Debug ) );=0A=
 +@@ -156,22 +169,29 @@=0A=
 + 		m_qname =3D "";=0A=
 + 		m_result =3D NULL;=0A=
 + =0A=
 +-		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );=0A=
 ++		size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", =
 zoneid );=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		if( len < 0 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " list: Unable to convert zone id to string",  =
 Logger::Error );=0A=
 +-			throw( DBException( "Error: Libc error" ) );=0A=
 ++			L.log( m_myname + " list: Unable to convert zone id to string - =
 format error",  Logger::Error );=0A=
 ++			return false;=0A=
 + 		}=0A=
 + =0A=
 +-		stmt =3D strbind( ":id", string( m_buffer, len ), getArg( "sql-list" =
 ) );=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " list: Unable to convert zone id to string - =
 insufficient buffer space",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 ++=0A=
 ++		string stmt =3D getArg( "sql-list" );=0A=
 ++		string& stmtref =3D strbind( ":id", string( m_buffer, len ), stmt );=0A=
 + =0A=
 +-		execStmt( stmt.c_str(), stmt.size(), true );=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return =
 false; }=0A=
 + 	}=0A=
 + 	catch( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " list: Caught STL exception - " + e.what(),  =
 Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -181,23 +201,24 @@=0A=
 + =0A=
 + void OdbxBackend::lookup( const QType& qtype, const string& qname, =
 DNSPacket* dnspkt, int zoneid )=0A=
 + {=0A=
 +-	string stmt;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " lookup()", Logger::Debug ) );=0A=
 + =0A=
 ++		string stmt;=0A=
 ++		string& stmtref =3D stmt;=0A=
 ++=0A=
 + 		m_result =3D NULL;=0A=
 + 		m_qname =3D qname;=0A=
 +-		=0A=
 ++=0A=
 + 		if( zoneid < 0 )=0A=
 + 		{=0A=
 + 			if( qtype.getCode() =3D=3D QType::ANY )=0A=
 + 			{=0A=
 + 				stmt =3D getArg( "sql-lookup" );=0A=
 + 			} else {=0A=
 +-				stmt =3D strbind( ":type", qtype.getName(), getArg( =
 "sql-lookuptype" ) );=0A=
 ++				stmt =3D getArg( "sql-lookuptype" );=0A=
 ++				stmtref =3D strbind( ":type", qtype.getName(), stmt );=0A=
 + 			}=0A=
 + 		}=0A=
 + 		else=0A=
 +@@ -206,22 +227,34 @@=0A=
 + 			{=0A=
 + 	 			stmt =3D getArg( "sql-lookupid" );=0A=
 + 			} else {=0A=
 +-				stmt =3D strbind( ":type", qtype.getName(), getArg( =
 "sql-lookuptypeid" ) );=0A=
 ++				stmt =3D getArg( "sql-lookuptypeid" );=0A=
 ++				stmtref =3D strbind( ":type", qtype.getName(), stmt );=0A=
 + 			}=0A=
 +- 			=0A=
 ++=0A=
 + 			size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", =
 zoneid );=0A=
 + =0A=
 +-			if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++			if( len < 0 )=0A=
 + 			{=0A=
 +-				L.log( m_myname + " lookup: Unable to convert zone id to string",  =
 Logger::Error );=0A=
 ++				L.log( m_myname + " lookup: Unable to convert zone id to string - =
 format error",  Logger::Error );=0A=
 + 				throw( DBException( "Error: Libc error" ) );=0A=
 + 			}=0A=
 + =0A=
 +-			stmt =3D strbind( ":id", string( m_buffer, len ), stmt );=0A=
 ++			if( len > sizeof( m_buffer ) - 1 )=0A=
 ++			{=0A=
 ++				L.log( m_myname + " lookup: Unable to convert zone id to string - =
 insufficient buffer space",  Logger::Error );=0A=
 ++				throw( DBException( "Error: Libc error" ) );=0A=
 ++			}=0A=
 ++=0A=
 ++			stmtref =3D strbind( ":id", string( m_buffer, len ), stmtref );=0A=
 + 		}=0A=
 + =0A=
 +-		stmt =3D strbind( ":name", escape( toLower( qname ) ), stmt );=0A=
 +-		execStmt( stmt.c_str(), stmt.size(), true );=0A=
 ++		string tmp =3D qname;=0A=
 ++		stmtref =3D strbind( ":name", escape( toLowerByRef( tmp ), READ ), =
 stmtref );=0A=
 ++=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) )=0A=
 ++		{=0A=
 ++			throw( DBException( "Error: DB statement failed" ) );=0A=
 ++		}=0A=
 + 	}=0A=
 + 	catch( exception& e )=0A=
 + 	{=0A=
 +@@ -241,7 +274,7 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " get()", Logger::Debug ) );=0A=
 + =0A=
 +-		if( getRecord() )=0A=
 ++		if( getRecord( READ ) )=0A=
 + 		{=0A=
 + 			rr.content =3D "";=0A=
 + 			rr.priority =3D 0;=0A=
 +@@ -257,7 +290,7 @@=0A=
 + =0A=
 + 			if( m_qname.empty() && ( tmp =3D odbx_field_value( m_result, 1 ) ) =
 !=3D NULL )=0A=
 + 			{=0A=
 +-				rr.qname =3D string( tmp );=0A=
 ++				rr.qname =3D string( tmp, odbx_field_length( m_result, 1 ) );=0A=
 + 			}=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 2 ) ) !=3D NULL )=0A=
 +@@ -277,7 +310,7 @@=0A=
 + =0A=
 + 			if( ( tmp =3D odbx_field_value( m_result, 5 ) ) !=3D NULL )=0A=
 + 			{=0A=
 +-				rr.content =3D string( tmp );=0A=
 ++				rr.content =3D string( tmp, odbx_field_length( m_result, 5 ) );=0A=
 + 			}=0A=
 + =0A=
 + 			return true;=0A=
 +@@ -286,7 +319,7 @@=0A=
 + 	catch( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " get: Caught STL exception - " + e.what(),  =
 Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return false;=0A=
 +@@ -302,15 +335,30 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " setFresh()", Logger::Debug ) );=0A=
 + =0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " setFresh: Master server is unreachable",  =
 Logger::Error );=0A=
 ++			throw( DBException( "Error: Server unreachable" ) );=0A=
 ++		}=0A=
 ++=0A=
 + 		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-update-lastcheck" ).c_str(), time( 0 ), domain_id );=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		if( len < 0 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " setFresh: Unable to insert values into =
 statement '" + getArg( "sql-update-lastcheck" ) + "' - format error",  =
 Logger::Error );=0A=
 ++			throw( DBException( "Error: Libc error" ) );=0A=
 ++		}=0A=
 ++=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " setFresh: Unable to insert values into =
 statement '" + getArg( "sql-update-lastcheck" ) + "'",  Logger::Error );=0A=
 ++			L.log( m_myname + " setFresh: Unable to insert values into =
 statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient =
 buffer space",  Logger::Error );=0A=
 + 			throw( DBException( "Error: Libc error" ) );=0A=
 + 		}=0A=
 + =0A=
 +-		execStmt( m_buffer, len, false );=0A=
 ++		if( !execStmt( m_buffer, len, WRITE ) )=0A=
 ++		{=0A=
 ++			throw( DBException( "Error: DB statement failed" ) );=0A=
 ++		}=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 +@@ -323,22 +371,34 @@=0A=
 + =0A=
 + void OdbxBackend::setNotified( u_int32_t domain_id, u_int32_t serial )=0A=
 + {=0A=
 +-	size_t len;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " setNotified()", Logger::Debug ) );=0A=
 + =0A=
 +-		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-update-serial" ).c_str(), serial, domain_id );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " setFresh: Master server is unreachable",  =
 Logger::Error );=0A=
 ++			throw( DBException( "Error: Server unreachable" ) );=0A=
 ++		}=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-update-serial" ).c_str(), serial, domain_id );=0A=
 ++=0A=
 ++		if( len < 0 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " setNotified: Unable to insert values into =
 statement '" + getArg( "sql-update-serial" ) + "'",  Logger::Error );=0A=
 ++			L.log( m_myname + " setNotified: Unable to insert values into =
 statement '" + getArg( "sql-update-serial" ) + "' - format error",  =
 Logger::Error );=0A=
 + 			throw( DBException( "Error: Libc error" ) );=0A=
 + 		}=0A=
 + =0A=
 +-		execStmt( m_buffer, len, false );=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " setNotified: Unable to insert values into =
 statement '" + getArg( "sql-update-serial" ) + "' - insufficient buffer =
 space",  Logger::Error );=0A=
 ++			throw( DBException( "Error: Libc error" ) );=0A=
 ++		}=0A=
 ++=0A=
 ++		if( !execStmt( m_buffer, len, WRITE ) )=0A=
 ++		{=0A=
 ++			throw( DBException( "Error: DB statement failed" ) );=0A=
 ++		}=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 +@@ -351,17 +411,15 @@=0A=
 + =0A=
 + bool OdbxBackend::isMaster( const string& domain, const string& ip )=0A=
 + {=0A=
 +-	string stmt;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " isMaster()", Logger::Debug ) );=0A=
 + =0A=
 +-		stmt =3D strbind( ":name", escape( toLower( domain ) ), getArg( =
 "sql-master" ) );=0A=
 +-		execStmt( stmt.c_str(), stmt.size(), true );=0A=
 ++		string stmt =3D getArg( "sql-master" );=0A=
 ++		string& stmtref =3D strbind( ":name", escape( toLower( domain ), =
 READ ), stmt );=0A=
 + =0A=
 +-		if( !getRecord() ) { return false; }=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return =
 false; }=0A=
 ++		if( !getRecord( READ ) ) { return false; }=0A=
 + =0A=
 + 		do=0A=
 + 		{=0A=
 +@@ -369,16 +427,17 @@=0A=
 + 			{=0A=
 + 				if( !strcmp( odbx_field_value( m_result, 0 ), ip.c_str() ) )=0A=
 + 				{=0A=
 ++					while( getRecord( READ ) );=0A=
 + 					return true;=0A=
 + 				}=0A=
 + 			}=0A=
 + 		}=0A=
 +-		while( getRecord() );=0A=
 ++		while( getRecord( READ ) );=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " isMaster: Caught STL exception - " + e.what(),  =
 Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return false;=0A=
 +@@ -392,15 +451,17 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " getUnfreshSlaveInfos()", Logger::Debug ) );=0A=
 + =0A=
 +-		if( unfresh !=3D NULL )=0A=
 ++		if( unfresh =3D=3D NULL )=0A=
 + 		{=0A=
 +-			getDomainList( getArg( "sql-infoslaves" ), unfresh, &checkSlave );=0A=
 ++			L.log( m_myname + " getUnfreshSlaveInfos: invalid parameter - NULL =
 pointer",  Logger::Error );=0A=
 ++			return;=0A=
 + 		}=0A=
 ++=0A=
 ++		getDomainList( getArg( "sql-infoslaves" ), unfresh, &checkSlave );=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " getUnfreshSlaveInfo: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 + 	}=0A=
 + }=0A=
 + =0A=
 +@@ -412,15 +473,17 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " getUpdatedMasters()", Logger::Debug ) );=0A=
 + =0A=
 +-		if( updated !=3D NULL )=0A=
 ++		if( updated =3D=3D NULL )=0A=
 + 		{=0A=
 +-			getDomainList( getArg( "sql-infomasters" ), updated, &checkMaster );=0A=
 ++			L.log( m_myname + " getUpdatedMasters: invalid parameter - NULL =
 pointer",  Logger::Error );=0A=
 ++			return;=0A=
 + 		}=0A=
 ++=0A=
 ++		getDomainList( getArg( "sql-infomasters" ), updated, &checkMaster );=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " getUpdatedMasters: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 + 	}=0A=
 + }=0A=
 + =0A=
 +@@ -428,43 +491,41 @@=0A=
 + =0A=
 + bool OdbxBackend::superMasterBackend( const string& ip, const string& =
 domain, const vector<DNSResourceRecord>& set, string* account, =
 DNSBackend** ddb )=0A=
 + {=0A=
 +-	string stmt;=0A=
 +-	vector<DNSResourceRecord>::const_iterator i;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " superMasterBackend()", Logger::Debug ) );=0A=
 + =0A=
 + 		if( account !=3D NULL && ddb !=3D NULL )=0A=
 + 		{=0A=
 ++			vector<DNSResourceRecord>::const_iterator i;=0A=
 ++=0A=
 + 			for( i =3D set.begin(); i !=3D set.end(); i++ )=0A=
 + 			{=0A=
 +-				stmt =3D strbind( ":ip", escape( ip ), getArg( "sql-supermaster" ) =
 );=0A=
 +-				stmt =3D strbind( ":ns", escape( i->content ), stmt );=0A=
 +-=0A=
 +-				execStmt( stmt.c_str(), stmt.size(), true );=0A=
 ++				string stmt =3D getArg( "sql-supermaster" );=0A=
 ++				string& stmtref =3D strbind( ":ip", escape( ip, READ ), stmt );=0A=
 ++				stmtref =3D strbind( ":ns", escape( i->content, READ ), stmtref );=0A=
 + =0A=
 +-				if( !getRecord() ) { return false; }=0A=
 ++				if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return =
 false; }=0A=
 + =0A=
 +-				do=0A=
 ++				if( getRecord( READ ) )=0A=
 + 				{=0A=
 + 					if( odbx_field_value( m_result, 0 ) !=3D NULL )=0A=
 + 					{=0A=
 + 						*account =3D string( odbx_field_value( m_result, 0 ), =
 odbx_field_length( m_result, 0 ) );=0A=
 + 					}=0A=
 +-				}=0A=
 +-				while( getRecord() );=0A=
 + =0A=
 +-				*ddb=3Dthis;=0A=
 +-				return true;=0A=
 ++					while( getRecord( READ ) );=0A=
 ++=0A=
 ++					*ddb=3Dthis;=0A=
 ++					return true;=0A=
 ++				}=0A=
 + 			}=0A=
 + 		}=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " superMasterBackend: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return false;=0A=
 +@@ -474,28 +535,38 @@=0A=
 + =0A=
 + bool OdbxBackend::createSlaveDomain( const string& ip, const string& =
 domain, const string& account )=0A=
 + {=0A=
 +-	size_t len;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " createSlaveDomain()", Logger::Debug ) );=0A=
 + =0A=
 +-		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-insert-slave" ).c_str(), escape( toLower( domain ) ).c_str(),=0A=
 +-			escape( ip ).c_str(), escape( account ).c_str() );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " createSlaveDomain: Master server is =
 unreachable",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		string tmp =3D domain;=0A=
 ++		size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-insert-slave" ).c_str(), escape( toLowerByRef( tmp ), WRITE =
 ).c_str(),=0A=
 ++			escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() );=0A=
 ++=0A=
 ++		if( len < 0 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " createSlaveDomain: Unable to insert values in =
 statement '" + getArg( "sql-insert-slave" ) + "'",  Logger::Error );=0A=
 +-			throw( DBException( "Error: Libc error" ) );=0A=
 ++			L.log( m_myname + " createSlaveDomain: Unable to insert values in =
 statement '" + getArg( "sql-insert-slave" ) + "' - format error",  =
 Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 ++=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " createSlaveDomain: Unable to insert values in =
 statement '" + getArg( "sql-insert-slave" ) + "' - insufficient buffer =
 space",  Logger::Error );=0A=
 ++			return false;=0A=
 + 		}=0A=
 + =0A=
 +-		execStmt( m_buffer, len, false );=0A=
 ++		if( !execStmt( m_buffer, len, WRITE ) ) { return false; }=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " createSlaveDomain: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -505,28 +576,39 @@=0A=
 + =0A=
 + bool OdbxBackend::feedRecord( const DNSResourceRecord& rr )=0A=
 + {=0A=
 +-	size_t len;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " feedRecord()", Logger::Debug ) );=0A=
 + =0A=
 +-		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-insert-record" ).c_str(), rr.domain_id,=0A=
 +-			escape( toLower( rr.qname ) ).c_str(), rr.qtype.getName().c_str(), =
 rr.ttl, rr.priority, escape( rr.content ).c_str() );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " feedRecord: Master server is unreachable",  =
 Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		string tmp =3D rr.qname;=0A=
 ++		size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( =
 "sql-insert-record" ).c_str(), rr.domain_id,=0A=
 ++			escape( toLowerByRef( tmp ), WRITE ).c_str(), =
 rr.qtype.getName().c_str(), rr.ttl, rr.priority,=0A=
 ++			escape( rr.content, WRITE ).c_str() );=0A=
 ++=0A=
 ++		if( len < 0 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " feedRecord: Unable to insert values in =
 statement '" + getArg( "sql-insert-record" ) + "'",  Logger::Error );=0A=
 +-			throw( DBException( "Error: Libc error" ) );=0A=
 ++			L.log( m_myname + " feedRecord: Unable to insert values in =
 statement '" + getArg( "sql-insert-record" ) + "' - format error",  =
 Logger::Error );=0A=
 ++			return false;=0A=
 + 		}=0A=
 + =0A=
 +-		execStmt( m_buffer, len, false );=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " feedRecord: Unable to insert values in =
 statement '" + getArg( "sql-insert-record" ) + "' - insufficient buffer =
 space",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 ++=0A=
 ++		if( !execStmt( m_buffer, len, WRITE ) ) { return false; }=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " feedRecord: Caught STL exception - " + e.what(), =
  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -536,33 +618,41 @@=0A=
 + =0A=
 + bool OdbxBackend::startTransaction( const string& domain, int zoneid )=0A=
 + {=0A=
 +-	size_t len;=0A=
 +-	string stmt;=0A=
 +-=0A=
 +-=0A=
 + 	try=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " startTransaction()", Logger::Debug ) );=0A=
 + =0A=
 +-		stmt =3D getArg( "sql-transactbegin" );=0A=
 +-		execStmt( stmt.c_str(), stmt.size(), false );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " startTransaction: Master server is =
 unreachable",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 + =0A=
 +-		len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );=0A=
 ++		string& stmtref =3D const_cast<string&>( getArg( "sql-transactbegin" =
 ) );=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return =
 false; }=0A=
 + =0A=
 +-		if( len < 0 || len > sizeof( m_buffer ) - 1 )=0A=
 ++		size_t len =3D snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", =
 zoneid );=0A=
 ++=0A=
 ++		if( len < 0 )=0A=
 + 		{=0A=
 +-			L.log( m_myname + " lookup: Unable to convert zone id to string",  =
 Logger::Error );=0A=
 +-			throw( DBException( "Error: Libc error" ) );=0A=
 ++			L.log( m_myname + " startTransaction: Unable to convert zone id to =
 string - format error",  Logger::Error );=0A=
 ++			return false;=0A=
 + 		}=0A=
 + =0A=
 +-		stmt =3D strbind( ":id", string( m_buffer, len ), getArg( =
 "sql-zonedelete" ) );=0A=
 ++		if( len > sizeof( m_buffer ) - 1 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " startTransaction: Unable to convert zone id to =
 string - insufficient buffer space",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 + =0A=
 +-		execStmt( stmt.c_str(), stmt.size(), false );=0A=
 ++		string stmt =3D getArg( "sql-zonedelete" );=0A=
 ++		stmtref =3D strbind( ":id", string( m_buffer, len ), stmt );=0A=
 ++		if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return =
 false; }=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " startTransaction: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -576,12 +666,19 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " commitTransaction()", Logger::Debug ) );=0A=
 + =0A=
 +-		execStmt( getArg( "sql-transactend" ).c_str(), getArg( =
 "sql-transactend" ).size(), false );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " commitTransaction: Master server is =
 unreachable",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 ++=0A=
 ++		const string& stmt =3D getArg( "sql-transactend" );=0A=
 ++		if( !execStmt( stmt.c_str(), stmt.size(), WRITE ) ) { return false; }=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " commitTransaction: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +@@ -595,12 +692,19 @@=0A=
 + 	{=0A=
 + 		DLOG( L.log( m_myname + " abortTransaction()", Logger::Debug ) );=0A=
 + =0A=
 +-		execStmt( getArg( "sql-transactabort" ).c_str(), getArg( =
 "sql-transabort" ).size(), false );=0A=
 ++		if( !m_handle[WRITE] && !connectTo( m_hosts[WRITE], WRITE ) )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " abortTransaction: Master server is =
 unreachable",  Logger::Error );=0A=
 ++			return false;=0A=
 ++		}=0A=
 ++=0A=
 ++		const string& stmt =3D getArg( "sql-transactabort" );=0A=
 ++		if( !execStmt( stmt.c_str(), stmt.size(), WRITE ) ) { return false; }=0A=
 + 	}=0A=
 + 	catch ( exception& e )=0A=
 + 	{=0A=
 + 		L.log( m_myname + " abortTransaction: Caught STL exception - " + =
 e.what(),  Logger::Error );=0A=
 +-		throw( DBException( "Error: STL exception" ) );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 + 	return true;=0A=
 +--- modules/opendbxbackend/odbxprivate.cc	2006-03-15 19:29:39.000000000 =
 +0100=0A=
 ++++ modules/opendbxbackend/odbxprivate.cc	2006-09-02 01:02:36.000000000 =
 +0200=0A=
 +@@ -2,7 +2,50 @@=0A=
 + =0A=
 + =0A=
 + =0A=
 +-void OdbxBackend::execStmt( const char* stmt, unsigned long length, =
 bool select )=0A=
 ++unsigned int odbx_host_index[2] =3D { 0, 0 };=0A=
 ++=0A=
 ++=0A=
 ++=0A=
 ++bool OdbxBackend::connectTo( const vector<string>& hosts, QueryType =
 type )=0A=
 ++{=0A=
 ++	int err;=0A=
 ++	unsigned int h, i;=0A=
 ++	int idx =3D odbx_host_index[type]++ % hosts.size();=0A=
 ++=0A=
 ++=0A=
 ++	if( m_handle[type] )=0A=
 ++	{=0A=
 ++		odbx_unbind( m_handle[type] );=0A=
 ++		odbx_finish( m_handle[type] );=0A=
 ++		m_handle[type] =3D NULL;=0A=
 ++	}=0A=
 ++=0A=
 ++	for( i =3D 0; i < hosts.size(); i++ )=0A=
 ++	{=0A=
 ++		h =3D ( idx + i ) % hosts.size();=0A=
 ++=0A=
 ++		if( ( err =3D odbx_init( &(m_handle[type]), getArg( "backend" =
 ).c_str(), hosts[h].c_str(), getArg( "port" ).c_str() ) ) =3D=3D =
 ODBX_ERR_SUCCESS )=0A=
 ++		{=0A=
 ++			if( ( err =3D odbx_bind_simple( m_handle[type], getArg( "database" =
 ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str() ) =
 ) =3D=3D ODBX_ERR_SUCCESS )=0A=
 ++			{=0A=
 ++				L.log( m_myname + " Database connection (" + (type ? "write" : =
 "read") + ") to '" + hosts[h] + "' succeeded", Logger::Notice );=0A=
 ++				return true;=0A=
 ++			}=0A=
 ++=0A=
 ++			L.log( m_myname + " Unable to bind to database on host " + hosts[h] =
 + " - " + string( odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 ++			continue;=0A=
 ++		}=0A=
 ++=0A=
 ++		L.log( m_myname + " Unable to connect to server on host " + hosts[h] =
 + " - " + string( odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 ++	}=0A=
 ++=0A=
 ++	m_handle[type] =3D NULL;=0A=
 ++	return false;=0A=
 ++}=0A=
 ++=0A=
 ++=0A=
 ++=0A=
 ++bool OdbxBackend::execStmt( const char* stmt, unsigned long length, =
 QueryType type )=0A=
 + {=0A=
 + 	int err;=0A=
 + =0A=
 +@@ -11,18 +54,21 @@=0A=
 + =0A=
 + 	if( m_qlog ) { L.log( m_myname + " Query: " + stmt, Logger::Info ); }=0A=
 + =0A=
 +-	if( ( err =3D odbx_query( m_handle, stmt, length ) ) < 0 )=0A=
 ++	if( ( err =3D odbx_query( m_handle[type], stmt, length ) ) < 0 )=0A=
 + 	{=0A=
 +-		L.log( m_myname + " execStmt: Unable to execute query - " + string( =
 odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 +-		throw( AhuException( "Error: odbx_query() failed" ) );=0A=
 ++		L.log( m_myname + " execStmt: Unable to execute query - " + string( =
 odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 ++		connectTo( m_hosts[type], type );=0A=
 ++		return false;=0A=
 + 	}=0A=
 + =0A=
 +-	if( !select ) { while( getRecord() ); }=0A=
 ++	if( type =3D=3D WRITE ) { while( getRecord( type ) ); }=0A=
 ++=0A=
 ++	return true;=0A=
 + }=0A=
 + =0A=
 + =0A=
 + =0A=
 +-bool OdbxBackend::getRecord()=0A=
 ++bool OdbxBackend::getRecord( QueryType type )=0A=
 + {=0A=
 + 	int err =3D 3;=0A=
 + =0A=
 +@@ -31,13 +77,19 @@=0A=
 + =0A=
 + 	do=0A=
 + 	{=0A=
 ++		if( err < 0 )=0A=
 ++		{=0A=
 ++			L.log( m_myname + " getRecord: Unable to get next result - " + =
 string( odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 ++			throw( AhuException( "Error: odbx_result() failed" ) );=0A=
 ++		}=0A=
 ++=0A=
 + 		if( m_result !=3D NULL )=0A=
 + 		{=0A=
 + 			if( err =3D=3D 3 )=0A=
 + 			{=0A=
 + 				if( ( err =3D odbx_row_fetch( m_result ) ) < 0 )=0A=
 + 				{=0A=
 +-					L.log( m_myname + " getRecord: Unable to get next row - " + =
 string( odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 ++					L.log( m_myname + " getRecord: Unable to get next row - " + =
 string( odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 + 					throw( AhuException( "Error: odbx_row_fetch() failed" ) );=0A=
 + 				}=0A=
 + =0A=
 +@@ -72,13 +124,7 @@=0A=
 + 			m_result =3D NULL;=0A=
 + 		}=0A=
 + 	}=0A=
 +-	while( ( err =3D  odbx_result( m_handle, &m_result, NULL, 0 ) ) > 0 );=0A=
 +-=0A=
 +-	if( err < 0 )=0A=
 +-	{=0A=
 +-		L.log( m_myname + " getRecord: Unable to get next result - " + =
 string( odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 +-		throw( AhuException( "Error: odbx_result() failed" ) );=0A=
 +-	}=0A=
 ++	while( ( err =3D  odbx_result( m_handle[type], &m_result, NULL, 0 ) ) =
 !=3D 0 );=0A=
 + =0A=
 + 	m_result =3D NULL;=0A=
 + 	return false;=0A=
 +@@ -86,18 +132,18 @@=0A=
 + =0A=
 + =0A=
 + =0A=
 +-string OdbxBackend::escape( const string& str )=0A=
 ++string OdbxBackend::escape( const string& str, QueryType type )=0A=
 + {=0A=
 + 	int err;=0A=
 + 	unsigned long len =3D sizeof( m_escbuf );=0A=
 + =0A=
 + =0A=
 +-	DLOG( L.log( m_myname + " escape()", Logger::Debug ) );=0A=
 ++	DLOG( L.log( m_myname + " escape(string)", Logger::Debug ) );=0A=
 + =0A=
 +-	if( ( err =3D odbx_escape( m_handle, str.c_str(), str.size(), =
 m_escbuf, &len ) ) < 0 )=0A=
 ++	if( ( err =3D odbx_escape( m_handle[type], str.c_str(), str.size(), =
 m_escbuf, &len ) ) < 0 )=0A=
 + 	{=0A=
 +-		L.log( m_myname + " escape: Unable to escape string - " + string( =
 odbx_error( m_handle, err ) ),  Logger::Error );=0A=
 +-		throw( AhuException( "Error: odbx_escape() failed" ) );=0A=
 ++		L.log( m_myname + " escape(string): Unable to escape string - " + =
 string( odbx_error( m_handle[type], err ) ),  Logger::Error );=0A=
 ++		throw( runtime_error( "odbx_escape() failed" ) );=0A=
 + 	}=0A=
 + =0A=
 + 	return string( m_escbuf, len );=0A=
 +@@ -105,7 +151,7 @@=0A=
 + =0A=
 + =0A=
 + =0A=
 +-void OdbxBackend::getDomainList( const string& stmt, =
 vector<DomainInfo>* list, bool =
 (*check_fcn)(u_int32_t,u_int32_t,SOAData*,DomainInfo*) )=0A=
 ++bool OdbxBackend::getDomainList( const string& stmt, =
 vector<DomainInfo>* list, bool =
 (*check_fcn)(u_int32_t,u_int32_t,SOAData*,DomainInfo*) )=0A=
 + {=0A=
 + 	const char* tmp;=0A=
 + 	u_int32_t nlast, nserial;=0A=
 +@@ -115,9 +161,8 @@=0A=
 + =0A=
 + 	DLOG( L.log( m_myname + " getDomainList()", Logger::Debug ) );=0A=
 + =0A=
 +-	execStmt( stmt.c_str(), stmt.size(), true );=0A=
 +-=0A=
 +-	if( !getRecord() ) { return; }=0A=
 ++	if( !execStmt( stmt.c_str(), stmt.size(), READ ) ) { return false; }=0A=
 ++	if( !getRecord( READ ) ) { return false; }=0A=
 + =0A=
 + 	do=0A=
 + 	{=0A=
 +@@ -128,7 +173,7 @@=0A=
 + =0A=
 + 		if( ( tmp =3D odbx_field_value( m_result, 6 ) ) !=3D NULL )=0A=
 + 		{=0A=
 +-			DNSPacket::fillSOAData( string( tmp ), sd );=0A=
 ++			DNSPacket::fillSOAData( string( tmp, odbx_field_length( m_result, 6 =
 ) ), sd );=0A=
 + 		}=0A=
 + =0A=
 + 		if( !sd.serial && ( tmp =3D odbx_field_value( m_result, 5 ) ) !=3D =
 NULL )=0A=
 +@@ -171,7 +216,9 @@=0A=
 + 			list->push_back( di );=0A=
 + 		}=0A=
 + 	}=0A=
 +-	while( getRecord() );=0A=
 ++	while( getRecord( READ ) );=0A=
 ++=0A=
 ++	return true;=0A=
 + }=0A=
 + =0A=
 + =0A=
 diff -ruN powerdns/files/pdns.conf powerdns.new/files/pdns.conf=0A=
 --- powerdns/files/pdns.conf	Mon Jul 18 14:59:51 2005=0A=
 +++ powerdns.new/files/pdns.conf	Sun Jan  7 23:20:21 2007=0A=
 @@ -16,6 +16,15 @@=0A=
  #launch=3Dgsqlite=0A=
  #gsqlite-database=3D<path to your SQLite database>=0A=
  =0A=
 +# OpenDBX=0A=
 +#launch=3Dopendbx=0A=
 +#opendbx-backend=3Dmysql=0A=
 +#opendbx-host=3D127.0.0.1=0A=
 +#opendbx-database=3Dpdns=0A=
 +#opendbx-username=3Dpdns=0A=
 +#opendbx-password=3Dpdns=0A=
 +=0A=
 +# Autogenerated configuration file template=0A=
  #################################=0A=
  # allow-axfr-ips	If disabled, DO allow zonetransfers from these IP =
 addresses=0A=
  #=0A=
 @@ -242,6 +251,21 @@=0A=
  # soa-minimum-ttl=3D3600=0A=
  =0A=
  #################################=0A=
 +# soa-refresh-default  Default SOA refresh=0A=
 +#=0A=
 +# soa-refresh-default=3D10800=0A=
 +=0A=
 +#################################=0A=
 +# soa-retry-default    Default SOA retry=0A=
 +#=0A=
 +# soa-retry-default=3D3600=0A=
 +=0A=
 +#################################=0A=
 +# soa-expire-default   Default SOA expire=0A=
 +#=0A=
 +# soa-expire-default=3D604800=0A=
 +=0A=
 +#################################=0A=
  # soa-serial-offset	Make sure that no SOA serial is less than this =
 number=0A=
  #=0A=
  # soa-serial-offset=3D0=0A=
 @@ -300,5 +324,3 @@=0A=
  # wildcards	Honor wildcards in the database=0A=
  #=0A=
  # wildcards=3D=0A=
 -=0A=
 -=0A=
 diff -ruN powerdns/files/pdns.in powerdns.new/files/pdns.in=0A=
 --- powerdns/files/pdns.in	Mon Feb 20 21:46:57 2006=0A=
 +++ powerdns.new/files/pdns.in	Sun Jan  7 22:52:41 2007=0A=
 @@ -32,4 +32,7 @@=0A=
  =0A=
  required_files=3D${pdns_conf}=0A=
  =0A=
 +monitor_cmd=3D"${command} --daemon=3Dno --guardian=3Dno =
 --control-console --loglevel=3D9"=0A=
 +extra_commands=3D"monitor"=0A=
 +=0A=
  run_rc_command "$1"=0A=
 diff -ruN powerdns/files/pdns_mysql.sql powerdns.new/files/pdns_mysql.sql=0A=
 --- powerdns/files/pdns_mysql.sql	Mon Jan 20 07:10:35 2003=0A=
 +++ powerdns.new/files/pdns_mysql.sql	Sun Jan  7 23:27:10 2007=0A=
 @@ -1,38 +1,50 @@=0A=
 -create table domains (=0A=
 - id              INT auto_increment,=0A=
 - name            VARCHAR(255) NOT NULL,=0A=
 - master          VARCHAR(20) DEFAULT NULL,=0A=
 - last_check      INT DEFAULT NULL,=0A=
 - type            VARCHAR(6) NOT NULL,=0A=
 - notified_serial INT DEFAULT NULL,=0A=
 - account         VARCHAR(40) DEFAULT NULL,=0A=
 - primary key (id)=0A=
 -)type=3DInnoDB;=0A=
 +CREATE TABLE domains (=0A=
 +	id INT auto_increment,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL,=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
 +) type=3DInnoDB;=0A=
  =0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
  =0A=
  CREATE TABLE records (=0A=
 -  id              INT auto_increment,=0A=
 -  domain_id       INT DEFAULT NULL,=0A=
 -  name            VARCHAR(255) DEFAULT NULL,=0A=
 -  type            VARCHAR(6) DEFAULT NULL,=0A=
 -  content         VARCHAR(255) DEFAULT NULL,=0A=
 -  ttl             INT DEFAULT NULL,=0A=
 -  prio            INT DEFAULT NULL,=0A=
 -  change_date     INT DEFAULT NULL,=0A=
 -  primary key(id)=0A=
 -)type=3DInnoDB;=0A=
 -=0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -  ip VARCHAR(25) NOT NULL,=0A=
 -  nameserver VARCHAR(255) NOT NULL,=0A=
 -  account VARCHAR(40) DEFAULT NULL=0A=
 +	id INT auto_increment,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
 +) type=3DInnoDB;=0A=
 +=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 -GRANT SELECT ON supermasters TO pdns;=0A=
 -GRANT ALL ON domains TO pdns;=0A=
 -GRANT ALL ON records TO pdns;=0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 +=0A=
 +=0A=
 +GRANT SELECT ON supermasters TO powerdns;=0A=
 +GRANT ALL ON domains TO powerdns;=0A=
 +GRANT ALL ON records TO powerdns;=0A=
 diff -ruN powerdns/files/pdns_postgresql.sql =
 powerdns.new/files/pdns_postgresql.sql=0A=
 --- powerdns/files/pdns_postgresql.sql	Mon Jan 20 07:10:35 2003=0A=
 +++ powerdns.new/files/pdns_postgresql.sql	Sun Jan  7 23:27:10 2007=0A=
 @@ -1,40 +1,52 @@=0A=
 -create table domains (=0A=
 - id              SERIAL PRIMARY KEY,=0A=
 - name            VARCHAR(255) NOT NULL,=0A=
 - master          VARCHAR(20) DEFAULT NULL,=0A=
 - last_check      INT DEFAULT NULL,=0A=
 - type            VARCHAR(6) NOT NULL,=0A=
 - notified_serial INT DEFAULT NULL,=0A=
 - account         VARCHAR(40) DEFAULT NULL=0A=
 +CREATE TABLE domains (=0A=
 +	id SERIAL,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
  );=0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
 +=0A=
  =0A=
  CREATE TABLE records (=0A=
 -        id              SERIAL PRIMARY KEY,=0A=
 -        domain_id       INT DEFAULT NULL,=0A=
 -        name            VARCHAR(255) DEFAULT NULL,=0A=
 -        type            VARCHAR(6) DEFAULT NULL,=0A=
 -        content         VARCHAR(255) DEFAULT NULL,=0A=
 -        ttl             INT DEFAULT NULL,=0A=
 -        prio            INT DEFAULT NULL,=0A=
 -        change_date     INT DEFAULT NULL,=0A=
 -        CONSTRAINT domain_exists=0A=
 -        FOREIGN KEY(domain_id) REFERENCES domains(id)=0A=
 -        ON DELETE CASCADE=0A=
 +	id SERIAL,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
  );=0A=
  =0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -          ip VARCHAR(25) NOT NULL,=0A=
 -          nameserver VARCHAR(255) NOT NULL,=0A=
 -          account VARCHAR(40) DEFAULT NULL=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 -GRANT SELECT ON supermasters TO pdns;=0A=
 -GRANT ALL ON domains TO pdns;=0A=
 -GRANT ALL ON domains_id_seq TO pdns;=0A=
 -GRANT ALL ON records TO pdns;=0A=
 -GRANT ALL ON records_id_seq TO pdns;=0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 +=0A=
 +=0A=
 +GRANT SELECT ON supermasters TO powerdns;=0A=
 +GRANT ALL ON domains TO powerdns;=0A=
 +GRANT ALL ON domains_id_seq TO powerdns;=0A=
 +GRANT ALL ON records TO powerdns;=0A=
 +GRANT ALL ON records_id_seq TO powerdns;=0A=
 diff -ruN powerdns/files/pdns_recursor.in =
 powerdns.new/files/pdns_recursor.in=0A=
 --- powerdns/files/pdns_recursor.in	Mon Feb 20 21:46:57 2006=0A=
 +++ powerdns.new/files/pdns_recursor.in	Thu Jan  1 01:00:00 1970=0A=
 @@ -1,35 +0,0 @@=0A=
 -#!/bin/sh=0A=
 -#=0A=
 -# $FreeBSD: ports/dns/powerdns/files/pdns_recursor.in,v 1.2 2006/02/20 =
 20:46:57 dougb Exp $=0A=
 -#=0A=
 -=0A=
 -# PROVIDE: pdns_recursor=0A=
 -# REQUIRE: DAEMON=0A=
 -# KEYWORD: shutdown=0A=
 -=0A=
 -#=0A=
 -# Add the following lines to /etc/rc.conf to enable pdns_recursor:=0A=
 -#=0A=
 -#pdns_recursor_enable=3D"YES"=0A=
 -#=0A=
 -# See http://rtfm.powerdns.com for flags.=0A=
 -#=0A=
 -=0A=
 -. %%RC_SUBR%%=0A=
 -=0A=
 -name=3Dpdns_recursor=0A=
 -rcvar=3D`set_rcvar`=0A=
 -=0A=
 -command=3D%%PREFIX%%/sbin/pdns_recursor=0A=
 -=0A=
 -# set defaults=0A=
 -=0A=
 -pdns_recursor_enable=3D${pdns_recursor_enable:-"NO"}=0A=
 -pdns_recursor_conf=3D${pdns_recursor_conf:-"%%PREFIX%%/etc/recursor.conf=
 "}=0A=
 -pdns_recursor_flags=3D${pdns_recursor_flags:-""}=0A=
 -=0A=
 -load_rc_config ${name}=0A=
 -=0A=
 -required_files=3D${pdns_recursor_conf}=0A=
 -=0A=
 -run_rc_command "$1"=0A=
 diff -ruN powerdns/files/pdns_sqlite.sql =
 powerdns.new/files/pdns_sqlite.sql=0A=
 --- powerdns/files/pdns_sqlite.sql	Sat Mar  6 13:44:50 2004=0A=
 +++ powerdns.new/files/pdns_sqlite.sql	Sun Jan  7 23:27:10 2007=0A=
 @@ -1,33 +1,45 @@=0A=
 -create table domains (=0A=
 -  id			INTEGER PRIMARY KEY,=0A=
 -  name			VARCHAR(255) NOT NULL,=0A=
 -  master		VARCHAR(20) DEFAULT NULL,=0A=
 -  last_check		INTEGER DEFAULT NULL,=0A=
 -  type			VARCHAR(6) NOT NULL,=0A=
 -  notified_serial	INTEGER DEFAULT NULL,=0A=
 -  account		VARCHAR(40) DEFAULT NULL=0A=
 +CREATE TABLE domains (=0A=
 +	id INT AUTOINCREMENT,=0A=
 +	name VARCHAR(255) NOT NULL,=0A=
 +	type VARCHAR(6) NOT NULL,=0A=
 +	master VARCHAR(40) DEFAULT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL,=0A=
 +	notified_serial INT DEFAULT NULL,=0A=
 +	last_check INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT unq_name=0A=
 +	UNIQUE (name)=0A=
  );=0A=
  =0A=
 -CREATE UNIQUE INDEX name_index ON domains(name);=0A=
  =0A=
  CREATE TABLE records (=0A=
 -  id			INTEGER PRIMARY KEY,=0A=
 -  domain_id		INTEGER DEFAULT NULL,=0A=
 -  name			VARCHAR(255) DEFAULT NULL,=0A=
 -  type			VARCHAR(6) DEFAULT NULL,=0A=
 -  content		VARCHAR(255) DEFAULT NULL,=0A=
 -  ttl			INTEGER DEFAULT NULL,=0A=
 -  prio			INTEGER DEFAULT NULL,=0A=
 -  change_date		INTEGER DEFAULT NULL=0A=
 +	id INT AUTOINCREMENT,=0A=
 +	domain_id INT DEFAULT NULL,=0A=
 +	name VARCHAR(255) DEFAULT NULL,=0A=
 +	type VARCHAR(6) DEFAULT NULL,=0A=
 +	ttl INT DEFAULT NULL,=0A=
 +	prio INT DEFAULT NULL,=0A=
 +	content VARCHAR(255) DEFAULT NULL,=0A=
 +	change_date INT DEFAULT NULL,=0A=
 +CONSTRAINT pk_id=0A=
 +	PRIMARY KEY (id),=0A=
 +CONSTRAINT fk_domainid=0A=
 +	FOREIGN KEY (domain_id)=0A=
 +	REFERENCES domains(id)=0A=
 +	ON UPDATE CASCADE=0A=
 +	ON DELETE CASCADE=0A=
  );=0A=
  =0A=
 -CREATE INDEX rec_name_index ON records(name);=0A=
 -CREATE INDEX nametype_index ON records(name,type);=0A=
 -CREATE INDEX domain_id ON records(domain_id);=0A=
 -=0A=
 -create table supermasters (=0A=
 -  ip			VARCHAR(25) NOT NULL,=0A=
 -  nameserver		VARCHAR(255) NOT NULL,=0A=
 -  account		VARCHAR(40) DEFAULT NULL=0A=
 +CREATE INDEX idx_rdomainid ON records(domain_id);=0A=
 +CREATE INDEX idx_rname ON records(name);=0A=
 +CREATE INDEX idx_rname_rtype ON records(name,type);=0A=
 +=0A=
 +=0A=
 +CREATE TABLE supermasters (=0A=
 +	ip VARCHAR(40) NOT NULL,=0A=
 +	nameserver VARCHAR(255) NOT NULL,=0A=
 +	account VARCHAR(40) DEFAULT NULL=0A=
  );=0A=
  =0A=
 +CREATE INDEX idx_smip_smns ON supermasters(ip,nameserver);=0A=
 diff -ruN powerdns/files/pkg-message.in powerdns.new/files/pkg-message.in=0A=
 --- powerdns/files/pkg-message.in	Mon Jul 18 14:59:51 2005=0A=
 +++ powerdns.new/files/pkg-message.in	Sun Jan  7 23:20:45 2007=0A=
 @@ -4,12 +4,7 @@=0A=
  =0A=
      pdns_enable=3D"YES"=0A=
  =0A=
 - If you want to use the powerdns recursor,=0A=
 - you need the following additional line in /etc/rc.conf=0A=
 -=0A=
 -    pdns_recursor_enable=3D"YES"=0A=
 -=0A=
 - Configuration templates are available in %%PREFIX%%/etc=0A=
 + Configuration templates are available in %%PREFIX%%/etc/pdns=0A=
   as pdns.conf-dist.=0A=
  *******************************************************************=0A=
  =0A=
 diff -ruN powerdns/pkg-plist powerdns.new/pkg-plist=0A=
 --- powerdns/pkg-plist	Thu Feb 23 11:36:22 2006=0A=
 +++ powerdns.new/pkg-plist	Sun Jan  7 22:49:32 2007=0A=
 @@ -2,22 +2,40 @@=0A=
  bin/zone2ldap=0A=
  bin/zone2sql=0A=
  sbin/pdns_server=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.a=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.la=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.so=0A=
 +%%WITHPGSQL%%lib/libgpgsqlbackend.so.0=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.a=0A=
 +%%WITHMYSQL%%lib/libgmysqlbackend.la=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.so=0A=
  %%WITHMYSQL%%lib/libgmysqlbackend.so.0=0A=
 -%%WITHSQLLITE%%lib/libgsqlitebackend.a=0A=
 -%%WITHSQLLITE%%lib/libgsqlitebackend.so=0A=
 -%%WITHSQLLITE%%lib/libgsqlitebackend.so.0=0A=
 -%%WITHLDAP%%lib/libldapbackend.a=0A=
 -%%WITHLDAP%%lib/libldapbackend.so=0A=
 -%%WITHLDAP%%lib/libldapbackend.so.0=0A=
 +%%WITHSQLITE%%lib/libgsqlitebackend.a=0A=
 +%%WITHSQLITE%%lib/libgsqlitebackend.la=0A=
 +%%WITHSQLITE%%lib/libgsqlitebackend.so=0A=
 +%%WITHSQLITE%%lib/libgsqlitebackend.so.0=0A=
 +%%WITHSQLITE3%%lib/libgsqlitebackend.a=0A=
 +%%WITHSQLITE3%%lib/libgsqlitebackend.la=0A=
 +%%WITHSQLITE3%%lib/libgsqlitebackend.so=0A=
 +%%WITHSQLITE3%%lib/libgsqlitebackend.so.0=0A=
 +%%WITHOPENLDAP%%lib/libldapbackend.a=0A=
 +%%WITHOPENLDAP%%lib/libldapbackend.la=0A=
 +%%WITHOPENLDAP%%lib/libldapbackend.so=0A=
 +%%WITHOPENLDAP%%lib/libldapbackend.so.0=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.a=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.la=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.so=0A=
 +%%WITHOPENDBX%%lib/libopendbxbackend.so.0=0A=
 +%%WITHGEO%%lib/libgeobackend.a=0A=
 +%%WITHGEO%%lib/libgeobackend.la=0A=
 +%%WITHGEO%%lib/libgeobackend.so=0A=
 +%%WITHGEO%%lib/libgeobackend.so.0=0A=
  lib/libpipebackend.a=0A=
  lib/libpipebackend.la=0A=
  lib/libpipebackend.so=0A=
  lib/libpipebackend.so.0=0A=
 -%%RECURSOR%%sbin/pdns_recursor=0A=
 -@unexec if cmp -s %D/etc/pdns.conf %D/etc/pdns.conf-dist; then rm -f =
 %D/etc/pdns.conf; fi=0A=
 -etc/pdns.conf-dist=0A=
 +@unexec if cmp -s %D/etc/pdns/pdns.conf %D/etc/pdns/pdns.conf-dist; =
 then rm -f %D/etc/pdns/pdns.conf; fi=0A=
 +etc/pdns/pdns.conf-dist=0A=
  @exec [ -f %B/pdns.conf ] || cp %B/%f %B/pdns.conf=0A=
  %%PORTDOCS%%share/examples/powerdns/pdns.conf=0A=
  %%PORTDOCS%%share/examples/powerdns/pdns_mysql.sql=0A=
 
 ------=_NextPart_000_0079_01C733D0.0C2B7FE0--
 

From: Gabor Kovesdan <gabor@FreeBSD.org>
To: bug-followup@FreeBSD.org,  tremere@cainites.net
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for
 compiling geo backend
Date: Tue, 09 Jan 2007 14:23:43 +0100

 Hello Ralf,
 
 unfortunately the patch still blows up in GNATS, see this link:
 http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 
 Could you upload it somewhere or try to send it to me in private mail, 
 please?
 
 Thanks in advance,
 Gabor
State-Changed-From-To: feedback->open 
State-Changed-By: gabor 
State-Changed-When: Tue Jan 9 21:28:14 UTC 2007 
State-Changed-Why:  
Patch received in private mail. 


Responsible-Changed-From-To: freebsd-ports-bugs->gabor 
Responsible-Changed-By: gabor 
Responsible-Changed-When: Tue Jan 9 21:28:14 UTC 2007 
Responsible-Changed-Why:  
Take. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=96891 
State-Changed-From-To: open->feedback 
State-Changed-By: gabor 
State-Changed-When: Tue Jan 9 22:45:17 UTC 2007 
State-Changed-Why:  
Dear Submitter, 

the patch has packing list issues. Could you, please look at this? 
A build log is available here: 
http://people.freebsd.org/~gabor/logs/powerdns-2.9.20_2.log 

Regards, 
Gabor 

http://www.freebsd.org/cgi/query-pr.cgi?pr=96891 

From: "Ralf van der Enden" <tremere@cainites.net>
To: "Gabor Kovesdan" <gabor@FreeBSD.org>, <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for  compiling geo backend
Date: Wed, 10 Jan 2007 13:57:05 +0100

 Hi Gabor,
 
 I've tracked down the problem with 'make package' asnd have to admit this 
 was a mistake on my part. Most backends are compiled as .so files, except 
 for the Postgresql one. The new patch can be found on 
 http://www.cainites.net/files/pdns-2.9.20_2-1.diff
 
 Sorry for missing this issue (I'll test it better before supplying a patch 
 next time).
 
 Regards,
 Ralf
 ----- Original Message ----- 
 From: "Gabor Kovesdan" <gabor@FreeBSD.org>
 To: <bug-followup@FreeBSD.org>; <tremere@cainites.net>
 Sent: Tuesday, January 09, 2007 2:23 PM
 Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for 
 compiling geo backend
 
 
 Hello Ralf,
 
 unfortunately the patch still blows up in GNATS, see this link:
 http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/96891
 
 Could you upload it somewhere or try to send it to me in private mail,
 please?
 
 Thanks in advance,
 Gabor
 
 

From: Gabor Kovesdan <gabor@FreeBSD.org>
To: Ralf van der Enden <tremere@cainites.net>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/96891: [patch] port dns/powerdns does not have option for
  compiling geo backend
Date: Fri, 12 Jan 2007 14:55:27 +0100

 Ralf van der Enden schrieb:
 > Hi Gabor,
 >
 > I've tracked down the problem with 'make package' asnd have to admit this 
 > was a mistake on my part. Most backends are compiled as .so files, except 
 > for the Postgresql one. The new patch can be found on 
 > http://www.cainites.net/files/pdns-2.9.20_2-1.diff
 >
 > Sorry for missing this issue (I'll test it better before supplying a patch 
 > next time).
 >
 > Regards,
 > Ralf
 >   
 Hello,
 
 I checked your new pach, but it failed. The patches in your files dir 
 does not apply. Here's a build log of the failure:
 http://people.freebsd.org/~gabor/logs/powerdns-2.9.20_2.log
 
 Regards,
 Gabor
State-Changed-From-To: feedback->open 
State-Changed-By: gabor 
State-Changed-When: Fri Jan 12 23:13:35 UTC 2007 
State-Changed-Why:  
Yes, you're right, something just went wrong on the tinderox. We have a good 
patch now. Sorry for the mess. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=96891 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/96891: commit references a PR
Date: Fri, 12 Jan 2007 23:49:12 +0000 (UTC)

 gabor       2007-01-12 23:49:04 UTC
 
   FreeBSD ports repository
 
   Modified files:
     dns/powerdns         Makefile Makefile.inc pkg-plist 
     dns/powerdns/files   pdns.conf pdns.in pdns_mysql.sql 
                          pdns_postgresql.sql pdns_sqlite.sql 
                          pkg-message.in 
   Added files:
     dns/powerdns/files   patch-opendbx 
   Removed files:
     dns/powerdns/files   configure.powerdns pdns_recursor.in 
   Log:
   - Add support for geo backend
   - Add support for OpenDBX backend
   - OPTIONify
   - Bump PORTREVISION
   
   PR:             ports/96891
   Submitted by:   Ralf van der Enden <tremere@cainites.net> (maintainer)
   Approved by:    erwin (mentor)
   
   Revision  Changes    Path
   1.52      +48 -56    ports/dns/powerdns/Makefile
   1.2       +0 -1      ports/dns/powerdns/Makefile.inc
   1.11      +0 -70     ports/dns/powerdns/files/configure.powerdns (dead)
   1.1       +1038 -0   ports/dns/powerdns/files/patch-opendbx (new)
   1.4       +24 -2     ports/dns/powerdns/files/pdns.conf
   1.3       +4 -1      ports/dns/powerdns/files/pdns.in
   1.2       +45 -33    ports/dns/powerdns/files/pdns_mysql.sql
   1.2       +45 -33    ports/dns/powerdns/files/pdns_postgresql.sql
   1.3       +0 -35     ports/dns/powerdns/files/pdns_recursor.in (dead)
   1.2       +37 -25    ports/dns/powerdns/files/pdns_sqlite.sql
   1.2       +1 -6      ports/dns/powerdns/files/pkg-message.in
   1.12      +24 -9     ports/dns/powerdns/pkg-plist
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: gabor 
State-Changed-When: Fri Jan 12 23:57:12 UTC 2007 
State-Changed-Why:  
Committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=96891 
>Unformatted:
