diff --git a/ftw.gemspec b/ftw.gemspec
new file mode 100644
index 0000000..c84c94b
Binary files /dev/null and b/ftw.gemspec differ
diff --git a/lib/ftw/http/message.rb b/lib/ftw/http/message.rb
index 02d1feb..47db860 100644
--- a/lib/ftw/http/message.rb
+++ b/lib/ftw/http/message.rb
@@ -21,6 +21,9 @@ module FTW::HTTP::Message
   # HTTP Versions that are valid.
   VALID_VERSIONS = [1.0, 1.1]
 
+  # For backward-compatibility, this exception inherits from ArgumentError
+  UnsupportedHTTPVersion = Class.new(ArgumentError)
+
   private
 
   # A new HTTP message.
@@ -101,7 +104,7 @@ module FTW::HTTP::Message
     ver = ver.to_f if !ver.is_a?(Float)
 
     if !VALID_VERSIONS.include?(ver)
-      raise ArgumentError.new("#{self.class.name}#version = #{ver.inspect} is" \
+      raise UnsupportedHTTPVersion.new("#{self.class.name}#version = #{ver.inspect} is" \
         "invalid. It must be a number, one of #{VALID_VERSIONS.join(", ")}")
     end
     @version = ver
diff --git a/lib/ftw/server.rb b/lib/ftw/server.rb
index 0e2419c..445d50f 100644
--- a/lib/ftw/server.rb
+++ b/lib/ftw/server.rb
@@ -106,7 +106,7 @@ class FTW::Server
     # TODO(sissel): Select on all sockets
     # TODO(sissel): Accept and yield to the block
     stopper = @stopper[0]
-    while true
+    while !@sockets.empty?
       @control_lock.synchronize do
         sockets = @sockets.values + [stopper]
         read, write, error = IO.select(sockets, nil, nil, nil)
diff --git a/lib/ftw/version.rb b/lib/ftw/version.rb
index 7441632..bc7ba20 100644
--- a/lib/ftw/version.rb
+++ b/lib/ftw/version.rb
@@ -3,5 +3,5 @@ require "ftw/namespace"
 # :nodoc:
 module FTW
   # The version of this library
-  VERSION = "0.0.44"
+  VERSION = "0.0.49"
 end
diff --git a/lib/ftw/webserver.rb b/lib/ftw/webserver.rb
index 50418d0..babb0cd 100644
--- a/lib/ftw/webserver.rb
+++ b/lib/ftw/webserver.rb
@@ -49,6 +49,8 @@ class FTW::WebServer
         # Connection EOF'd or errored before we finished reading a full HTTP
         # message, shut it down.
         break
+      rescue FTW::HTTP::Message::UnsupportedHTTPVersion
+        break
       end
 
       if request["Content-Length"] || request["Transfer-Encoding"]
diff --git a/metadata.yml b/metadata.yml
deleted file mode 100644
index b1172d9..0000000
--- a/metadata.yml
+++ /dev/null
@@ -1,155 +0,0 @@
---- !ruby/object:Gem::Specification
-name: ftw
-version: !ruby/object:Gem::Version
-  version: 0.0.44
-platform: ruby
-authors:
-- Jordan Sissel
-autorequire: 
-bindir: bin
-cert_chain: []
-date: 2015-06-19 00:00:00.000000000 Z
-dependencies:
-- !ruby/object:Gem::Dependency
-  name: cabin
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">"
-      - !ruby/object:Gem::Version
-        version: '0'
-  type: :runtime
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">"
-      - !ruby/object:Gem::Version
-        version: '0'
-- !ruby/object:Gem::Dependency
-  name: http_parser.rb
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - "~>"
-      - !ruby/object:Gem::Version
-        version: '0.6'
-  type: :runtime
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - "~>"
-      - !ruby/object:Gem::Version
-        version: '0.6'
-- !ruby/object:Gem::Dependency
-  name: addressable
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">="
-      - !ruby/object:Gem::Version
-        version: '0'
-  type: :runtime
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">="
-      - !ruby/object:Gem::Version
-        version: '0'
-- !ruby/object:Gem::Dependency
-  name: backports
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">="
-      - !ruby/object:Gem::Version
-        version: 2.6.2
-  type: :runtime
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">="
-      - !ruby/object:Gem::Version
-        version: 2.6.2
-- !ruby/object:Gem::Dependency
-  name: minitest
-  requirement: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">"
-      - !ruby/object:Gem::Version
-        version: '0'
-  type: :development
-  prerelease: false
-  version_requirements: !ruby/object:Gem::Requirement
-    requirements:
-    - - ">"
-      - !ruby/object:Gem::Version
-        version: '0'
-description: For The Web. Trying to build a solid and sane API for client and server
-  web stuff. Client and Server operations for HTTP, WebSockets, SPDY, etc.
-email:
-- jls@semicomplete.com
-executables: []
-extensions: []
-extra_rdoc_files: []
-files:
-- README.md
-- lib/ftw.rb
-- lib/ftw/agent.rb
-- lib/ftw/agent/configuration.rb
-- lib/ftw/cacert.pem
-- lib/ftw/connection.rb
-- lib/ftw/cookies.rb
-- lib/ftw/crlf.rb
-- lib/ftw/dns.rb
-- lib/ftw/dns/dns.rb
-- lib/ftw/dns/hash.rb
-- lib/ftw/http/headers.rb
-- lib/ftw/http/message.rb
-- lib/ftw/namespace.rb
-- lib/ftw/pool.rb
-- lib/ftw/poolable.rb
-- lib/ftw/protocol.rb
-- lib/ftw/request.rb
-- lib/ftw/response.rb
-- lib/ftw/server.rb
-- lib/ftw/singleton.rb
-- lib/ftw/version.rb
-- lib/ftw/webserver.rb
-- lib/ftw/websocket.rb
-- lib/ftw/websocket/constants.rb
-- lib/ftw/websocket/parser.rb
-- lib/ftw/websocket/rack.rb
-- lib/ftw/websocket/writer.rb
-- lib/rack/handler/ftw.rb
-- test/all.rb
-- test/docs.rb
-- test/ftw/crlf.rb
-- test/ftw/http/dns.rb
-- test/ftw/http/headers.rb
-- test/ftw/protocol.rb
-- test/ftw/singleton.rb
-- test/testing.rb
-homepage: http://github.com/jordansissel/ruby-ftw
-licenses:
-- Apache License (2.0)
-metadata: {}
-post_install_message: 
-rdoc_options: []
-require_paths:
-- lib
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
-  requirements:
-  - - ">="
-    - !ruby/object:Gem::Version
-      version: '0'
-required_rubygems_version: !ruby/object:Gem::Requirement
-  requirements:
-  - - ">="
-    - !ruby/object:Gem::Version
-      version: '0'
-requirements: []
-rubyforge_project: 
-rubygems_version: 2.4.6
-signing_key: 
-specification_version: 4
-summary: For The Web. Trying to build a solid and sane API for client and server web
-  stuff. Client and Server operations for HTTP, WebSockets, SPDY, etc.
-test_files: []
-has_rdoc: