swift/test/unit/common
Samuel Merritt 25ebf3aa9e Raise error on long or short DLO
The GET response for a DLO has a Content-Length that's computed from
the container listing, but the response body's length is determined by
the segments. If a segment grows or shrinks between when the headers
are sent and when the segment is requested, this confuses clients.

For example, if the DLO is longer than its Content-Length and the
client sends another request on the same TCP connection, then it can
get leftover object bytes instead of an HTTP status line.
Alternately, if the headers it sends fill up the TCP buffers since
Swift won't read them until the first response is done, then deadlock
hilarity ensues.

If the DLO is shorter than its Content-Length, you're pretty much
guaranteed a deadlock: the client is waiting for the rest of the
response, and the server is waiting for a new request.

Now SegmentedIterable detects both these conditions and raises an
exception so that the TCP connection gets torn down. It can't save
this request, but it can stop the next one from getting hosed too.

Change-Id: Icf79ba046ef7aaaab49ce6d0b33147332c967afc
2014-02-20 21:03:51 -08:00
..
middleware Raise error on long or short DLO 2014-02-20 21:03:51 -08:00
ring Use a tempfile.mkdtemp() based temporary directory 2014-01-19 16:29:45 -05:00
__init__.py Initial commit of Swift code 2010-07-12 17:03:45 -05:00
corrupted_example.db Real files for bad databases. 2011-08-02 18:21:25 +00:00
malformed_example.db Real files for bad databases. 2011-08-02 18:21:25 +00:00
test_bufferedhttp.py Change OpenStack LLC to Foundation 2013-09-20 01:02:31 +08:00
test_constraints.py Move all DLO functionality to middleware 2014-02-03 18:29:48 -08:00
test_container_sync_realms.py New container sync configuration option 2014-01-10 23:48:00 +00:00
test_daemon.py Revert "Refactor common/utils methods to common/ondisk" 2013-10-07 17:18:09 -04:00
test_db_replicator.py Increases the UT coverage of db_replicator.py 2013-12-03 14:00:22 -03:00
test_db.py Fix misspellings in swift 2014-02-20 16:15:48 +08:00
test_direct_client.py Remove an useless dependency to swiftclient 2014-01-16 14:07:48 +01:00
test_exceptions.py Remove swiftclient dep on direct_client 2013-12-24 03:11:43 -08:00
test_internal_client.py Remove swiftclient dependency 2014-02-06 09:44:58 +00:00
test_manager.py Up nproc limit on startup. 2013-12-29 11:35:07 -05:00
test_memcached.py Attempt to make test_memcache_pool_timeout stable 2014-02-03 00:47:09 -05:00
test_request_helpers.py Generic means for persisting system metadata. 2014-01-06 22:29:37 +00:00
test_swob.py Support If-[None-]Match for object HEAD, SLO, and DLO 2014-02-20 14:54:26 -08:00
test_utils.py Merge "Add secondary groups to user during privilege escalation" 2014-01-28 00:37:49 +00:00
test_wsgi.py Move all DLO functionality to middleware 2014-02-03 18:29:48 -08:00