ports/108685: dns/powerdns: replace opendbx patch with new one

Ralf van der Enden tremere at cainites.net
Fri Feb 2 11:50:16 UTC 2007


>Number:         108685
>Category:       ports
>Synopsis:       dns/powerdns: replace opendbx patch with new one
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Fri Feb 02 11:50:16 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Ralf van der Enden
>Release:        FreeBSD 6.2-RELEASE i386
>Organization:
>Environment:
System: FreeBSD lan.cainites.net 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Mon Jan 15 16:52:24 CET 2007 root at lan.cainites.net:/usr/obj/usr/src/sys/HELLKERNEL i386


	
>Description:
Add new OpenDBX patch (from www.linuxnetworks.de)
Prepare Makefile for upcoming new stable release of OpenDBX library (which bumps library number from .1 to .2) -> will submit an update next week
Add stupidity fix for config location to pdns.in (moved the config but forgot to edit rc.d script)
Also changed location of config directory in pdns.conf
Bump port-revision
>How-To-Repeat:
	
>Fix:

	

--- pdns-2.9.20_4.diff begins here ---
Index: files/pdns.conf
===================================================================
--- files/pdns.conf	(revision 34)
+++ files/pdns.conf	(working copy)
@@ -48,7 +48,7 @@
 #################################
 # config-dir	Location of configuration directory (pdns.conf)
 #
-# config-dir=/usr/local/etc
+# config-dir=/usr/local/etc/pdns
 
 #################################
 # config-name	Name of this virtual configuration - will rename the binary image
Index: files/pdns.in
===================================================================
--- files/pdns.in	(revision 34)
+++ files/pdns.in	(working copy)
@@ -25,7 +25,7 @@
 # set defaults
 
 pdns_enable=${pdns_enable:-"NO"}
-pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns.conf"}
+pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns/pdns.conf"}
 pdns_flags=${pdns_flags:-""}
 
 load_rc_config ${name}
Index: files/patch-opendbx
===================================================================
--- files/patch-opendbx	(revision 34)
+++ files/patch-opendbx	(working copy)
@@ -1,5 +1,5 @@
 --- modules/opendbxbackend/odbxbackend.hh	2006-03-15 19:29:39.000000000 +0100
