Index: lib/Net/LDAP/Search.pm
===================================================================
--- lib/Net/LDAP/Search.pm	(revision 388)
+++ lib/Net/LDAP/Search.pm	(working copy)
@@ -12,7 +12,7 @@
 use Net::LDAP::Constant qw(LDAP_SUCCESS LDAP_DECODING_ERROR);
 
 @ISA = qw(Net::LDAP::Message);
-$VERSION = "0.09";
+$VERSION = "0.09_01";
 
 
 sub first_entry { # compat
@@ -37,6 +37,7 @@
     if exists $result->{protocolOp}{searchResDone};
 
   my $data;
+  $self->{controls} = $result->{controls};
 
   if ($data = delete $result->{protocolOp}{searchResEntry}) {
 
Index: lib/Net/LDAP/Message.pm
===================================================================
--- lib/Net/LDAP/Message.pm	(revision 388)
+++ lib/Net/LDAP/Message.pm	(working copy)
@@ -10,7 +10,7 @@
 use strict;
 use vars qw($VERSION);
 
-$VERSION = "1.07";
+$VERSION = "1.07_01";
 
 my $MsgID = 0;
 
@@ -136,10 +136,7 @@
 
   @{$self}{keys %$data} = values %$data;
 
-  # Should the controls be associated with the whole request, or in
-  # the case of a search the entry in this packet ? -- GMB
-  $self->{controls} = $result->{controls}
-    if exists $result->{controls};
+  $self->{controls} = $result->{controls};
 
   # free up memory as we have a result so we will not need to re-send it
   delete $self->{pdu};
@@ -187,7 +184,7 @@
 sub control {
   my $self = shift;
 
-  if (exists $self->{controls}) {
+  if ($self->{controls}) {
     require Net::LDAP::Control;
     my $hash = $self->{ctrl_hash} = {};
     foreach my $asn (@{delete $self->{controls}}) {
