- parse headers in a systematic way using a header parser written for the
commitecbea3175357a1e35232706427e91544fd50bb61
authorahartmetz <ahartmetz@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
Tue, 2 Sep 2008 21:12:16 +0000 (2 21:12 +0000)
committerahartmetz <ahartmetz@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
Tue, 2 Sep 2008 21:12:16 +0000 (2 21:12 +0000)
treef70b8574b5614aa8bf36a0539e8569e982bcbd0e
parent47ae1efb2bb2a4498e89fce693382f16bb9461a5
- parse headers in a systematic way using a header parser written for the
  purpose. this makes keeping header parsing free of bugs much less of a hassle.
  with simple unittest - it actually helped me *a lot* so it's better than
  nothing. it should be pretty fast, too. in a test it parsed ~13 MB of headers
  per second on my phenom at 2GHz; this indicates that the old ad-hoc parser was
  likely not a bottleneck ;)
- some "safe" parsing helpers that know not to overflow a buffer and with clear
  semantics (advancing the read pointer if they recognize what they are made to
  recognize).
- dump the gets() / rewind() / setRewindMarker() business and replace it by
  unread() which puts data back into the input stream with less head-scratching
  about what exactly it does. unread is both less complex and requires less
  variables in the already crowded HTTProtocol class.
- do not override read() because it's confusing. call the method to achieve the
  same goal (mainly unread support) readBuffered() instead.
- adapt getAuthorization() to pre-parsed headers
- small improvements like collapsing of switch cases and kdelibs-style
  formatting in significantly changed methods
- some explanatory comments
- some performance tweaking - real-world performance (i.e. loading websites)
  is hopefully better than before. mainly experimenting with buffer sizes and
  how exactly to read incoming data.
  IIRC this included the funny new code in readChunked().
- probably something I forgot
- fix some small behavior bugs in header parsing, mainly in case of somehow
  incorrect headers though
- quite some testing to kill any bugs introduced. we'll see about the bugs...
- primitive multi-get support, not completely ready to use though. easier to
  commit it than to remove it for the checkin.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs@856450 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
kioslave/CMakeLists.txt
kioslave/http/http.cpp
kioslave/http/http.h
kioslave/http/parsinghelpers.cpp [new file with mode: 0644]
kioslave/http/parsinghelpers.h [new file with mode: 0644]
kioslave/tests/CMakeLists.txt [new file with mode: 0644]
kioslave/tests/httpheadertokenizetest.cpp [new file with mode: 0644]
kioslave/tests/httpheadertokenizetest.h [new file with mode: 0644]