Index: /trunk/lib/Perlbal/ClientHTTPBase.pm
===================================================================
--- /trunk/lib/Perlbal/ClientHTTPBase.pm (revision 704)
+++ /trunk/lib/Perlbal/ClientHTTPBase.pm (revision 707)
@@ -139,4 +139,9 @@
 }
 
+# overridden here from Perlbal::Socket to use the service value
+sub max_idle_time {
+    return $_[0]->{service}->{persist_client_timeout};
+}
+
 # called when we've finished writing everything to a client and we need
 # to reset our state for another request.  returns 1 to mean that we should
Index: /trunk/lib/Perlbal/Socket.pm
===================================================================
--- /trunk/lib/Perlbal/Socket.pm (revision 687)
+++ /trunk/lib/Perlbal/Socket.pm (revision 707)
@@ -132,16 +132,12 @@
     my $now = time;
 
-    my %max_age;  # classname -> max age (0 means forever)
     my @to_close;
     while (my $k = each %$sf) {
         my Perlbal::Socket $v = $sf->{$k};
-        my $ref = ref $v;
-        unless (defined $max_age{$ref}) {
-            # eval because not all Danga::Socket connections in Perlbal
-            # must be Perlbal::Socket-derived
-            $max_age{$ref} = eval { $ref->max_idle_time } || 0;
-        }
-        next unless $max_age{$ref};
-        if ($v->{alive_time} < $now - $max_age{$ref}) {
+
+        my $max_age = eval { $v->max_idle_time } || 0;
+        next unless $max_age;
+
+        if ($v->{alive_time} < $now - $max_age) {
             push @to_close, $v;
         }
Index: /trunk/CHANGES
===================================================================
--- /trunk/CHANGES (revision 705)
+++ /trunk/CHANGES (revision 707)
@@ -1,2 +1,5 @@
+    -- make persist_client_timeout service tunable apply to the max_idle_time
+       value used to kill sockets that are idle
+
     -- add Vpath plugin for selectors; can select on URI regex now
 