-+++ modules/opendbxbackend/odbxbackend.hh	2006-09-03 11:34:13.000000000 +0200
++++ modules/opendbxbackend/odbxbackend.hh	2007-01-25 22:16:13.000000000 +0100
 @@ -1,11 +1,10 @@
  /*
   *  PowerDNS OpenDBX Backend
@@ -75,42 +75,46 @@
  		declare( suffix, "password","Password for connecting to the DBMS","");
  
 -		declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id'" );
-+		declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id" );
++		declare( suffix, "sql-list", "AXFR query", "SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id" );
  
- 		declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" );
+-		declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" );
 -		declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name'" );
-+		declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name'" );
- 		declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" );
+-		declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" );
 -		declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name' AND type=':type'" );
-+		declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name' AND type=':type'" );
++		declare( suffix, "sql-lookup", "Lookup query","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name'" );
++		declare( suffix, "sql-lookupid", "Lookup query with id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name'" );
++		declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name' AND \"type\"=':type'" );
++		declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name' AND \"type\"=':type'" );
  
 -		declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=':id'" );
 -		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=r.domain_id WHERE ( d.name=':name' AND r.type='SOA' ) OR ( d.name=':name' AND r.domain_id IS NULL )" );
-+		declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=:id" );
-+		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=r.domain_id AND r.type='SOA' ) WHERE d.name=':name' AND d.status='A'" );
++		declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" WHERE \"domain_id\"=:id" );
++		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\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"name\"=':name' AND d.\"status\"='A'" );
  
  		declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" );
  		declare( suffix, "sql-transactend", "Finish transaction", "COMMIT" );
  		declare( suffix, "sql-transactabort", "Abort transaction", "ROLLBACK" );
  
- 		declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" );
+-		declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" );
 -		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' )" );
-+		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' )" );
++		declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO \"domains\" ( \"name\", \"type\", \"master\", \"account\" ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" );
++		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' )" );
++
++		declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" SET \"notified_serial\"=%d WHERE \"id\"=%d" );
++		declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" SET \"last_check\"=%d WHERE \"id\"=%d" );
  
 -		declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial='%d' WHERE id='%d'" );
 -		declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check='%d' WHERE id='%d'" );
-+		declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial=%d WHERE id=%d" );
-+		declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check=%d WHERE id=%d" );
++		declare( suffix, "sql-master", "Get master record for zone", "SELECT \"master\" FROM \"domains\" WHERE \"name\"=':name' AND \"status\"='A' AND \"type\"='SLAVE'" );
++		declare( suffix, "sql-supermaster","Get supermaster info", "SELECT \"account\" FROM \"supermasters\" WHERE \"ip\"=':ip' AND \"nameserver\"=':ns'" );
  
 -		declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND type='SLAVE'" );
-+		declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND status='A' AND type='SLAVE'" );
- 		declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" );
+-		declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" );
++		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\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"status\"='A' AND d.\"type\"='SLAVE'" );
++		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\"=r.\"domain_id\" WHERE d.\"status\"='A' AND d.\"type\"='MASTER' AND r.\"type\"='SOA'" );
  
 -		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=r.domain_id WHERE ( d.type='SLAVE' AND r.type='SOA' ) OR ( d.type='SLAVE' AND r.domain_id IS NULL )" );
 -		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='MASTER' AND d.id=r.domain_id AND r.type='SOA'" );
-+		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=r.domain_id AND r.type='SOA' ) WHERE d.status='A' AND d.type='SLAVE'" );
-+		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=r.domain_id WHERE d.status='A' AND d.type='MASTER' AND r.type='SOA'" );
-+
 +		declare( suffix, "host", "depricated, use host-read and host-write instead","" );
  	}
  
@@ -167,9 +171,9 @@
  
  		setArgPrefix( "opendbx" + suffix );
 -		stringtok( hosts, getArg( "host" ), ", " );
- 
--		idx = odbx_host_index++ % hosts.size();
 -
+-		idx = odbx_host_index++ % hosts.size();
+ 
 -		for( i = 0; i < hosts.size(); i++ )
 +		if( getArg( "host" ).size() > 0 )
  		{
@@ -300,23 +304,23 @@
  
 -		len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
 +		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
++
++		if( len < 0 )
++		{
++			L.log( m_myname + " list: Unable to convert zone id to string - format error",  Logger::Error );
++			return false;
++		}
  
 -		if( len < 0 || len > sizeof( m_buffer ) - 1 )
-+		if( len < 0 )
++		if( len > sizeof( m_buffer ) - 1 )
  		{
 -			L.log( m_myname + " list: Unable to convert zone id to string",  Logger::Error );
 -			throw( DBException( "Error: Libc error" ) );
-+			L.log( m_myname + " list: Unable to convert zone id to string - format error",  Logger::Error );
++			L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space",  Logger::Error );
 +			return false;
  		}
  
 -		stmt = strbind( ":id", string( m_buffer, len ), getArg( "sql-list" ) );
-+		if( len > sizeof( m_buffer ) - 1 )
-+		{
-+			L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space",  Logger::Error );
-+			return false;
-+		}
-+
 +		string stmt = getArg( "sql-list" );
 +		string& stmtref = strbind( ":id", string( m_buffer, len ), stmt );
  
@@ -331,7 +335,7 @@
  	}
  
  	return true;
-@@ -181,23 +201,24 @@
+@@ -181,13 +201,13 @@
  
  void OdbxBackend::lookup( const QType& qtype, const string& qname, DNSPacket* dnspkt, int zoneid )
  {
@@ -347,11 +351,8 @@
 +
  		m_result = NULL;
  		m_qname = qname;
--		
-+
- 		if( zoneid < 0 )
- 		{
- 			if( qtype.getCode() == QType::ANY )
+ 		
+@@ -197,7 +217,8 @@
  			{
  				stmt = getArg( "sql-lookup" );
  			} else {
@@ -369,25 +370,24 @@
 +				stmt = getArg( "sql-lookuptypeid" );
 +				stmtref = strbind( ":type", qtype.getName(), stmt );
  			}
-- 			
-+
+  			
  			size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
  
 -			if( len < 0 || len > sizeof( m_buffer ) - 1 )
 +			if( len < 0 )
++			{
++				L.log( m_myname + " lookup: Unable to convert zone id to string - format error",  Logger::Error );
++				throw( DBException( "Error: Libc error" ) );
++			}
++
++			if( len > sizeof( m_buffer ) - 1 )
  			{
 -				L.log( m_myname + " lookup: Unable to convert zone id to string",  Logger::Error );
-+				L.log( m_myname + " lookup: Unable to convert zone id to string - format error",  Logger::Error );
++				L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space",  Logger::Error );
  				throw( DBException( "Error: Libc error" ) );
  			}
  
 -			stmt = strbind( ":id", string( m_buffer, len ), stmt );
-+			if( len > sizeof( m_buffer ) - 1 )
-+			{
-+				L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space",  Logger::Error );
-+				throw( DBException( "Error: Libc error" ) );
-+			}
-+
 +			stmtref = strbind( ":id", string( m_buffer, len ), stmtref );
  		}
  
@@ -453,19 +453,19 @@
  
 -		if( len < 0 || len > sizeof( m_buffer ) - 1 )
 +		if( len < 0 )
-+		{
-+			L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error",  Logger::Error );
-+			throw( DBException( "Error: Libc error" ) );
-+		}
-+
-+		if( len > sizeof( m_buffer ) - 1 )
  		{
 -			L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "'",  Logger::Error );
-+			L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space",  Logger::Error );
++			L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error",  Logger::Error );
  			throw( DBException( "Error: Libc error" ) );
  		}
  
 -		execStmt( m_buffer, len, false );
++		if( len > sizeof( m_buffer ) - 1 )
++		{
++			L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space",  Logger::Error );
++			throw( DBException( "Error: Libc error" ) );
++		}
++
 +		if( !execStmt( m_buffer, len, WRITE ) )
 +		{
 +			throw( DBException( "Error: DB statement failed" ) );
@@ -490,10 +490,10 @@
 +			L.log( m_myname + " setFresh: Master server is unreachable",  Logger::Error );
 +			throw( DBException( "Error: Server unreachable" ) );
 +		}
++
++		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id );
  
 -		if( len < 0 || len > sizeof( m_buffer ) - 1 )
-+		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id );
-+
 +		if( len < 0 )
  		{
 -			L.log( m_myname + " setNotified: Unable to insert values into statement '" + getArg( "sql-update-serial" ) + "'",  Logger::Error );
@@ -619,15 +619,15 @@
  			{
 -				stmt = strbind( ":ip", escape( ip ), getArg( "sql-supermaster" ) );
 -				stmt = strbind( ":ns", escape( i->content ), stmt );
--
--				execStmt( stmt.c_str(), stmt.size(), true );
 +				string stmt = getArg( "sql-supermaster" );
 +				string& stmtref = strbind( ":ip", escape( ip, READ ), stmt );
 +				stmtref = strbind( ":ns", escape( i->content, READ ), stmtref );
  
--				if( !getRecord() ) { return false; }
+-				execStmt( stmt.c_str(), stmt.size(), true );
 +				if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; }
  
+-				if( !getRecord() ) { return false; }
+-
 -				do
 +				if( getRecord( READ ) )
  				{
@@ -637,17 +637,15 @@
  					}
 -				}
 -				while( getRecord() );
- 
--				*ddb=this;
--				return true;
-+					while( getRecord( READ ) );
 +
-+					*ddb=this;
-+					return true;
-+				}
++					while( getRecord( READ ) );
+ 
+ 				*ddb=this;
+ 				return true;
  			}
  		}
  	}
++	}
  	catch ( exception& e )
  	{
  		L.log( m_myname + " superMasterBackend: Caught STL exception - " + e.what(),  Logger::Error );
@@ -674,27 +672,27 @@
 +			L.log( m_myname + " createSlaveDomain: Master server is unreachable",  Logger::Error );
 +			return false;
 +		}
- 
--		if( len < 0 || len > sizeof( m_buffer ) - 1 )
++
 +		string tmp = domain;
 +		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( toLowerByRef( tmp ), WRITE ).c_str(),
 +			escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() );
-+
+ 
+-		if( len < 0 || len > sizeof( m_buffer ) - 1 )
 +		if( len < 0 )
  		{
 -			L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "'",  Logger::Error );
 -			throw( DBException( "Error: Libc error" ) );
 +			L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - format error",  Logger::Error );
 +			return false;
-+		}
-+
+ 		}
+ 
+-		execStmt( m_buffer, len, false );
 +		if( len > sizeof( m_buffer ) - 1 )
 +		{
 +			L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - insufficient buffer space",  Logger::Error );
 +			return false;
- 		}
- 
--		execStmt( m_buffer, len, false );
++		}
++
 +		if( !execStmt( m_buffer, len, WRITE ) ) { return false; }
  	}
  	catch ( exception& e )
@@ -723,13 +721,13 @@
 +			L.log( m_myname + " feedRecord: Master server is unreachable",  Logger::Error );
 +			return false;
 +		}
- 
--		if( len < 0 || len > sizeof( m_buffer ) - 1 )
++
 +		string tmp = rr.qname;
 +		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-record" ).c_str(), rr.domain_id,
 +			escape( toLowerByRef( tmp ), WRITE ).c_str(), rr.qtype.getName().c_str(), rr.ttl, rr.priority,
 +			escape( rr.content, WRITE ).c_str() );
-+
+ 
+-		if( len < 0 || len > sizeof( m_buffer ) - 1 )
 +		if( len < 0 )
  		{
 -			L.log( m_myname + " feedRecord: Unable to insert values in statement '" + getArg( "sql-insert-record" ) + "'",  Logger::Error );
@@ -778,10 +776,10 @@
 -		len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
 +		string& stmtref = const_cast<string&>( getArg( "sql-transactbegin" ) );
 +		if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; }
++
++		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
  
 -		if( len < 0 || len > sizeof( m_buffer ) - 1 )
-+		size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
-+
 +		if( len < 0 )
  		{
 -			L.log( m_myname + " lookup: Unable to convert zone id to string",  Logger::Error );
@@ -855,7 +853,7 @@
  
  	return true;
 --- modules/opendbxbackend/odbxprivate.cc	2006-03-15 19:29:39.000000000 +0100
-+++ modules/opendbxbackend/odbxprivate.cc	2006-09-02 01:02:36.000000000 +0200
++++ modules/opendbxbackend/odbxprivate.cc	2007-01-21 18:00:22.000000000 +0100
 @@ -2,7 +2,50 @@
  
  
@@ -885,7 +883,7 @@
 +
 +		if( ( err = odbx_init( &(m_handle[type]), getArg( "backend" ).c_str(), hosts[h].c_str(), getArg( "port" ).c_str() ) ) == ODBX_ERR_SUCCESS )
 +		{
-+			if( ( err = odbx_bind_simple( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str() ) ) == ODBX_ERR_SUCCESS )
++			if( ( err = odbx_bind( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str(), ODBX_BIND_SIMPLE ) ) == ODBX_ERR_SUCCESS )
 +			{
 +				L.log( m_myname + " Database connection (" + (type ? "write" : "read") + ") to '" + hosts[h] + "' succeeded", Logger::Notice );
 +				return true;
@@ -918,7 +916,7 @@
 -		L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle, err ) ),  Logger::Error );
 -		throw( AhuException( "Error: odbx_query() failed" ) );
 +		L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle[type], err ) ),  Logger::Error );
-+		connectTo( m_hosts[type], type );
++		if( odbx_error_type( m_handle[type], err ) < 0 ) { connectTo( m_hosts[type], type ); }
 +		return false;
  	}
  
Index: Makefile
===================================================================
--- Makefile	(revision 34)
+++ Makefile	(working copy)
@@ -7,7 +7,7 @@
 
 PORTNAME=	powerdns
 PORTVERSION=	2.9.20
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	dns ipv6
 MASTER_SITES=	http://downloads.powerdns.com/releases/ \
 		http://mirrors.evolva.ro/powerdns.com/releases/
@@ -98,7 +98,7 @@
 .endif
 
 .if defined(WITH_OPENDBX)
-LIB_DEPENDS+=		opendbx.1:${PORTSDIR}/databases/opendbx
+LIB_DEPENDS+=		opendbx.[1-2]:${PORTSDIR}/databases/opendbx
 CONFIGURE_MODULES+=	"opendbx"
 PLIST_SUB+=		WITHOPENDBX=""
 CXXFLAGS+=		-L${LOCALBASE}/lib
--- pdns-2.9.20_4.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list