diff --git a/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
index 4e4450c..99cc5d0 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/DependencyManager.java
@@ -291,6 +291,12 @@
                 {
                     invokeUnbindMethod( instance, reference );
                 }
+
+                // ensure the service is not cached anymore, we call it here
+                // since there might be a bind method (or the locateService
+                // method might have been called) but there is no unbind
+                // method to actually unbind the service (see FELIX-832)
+                ungetService( reference );
             }
         }
     }
@@ -674,21 +680,25 @@
      */
     void unbind( Object instance )
     {
-        // if the instance is null, we do nothing actually
-        // the instance might be null in the delayed component situation.
-        // Additionally, we do nothing here in case there is no configured
-        // unbind method.
-        if ( instance == null || m_dependencyMetadata.getUnbind() == null )
-        {
-            return;
-        }
+        // only invoke the unbind method if there is an instance (might be null
+        // in the delayed component situation) and the unbind method is declared.
+        boolean doUnbind = instance != null && m_dependencyMetadata.getUnbind() != null;
 
         ServiceReference[] boundRefs = getBoundServiceReferences();
         if ( boundRefs != null )
         {
             for ( int i = 0; i < boundRefs.length; i++ )
             {
-                invokeUnbindMethod( instance, boundRefs[i] );
+                if ( doUnbind )
+                {
+                    invokeUnbindMethod( instance, boundRefs[i] );
+                }
+
+                // unget the service, we call it here since there might be a
+                // bind method (or the locateService method might have been
+                // called) but there is no unbind method to actually unbind
+                // the service (see FELIX-832)
+                ungetService( boundRefs[i] );
             }
         }
     }
@@ -997,11 +1007,6 @@
                         .getCause() );
                 return true;
             }
-            finally
-            {
-                // ensure the service is not cached anymore
-                ungetService( ref );
-            }
 
         }
         else if ( m_componentManager.getComponentMetadata().isImmediate() == false )
