Index: trunk/Nebulous-Server/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 24548)
+++ trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 24558)
@@ -1449,6 +1449,27 @@
     }
 
-    eval {
-        $log->debug("trying for a directory match under dir: $dir_id");
+    # find dirs under dir
+    my @dir_keys;
+    eval {
+        $log->debug("looking for directories under dir: $dir_id");
+        my $query = $db->prepare_cached( $sql->find_dir_by_parent_id);
+        $query->execute( $dir_id );
+
+        while ( my $row = $query->fetchrow_hashref ) {
+            next if $row->{'dir_id'} == 1;
+            my $dir = $row->{'dirname'};
+            if ($dir_id == 1) {
+                push @keys, $dir . '/' if $dir;
+            } else {
+                push @keys, $key->path . '/' . $dir . '/' if $dir;
+            }
+            $log->debug( "matched $dir" ) if $dir;
+        }
+    };
+    $log->logdie("database error: $@") if $@;
+
+    # find files under dir
+    eval {
+        $log->debug("looking for objects under dir: $dir_id");
         my $query = $db->prepare_cached( $sql->find_object_by_dir_id );
         $query->execute( $dir_id );
@@ -1463,6 +1484,6 @@
 
     $log->debug( "leaving" );
-
-    return \@keys;
+    
+    return [sort(@dir_keys), sort(@keys)];
 }
 
