<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -133,6 +133,7 @@ VALUE backend_close(VALUE self)
   if (backend-&gt;open) {
     backend-&gt;open = 0;
     ev_io_stop(backend-&gt;loop, &amp;backend-&gt;accept_watcher);
+    shutdown(backend-&gt;fd, SHUT_RDWR);
     close(backend-&gt;fd);
   }
   </diff>
      <filename>ext/thin_backend/backend.c</filename>
    </modified>
    <modified>
      <diff>@@ -155,8 +155,10 @@ void connection_close(connection_t *c)
   rb_gc_unregister_address(&amp;c-&gt;input);
   
   /* kill the thread if still running */
-  if (c-&gt;thread.active)
+  if (c-&gt;thread.active) {
+    c-&gt;backend-&gt;thread_count--;
     rb_thread_kill(c-&gt;thread.obj);
+  }
   
   /* put back in the queue of unused connections */
   queue_push(&amp;c-&gt;backend-&gt;connections, c);</diff>
      <filename>ext/thin_backend/connection.c</filename>
    </modified>
    <modified>
      <diff>@@ -124,11 +124,12 @@ static VALUE response_run(connection_t *c)
 {
   /* Call the app to process the request */  
   VALUE response = rb_funcall_rescue(c-&gt;backend-&gt;app, sInternedCall, 1, c-&gt;env);
+  unsigned sent = 0;
   
   if (response == Qundef) {
     /* log any error */
     rb_funcall(c-&gt;backend-&gt;obj, rb_intern(&quot;log_last_exception&quot;), 0);
-    connection_close(c);
+    sent = 1;
     
   } else {
     /* store response info and prepare for writing */
@@ -149,12 +150,15 @@ static VALUE response_run(connection_t *c)
     c-&gt;finished = 1;
     
     if (buffer_eof(&amp;c-&gt;write_buffer))
-      connection_close(c);
+      sent = 1;
     
   }
   
-  c-&gt;thread.active = 0;
   c-&gt;backend-&gt;thread_count--;
+  c-&gt;thread.active = 0;
+  
+  if (sent)
+    connection_close(c);
   
   return Qnil;
 }</diff>
      <filename>ext/thin_backend/response.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b708830bd819c5b733441b45a4ecb626a9da0d74</id>
    </parent>
  </parents>
  <author>
    <name>macournoyer</name>
    <email>macournoyer@gmail.com</email>
  </author>
  <url>http://github.com/macournoyer/thin-turbo/commit/a9f3f2909d6e6aea96c11a3f102f5490ea34c7f8</url>
  <id>a9f3f2909d6e6aea96c11a3f102f5490ea34c7f8</id>
  <committed-date>2008-06-11T20:14:34-07:00</committed-date>
  <authored-date>2008-06-11T20:14:34-07:00</authored-date>
  <message>Decrement thread_count equally on succressfull and failed request.</message>
  <tree>b96c469bf19c53e4b98263646dbc9eba812542f5</tree>
  <committer>
    <name>macournoyer</name>
    <email>macournoyer@gmail.com</email>
  </committer>
</commit>
