]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
radosgw/swift: clean up flush / newline behavior.
authorMarcus Watts <mwatts@redhat.com>
Wed, 11 Jan 2017 05:06:15 +0000 (00:06 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Thu, 26 Jan 2017 19:58:29 +0000 (14:58 -0500)
commit5f229d6a33eae4906f22cdb90941835e47ee9f02
treed89654a664bd2ee9b1fa9fce4e26d446a1a33d97
parentb6f1ba8a81f0db926071d27543fce97faa5519b4
radosgw/swift: clean up flush / newline behavior.

The current code emits a newline after swift errors, but fails
to account for it when it calculates 'content-length'.  This results in
some clients (go github.com/ncw/swift) producing complaints about the
unsolicited newline such as this,
Unsolicited response received on idle HTTP channel starting with "\n"; err=<nil>

This logic eliminates the newline on flush.  This makes the content length
calculation correct and eliminates the stray newline.

There was already existing separator logic in the rgw plain formatter
that can emit a newline at the correct point.  It had been checking
"len" to decide if previous data had been emitted, but that's reset to 0
by flush().  So, this logic adds a new per-instance variable to separately
track state that it emitted a previous item (and should emit a newline).

Fixes: http://tracker.ceph.com/issues/18473
Signed-off-by: Marcus Watts <mwatts@redhat.com>
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_formats.cc
src/rgw/rgw_formats.h