summaryrefslogtreecommitdiff
path: root/TODO
blob: 8979156765ad1e7f2eb3a4ac63b152a2577da0c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Known bugs/warts to fix
-----------------------

* Needs to be possible to register new auth types with soup-auth.c

* SoupAuthDigest/SoupServerAuthDigest don't support qop="auth-int"

* We don't handle trailers in chunked responses

* Expect: 100-continue processing doesn't currently abort sending
  the body if it gets back a non-informational status code


HTTP Features
-------------

* Handle gzip Content-Encoding

* Handle cookies (RFC 2109) via a SoupCookieJar message filter
	* RFC 2965 supposedly obsoletes 2109, but I don't think
	  anyone uses it

* Handle caching, also via SoupMessageFilter
	* rcd has some of the logic for this already

* NTLM Proxy-Authentication support, GSS-Negotiate support

* Pipelining


SOAP/XML-RPC Features
---------------------

* Bring back WSDL compiler from old soup module?

* The current SOAP/XMLRPC API doesn't really make life a whole lot
  easier for the user... You have to marshall the data in exactly the
  right order anyway, so you might as well just be using
  g_string_append...


Misc Features
-------------

* Bring back SOCKS support?

* Bring back CGI server support? (Split SoupServer into SoupServerTCP
  and SoupServerCGI)

* Use gconf for config data
	* automatically pick up GNOME-wide proxy settings, including
	  ignore_hosts, etc


General/API stuff
-----------------

* Thread safety
	* This is mostly done, but need to figure out what other
	  things need to be thread-safe, and document which ones
	  aren't.

* Documentation (API, tutorial)
	* gtk-doc is not currently picking up all of the objects.
	  This probably has something to do with the fact that
	  some of the typdefs are in soup-types.h.

* User-Agent handling: caller should specify a User-Agent string to
  SoupSession, and soup should automatically append libsoup/#.## to
  that. (Likewise for Server/Via headers.)

* File-system-like asynchronous mode (eg, you write the request / read
  the response in as many pieces as you want. If you try to read or
  write more than you can, the EAGAIN is returned all they way to the
  caller, who must call the relevant soup function again later to
  continue reading or writing).
	   * needed if we wanted to do a soup-based gnome-vfs http
             backend

* Explicit support for Range header

* Merge SoupAuth and SoupServerAuth

* Merge SoupMessage and SoupServerMessage (allow chunked requests)

* Improve SoupServer handlers to allow for expect-continue handling,
  reading chunked requests a chunk at a time, etc.
	* Use SoupMessageFilter
	* Improving SoupServer's API will probably result in
	  completely breaking it.

* SoupProxy (based on simple-proxy, but better), which connects a
  SoupServer to a SoupSession with SoupMessageFilters in between.
	* Make it possible to implement CONNECT on the server side (by
	  having a way to steal the socket from the SoupServer).

* Add date-parsing/generating routines (all HTTP-specified formats)

* Special handling on server side for HEAD (don't send response.body).

* Simple higher-level API (a la E2kContext)
	* the Connector stuff has a lot of Exchange-specific
	  assumptions and exceptions. Might not be possible to
	  migrate Connector to a generic API

* URI encoding bugs
	* query component at least, maybe others must be stored
	  fully-escaped, because only the endpoints know which
	  chars are and aren't reserved
	* When fixing this, also consider:
		* Merging E2kUri with SoupUri
		* application/x-www-form-urlencoded, which encodes
		  space as "+" rather than "%20"
		* SoupUri doesn't currently allow "*" as a URI


Testing
-------

* More regression tests

* Add apache config files to tests/ so that apache can be run locally
  to run regression tests against


Conformance
-----------

* Check handling of unknown HTTP versions [RFC ????]

* Don't do HTTP/1.1-specific behavior on HTTP/1.0 messages

* Preserve header ordering (on send and receive). Treat
  "Foo:bar\r\nFoo:baz" the same as "Foo: bar, baz"

* Enforce rules about what requests/responses MUST/MUST NOT have a
  body

* Don't automatically process redirects on non-GET/HEAD requests

* Properly mangle HTTP/1.0 requests containing Connection headers
  [14.10]

* Automatically add Date header in SoupServer

* MUST observe DNS TTL information

* [get SHOULDs and SHOULD NOTs in]