summaryrefslogtreecommitdiff
path: root/indra/newview/lleventpoll.h
diff options
context:
space:
mode:
authorAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-09-17 18:24:35 +0300
committerGitHub <noreply@github.com>2025-09-17 18:24:35 +0300
commit42b09b236bae797303af94fc003466ca649259a2 (patch)
tree6c7195f4aebe5e038a7835de57234150c00c8931 /indra/newview/lleventpoll.h
parente33b5c5e6c8db1759e34db43ea9defc5455ab6c7 (diff)
#4685 EventQueueGet shouldn't use llcorehttp's backoff-retry logic
- Event poll already has own backoff logic with 10 retries, using llcorehttp's one on top makes no sense. - Better logging coverage - Better in-code documentation - Add timing-based error detection
Diffstat (limited to 'indra/newview/lleventpoll.h')
-rw-r--r--indra/newview/lleventpoll.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/indra/newview/lleventpoll.h b/indra/newview/lleventpoll.h
index bb407b3799..ea186aa803 100644
--- a/indra/newview/lleventpoll.h
+++ b/indra/newview/lleventpoll.h
@@ -40,7 +40,30 @@ namespace Details
class LLEventPoll
- ///< implements the viewer side of server-to-viewer pushed events.
+ ///< Implements the viewer side of server-to-viewer pushed events.
+ ///
+ /// This class implements the sole consumer of the EventQueueGet capability
+ /// and delivers data, including llsd-encoded llmessage payloads, from
+ /// simulator to viewer.
+ ///
+ /// https://wiki.secondlife.com/wiki/EventQueueGet
+ /// The wiki page is neither complete nor entirely correct. Request timeouts
+ /// became the de facto method of returning an empty event set to the viewer.
+ /// But the timeout behavior was never defined. It was simply whatever
+ /// behavior a given grid implementation implemented.
+ ///
+ /// In SL's case, the path may include reverse proxies, http caches, http and
+ /// socks proxies, transparent hijacking, and other horrors. A pitfall for
+ /// implementors.
+ ///
+ /// Current definition of a timeout is any of :
+ /// - libcurl easy 28 status code
+ /// - Linden 499 special http status code
+ /// - RFC - standard 502 - 504 http status codes
+ /// If requests are failing too quickly with the above errors, they are treated
+ /// as actual errors and not an empty payload. These will count towards a final
+ /// error declaration and can lead to disconnection from a simulator or the
+ /// entire grid.
{
public:
LLEventPoll(const std::string& pollURL, const LLHost& sender);