libsoup 2.22 plan
This page looks awful, but it's the wiki's fault.
Overview
- Goals / Drivers
- Binding support (python, mono, etc)
- Close outstanding bugs, fix API ickiness reported by users
- In particular, streaming support for gvfs/gstreamer
- Constraints
Try not to break API/ABI too much. (Breaks are noted with (*).)
- But also try to lay groundwork for future API/ABI break plans...
- Not a whole lot of time: 2.22 feature freeze is January 14
Requirements
Desktop-wide HTTP
Easy GnomeKeyring integration for passwords
- Cookie parsing/setting. Storage?
GnomeKeyring/Cryptoki integration for certificate stuff
- Cache support?
- Read GConf proxy settings (gvfs?). Better proxy settings?
Binding support
- Clean up API; hide types/methods that shouldn't be public (*)
Use GObject properties more
use GDestroyNotify and/or GClosure to make callbacks more bindable
- Further gtypification
glib-mkenums
- register boxed/pointer types for important structs
- Make better opaque types for message headers and body (*)
- Fix up memory-management oddities
soup_message_new does not dup the method string (*)
SoupOwnership does not translate well
SoupMessage refcounting semantics may work better with floating refs? (*)
SoupServer auth is a disaster. Server handlers are only slightly better. (*)
- SOAP and XML-RPC APIs expose libxml types (*)
Outstanding bugs/issues
- Bugs
gnomebug:266516 - SoupUri shouldn't decode URI parts (*)
- gnomebug:334021 - client certificate support
gnomebug:347108 - improved SoupServer digest auth support (*)
- gnomebug:396081 - Icecast support
- gnomebug:471380 - improved client digest auth support
gnomebug:491639 - Avahi-using SoupServer
gnomebug:491653, gnomebug:493686, gnomebug:494128 - misc minor SoupServer fixups (*)
- Improve docs
- avoid g_thread_init() requirement if not using threads?
- consolidate handlers and signals (*)
- add getters for object fields to make it clearer what's public
SoupOwnership is weird. Refcounted buffers are better. (*)
- tbf's suggestions
basically "SoupServer needs more love"
- Zombie's suggestions
- Streaming improvements
- Sync pull API
- Allow caller-provided buffers to avoid extra copies
- cancellability of individual reads, not just whole message
- depending unconditionally on libgconf would be bad
msg->status vs msg->status_code is confusing (*)
- Streaming improvements
- Misc mailing list suggestions
- Turn authenticate signal into callback (*)
- XML-RPC server support
../ToDo, etc
100 Continue processing is currently useless
SoupMessageFilter sucks in various ways and would work better as a SoupSession signal (*)
HTTP I/O is currently split oddly between SoupSession, SoupConnection, and SoupMessage in ways that make the code confusing and buggy
- NTLM auth is implemented in ways that make the code confusing and buggy
- A "soup_simple_..." API would be nice
- Handle non-GET redirects properly. (*)
- XML-RPC API is not fabulous (*)
NSS / FedoraCryptoConsolidation
Unless this goes together with GnomeKeyring/Cryptoki, this requires us to keep our own NSS databases
- No obvious way to API-compatibly abstract between NSS and GnuTLS. (*)
To Actually Do
(To do...)