Discussion:
FYI: HTTP pipelining in Sigularity
Diva Canto
2014-10-21 15:25:00 UTC
Permalink
FYI, a conversation with Aleric:

[08:19] <Aleric> diva, nebadon, Melanie_T: a heads-up: Singularity will
detect support for HTTP pipelining by looking at a "Keep-Alive:" reply
from the server for a texture or mesh capability. Currently OpenSim does
not support http pipelining (and doesn't return Keep-Alive). However,
returning Keep-Alive only means that the same connection can be re-used
after the previous one finished and is not a guarantee for http pipelining.
[08:20] <Aleric> If Opensim in the future will start to support
connection re-use, but NOT http pipelining - then we need to know this
ahead of time (a lot).. So we can change the heuristics :/.
[08:20] <Aleric> Best would be to immediately support pipelining too of
course :p.
[08:20] <diva> ok. could you send a message to opensim-dev please? or do
you want me too?
[08:21] <Aleric> It's unfortunately a bad thing to turn on libcurls http
pipelining when the server does not support it (download speeds would
drop by a factor of 4 or more)
[08:21] <Aleric> If you can, then please - I don't think I'm even on
that list.
[08:21] <diva> ok, let me send it so that others can be aware. Is this
something that's already on your alphas?
[08:22] <Aleric> no
[08:22] <Aleric> I just wrote the heuristics :/ ... if anyone has a
better way to detect it then let me know :)
[08:23] <Aleric> + // Detect support for HTTP pipelining.
[08:23] <Aleric> + //
[08:23] <Aleric> + // This is unfortunately heuristic.
[08:23] <Aleric> + // We turn on HTTP pipelining if a server replies
with a 'Keep-Alive:' header after we sent a HEAD or GET request
[08:23] <Aleric> + // to a texture or mesh capability. Otherwise the
services stays what it was (by default no HTTP pipelining).
[08:23] <Aleric> + if (isHeadOrGet() && (mCapabilityType == cap_texture
|| mCapabilityType == cap_mesh) && key == "keep-alive")
[08:23] <Aleric> + {
[08:23] <Aleric> + PerService_wat per_service_w(*mPerServicePtr);
[08:23] <Aleric> + per_service_w->set_http_pipeline(true);
[08:23] <Aleric> + }

Loading...