Using equal directly causes problem when there is other stuff in the expect: header. This was causing trouble in AllegroGraph. The code now uses a regexp to look for 100-continue.
Support server gzip like compressing body before sending to client. Support client gzip like uncompressing body as sent from server. Are there user visible changes in this commit? yes Is bootstrapping needed? no Are tests included for new features? yes Tests run: t-aserve <release-note> rfe10416 - enable compression aserve can now compress responses on the fly if request. aserve's client code can request a compressed transfer and can uncompress the result. See documentation for API changes. Subsequent releases will increase aserve's capability to cover static file transfers. </release-note> <documentation> rfe10416 - enable compression (do-http-request &key compress) takes a :compress argument (default nil) which if true causes the request to the server to include an 'Accept-Encoding: gzip' header line. The server then may choose to return the result compressed to the client which will then uncompress it before returning the body from do-http-request. (start &key compress) The net.aserve:start function takes a :compress argument. The value of this argument is is stored in the enable-compression slot of the wserver object. The default value of this argument is true if the deflate module was successfully loaded. The enable-compression slot of the wserver object is a server wide control on whether the server will compress a result before sending it back. If this slot has the value nil then under no cicumstance will the server compress a value before returning it. If the value is true then the server may or may not compress a result before sending it to the client. (publish-xxx &key compress ) Each entity has a compress slot as well, set by the compress argument of the various publish functions. The default for the :compress argument for all publish functions is true. Furthermore the compute-strategy generic function that determines how a result will be returned is the function that decides if compression will be done. At the present time (with changes planned for the future) the only entity that can be compressed is the computed entity. In order for compression to occur a number of things must be true 1. the enable-compression slot of the wserver object must be true 2. the compress slot of the entity must be true 3. the entity must be a computed entity (for now) 4. the client must state that it can accept gzip content-encoding compression will work with any combination of chunking and/or ssl. </documentation> Change-Id: I683ff58a12447b8614263cafce5990ee491ed387
http/1.1 clients and servers prefer to send and receive data using chunking. This change allows Aserve to support chunking in the client and server if the connection is ssl Are there user visible changes in this commit? yes Is bootstrapping needed? no Are tests included for new features? no, existing tests test new features Tests run: t-aserve <release-note> rfe8891: support chunking with ssl In the past AllegoServe disabled chunking for an ssl server and told users to use the http/1.0 protocol for clients when ssl was being used. Now those restrictions are gone. The default for the server will be to use chunking in all cases and clients can specify http/1.1 for requests over ssl. </release-note> <documentation> just a note to the documentation editor to look for references to chunking and ssl in the manual and remove the text. </documentation> Change-Id: Id2c2b2e34c1e49c8bfc14f0eb31122d21afa41cc
A few code snippets had been added that did not conform to the coding standard promised in the header. These were updated. No functional changes were made. Are there user visible changes in this commit? yes/no Is bootstrapping needed? no Are tests included for new features? no new features Tests run: t-aserve Change-Id: Idddb093e0b8d94fca87170698992a4f18b641508
Properly handle :connect method requests in do-http-request. CONNECT requests differ slightly from all other request types in that they MUST be passed through a proxy, and the value passed on the Request-Line of the message is an Authority (host:port) instead of a valid URI. changes to keep-alive and skip-body semantics in do-http-request. Other changes in make-client-http-request. Are there user visible changes in this commit? no Are tests included for new features? no new features Tests run: none Change-Id: I89f5157782a573b5e96e9281fd7b49fa24e47490
Version bumped by layer.
aserve version: 1.2.70 The HTTP spec specifies that a client who does not want to send its body before the server has confirmed that it is prepared to read it can send an Expect: 100-continue header. The server then sends a response with a 100 status code, after which the client sends its body, and things continue as normal. We have two concrete uses for this: 1) Curl sends such a header before sending any big body. It will then wait for a while before sending its body anyway. This means that, by default, curl works with our server, but is much slower than it has to be for big requests. We have a work-around of specifying -H "Expect:", but it would be better if things just worked. 2) The proxy used between the AG front and backend can't reliably use keep-alive when forwarding PUT or POST requests without this feature. If it forwards a request body, and the socket it was using turned out to be stale, it no longer has the body, and the request fails. It can send Expect: 100-continue as a way to test whether the server is still listening on the socket it has, before actually forwarding the body. Change-Id: Ibd6c5b3c54883aac0681a577a02cf3d9a750a621
This centralizes logmess and brief-logmess to both send their message through a log-for-wserver method, which is specialized on the default wserver class. This allows client software to log in a different way by using its own wserver class. now AllegroServe version 1.2.69 Change-Id: I9cd37da6f693211e44e45fd1119056f3d6e44812
…2.68 see bug19575 Change-Id: Ica3f7882e4b3e76c722262d61e3881ac71605425
Calls to do-http-request can now specify :keep-alive t and do-http-request will return the socket connected to the server if the server agrees with the request. That socket connection can be used in subsequent calls to do-http-request. Are there user visible changes in this commit? yes Is bootstrapping needed? no Are tests included for new features? yes (in t-aserve.cl) Tests run: aserve/test/t-aserve <release-note> rfe9811 - the :keep-alive arguement to do-http-request will now cause do-http-request to return a fifth value: a socket connected to the server. That fifth value will be nil if the server refuses to keep the connection with the client open. Even if the server agrees to keeps the connection alive it will close it after some period of inactivity. do-http-request takes a :connection argument which is how the socket returned by do-http-request should be passed to the next do-http-request call. It is ok if the value of the :connection argument is nil or closed socket. do-http-request will notice that the socket is unusable and will create a new one. </release-note> <documentation> rfe9811 has the documention changes </documentation> <documentation> Change-Id: Ife1f8a9b7f0a4ba3377750c08534251e7a62aad6
… close is sent (rather than only when connection: keep-alive is sent)
… turned on