Commit Graph

3895 Commits

Author SHA1 Message Date
Aleric Inglewood
7dfef31469 Possible upload timeout improvement.
When uploading finishes, but is not detected, the timeout should be for
"reply delay", the time that the server takes before it replies, and not
CurlTimeoutLowSpeedTime. This patch adds code that takes this failure
into account (which happened only ONCE for me on Metropolis while flying
around and using trickle (not sure if that is relevant), so it's not
that likely to improvement anything in practise. Note that it is
detected by an assertion when it happens, so that we can safely assume
it normally never happened on SL).

* Generalized PUT / POST configuration by adding
  CurlEasyRequest::setPut, which now also supports keep-alive (which
  still isn't used).
* Upload content length is now stored in CurlEasyRequest::mContentLength
* CurlEasyRequest::has_stalled() now return false if it was possbile
  that the 'upload finished' detect failed AND calls upload_finished()
  itself in that case, so it is no longer 'const'.
* If low speed is detect exactly when the last bytes are being attempted
  to be sent (unlikely scenario), then the upload gets 4 more seconds
  after which is switches to CurlTimeoutReplyDelay.
* Added EDoesAuthentication and EAllowCompressedReply to replace
  booleans, for readability and type-safety, as did EKeepAlive. Note
  that this change inverts the meaning of the compression related parameter.
* Unrelated: removed an unnecessary #include "llurlrequest.h" from
  llxmlrpcresponder.h
2013-03-10 16:43:15 +01:00
Aleric Inglewood
96d302aa42 Be more verbose about internal (curl / timeout) errors.
Translates the CURLE_WRITE_ERROR into what it really means: that the low
speed check failed.
2013-03-09 05:26:52 +01:00
Aleric Inglewood
df93ebb8f6 Bug fix for AIStateMachine.
When a state machine is aborted after it switched to bs_initialize,
but before it executed initialize_impl(), then we should set the
state back to bs_reset and abort cleanly by switching to bs_killed
and then handle that. Before the state was set to bs_abort, resulting
in calling abort_impl(), finish_impl(), the call back and unref()
for an not initialized state machine! (detected by the assert that
makes sure that ref()/unref() are called in balance).
2013-03-09 04:20:54 +01:00
Aleric Inglewood
50caf98cd6 Dont enter AIStateMachine::multiplex recursively. 2013-03-08 16:58:25 +01:00
Aleric Inglewood
933ca23348 Bug fix for ASSERT(previewp->mFormattedUpToDate || ret == SIZE_TOO_LARGE || ret == ENCODING_FAILED) 2013-03-08 03:37:00 +01:00
Aleric Inglewood
e8ef74156a Added print_statemachine_diagnostics
The responder name is now cached in LLURLRequest
(ResponderBase::getName() must return a string literal).
The run time (in the main thread) per state machine is now accumulated
in AIStateMachine (instead of AIEngine::QueueElement).
When AIStateMachine::mainloop runs longer than StateMachineMaxTime
then a warning is printed that now includes the time spent in the
slowest state machine (that frame) and (if it is a LLURLRequest)
what the corresponding responder is. Also the total accumulated run
time of that state machine is printed.

From this is can be concluded that the only responder currently
regularly holding up the main thread is LLMeshLODResponder (mostly 30 to
100 ms, but with spikes in the 1 to 2 second range some times).
2013-03-08 01:50:02 +01:00
Aleric Inglewood
e3f4022ffa Merge remote-tracking branch 'singu/master'
Conflicts:
	indra/newview/llvoavatar.cpp

Bug fix is no longer needed.
2013-03-07 16:53:15 +01:00
Aleric Inglewood
dd42577a2a Fix crashlogger wrt AIEngine. 2013-03-07 13:50:36 +01:00
Aleric Inglewood
f52e055414 Merge branch 'master' into curlthreading4 2013-03-07 13:49:42 +01:00
Aleric Inglewood
65d750b190 Add CPU cycles to AIStateMachine in the crashlogger
Also removes unused Debug Setting CurlMaximumNumberOfHandles.
The maximum number of handles is limitted by
CurlMaxTotalConcurrentConnections.
2013-03-07 13:44:40 +01:00
Aleric Inglewood
4e0269b3d0 Bug fix in debug code. 2013-03-07 05:23:23 +01:00
Aleric Inglewood
58c07f8054 Don't return from abort() until the current execution, if any, finished. 2013-03-07 04:20:17 +01:00
Aleric Inglewood
380eec10fb Initialize mDebugRefCalled on restart. 2013-03-07 02:23:23 +01:00
Aleric Inglewood
b9b5f13624 Run HTTPGetResponder in any thread.
This fixes a bug where unref() was called when a state machine was
aborted before it reached bs_initialized. Debug code was added to detect
errors related to that.

In order to run HTTPGetResponder in any thread, I needed direct access
to LLHTTPClient::request, so I had to move that to the header file,
and therefore had to move ERequestAction from LLURLRequest to
LLHTTPClient to avoid include problems.

With this, textures are fetched with no latency: call to
LLHTTPClient::request runs all the way till the state machine is idle
(AICurlEasyRequestStateMachine_waitAdded). There is small delay till the
curl thread wakes up, which then processes the request and opens the url
etc. When the transaction is finished, it calls
AIStateMachine::advance_state(AICurlEasyRequestStateMachine_removed_after_finished)
which subsequently doesn't return until the state machine is completely
finished (bs_killed). The LLURLRequest isn't deleted yet at that point
because the AITimer of the LLURLRequest runs in the main thread: it is
aborted, but only the next time the main thread state engines run that
is deleted and the timer keeps an LLPointer to it's parent, the
LLURLRequest, so only then the LLURLRequest object is destructed. This
however has nothing to do with the texture-bandwidth loop.
2013-03-07 01:52:21 +01:00
Aleric Inglewood
4cd7dec92b Merge branch 'master' into curlthreading4
Conflicts:
	indra/aistatemachine/aistatemachine.cpp
	indra/aistatemachine/aistatemachine.h
	indra/llmessage/aicurleasyrequeststatemachine.cpp
2013-03-06 03:34:05 +01:00
Aleric Inglewood
c4dceaf3e9 Rewrite of AIStateMachine, version 2. 2013-03-06 03:26:43 +01:00
Aleric Inglewood
d1d09d7c18 Bail out instead of crash when parseTEMessage fails. 2013-03-05 03:51:45 +01:00
Aleric Inglewood
186c3ef88a Add support for xdg-open. 2013-02-27 17:22:10 +01:00
Siana Gearz
c9ab38d449 Stream frequency change support and new anti-starvation strategy 2013-02-26 23:13:39 +01:00
Siana Gearz
6ee8cc5798 Unbreak skinning on low end hardware 2013-02-26 20:47:43 +01:00
Siana Gearz
f3b7102034 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-02-26 00:23:35 +01:00
Siana Gearz
13e0bc2742 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/lldrawable.cpp
	indra/newview/llviewerwindow.cpp
2013-02-26 00:20:26 +01:00
Siana Gearz
a4b49e3fc2 Random stab at object updates. Tell me if it breaks anything. 2013-02-26 00:00:45 +01:00
Siana Gearz
e2659b801a Dirty fix object import 2013-02-25 23:58:43 +01:00
Shyotl
d27b329afb Minor bit of cleanup. Also now using glTexGenf instead of glTexGeni for fixed-function water texcoords. 2013-02-25 13:02:22 -06:00
Shyotl
e187e642c0 Restored some RLVa shownames logic that was clobbered a while ago. 2013-02-25 13:00:07 -06:00
Shyotl
fd21197d2a Wedged high-res non-tiled deferred snapshot logic into LLViewerWindow::rawRawSnapshot 2013-02-25 12:59:17 -06:00
Shyotl
34cf0329ab Crahfix for avatars, as destruction can be delayed via llpointer refs, meaning the region the av was in could be long gone before the avs destructor is actually called. Calling logPendingPhases in a more reasonable place (markDead). 2013-02-25 12:55:50 -06:00
Shyotl
94a0040ddb Sunshine catchup. 2013-02-25 12:53:18 -06:00
Aleric Inglewood
13e032fb04 Make AICurlThread::wakeup_thread thread-safe. 2013-02-23 23:29:43 +01:00
Aleric Inglewood
803e92020b Renamed AICurlThread::mWakeUpMutex --> AICurlThread::mWakeUpFlagMutex 2013-02-23 23:23:48 +01:00
Aleric Inglewood
b6cbed838f Assertion bug fix for libcwd with dc::curl on and curlio off. 2013-02-23 21:37:07 +01:00
Aleric Inglewood
19314b6686 Removed two unnecessary states from AICurlEasyRequestStateMachine
Removed AICurlEasyRequestStateMachine_added and
AICurlEasyRequestStateMachine_finished because the state machine is not
taking any action there anyway, and those states might be skipped all
together even, so they make no sense / shouldn't exist.
2013-02-23 21:33:37 +01:00
Aleric Inglewood
5d329d9e55 Fix initialization list order.
Also fixes a Dout line and initializes mState to 0 so
that if ever set_state would be called first from
a non-main thread then it will be larger (probably
not needed currently).
2013-02-23 21:13:26 +01:00
Aleric Inglewood
4851cc174e Revert "Work in progress"
This reverts commit ef35aa7954
because it contained too much wrong things that I won't be
using. I'll re-commit stuff from it after that that I do
want to keep.
2013-02-23 20:00:13 +01:00
Aleric Inglewood
78bb94eb42 Bug fix: remove remainder of test code 2013-02-23 19:36:18 +01:00
Latif Khalifa
b2b24cee7a Compile fix 2013-02-21 01:11:03 +01:00
Aleric Inglewood
ef35aa7954 Work in progress
This work extends AIStateMachine to run multiplex() in the thread
that calls run(), cont() or set_state(). Note that all three
eventually call locked_cont(), so thats where multiplex() is called
from. Calling multiplex() means "running the state machine", as in
"calling multiplex_impl".

Currently only LLURLRequest uses this feature, and then only
for the HTTPGetResponder, and well only for the initializing,
start up and normal finish states.

A current/remaining problem is that we run into a situation where
the curl thread runs a statemachine to it's finish and kills it,
while the main thread is also 'running' it and tries to call
multiplex while the statemachine isn't running anymore.
2013-02-20 23:29:38 +01:00
Siana Gearz
8f5c58ff3c Merge branch 'Canon' of git://github.com/Lirusaito/SingularityViewer 2013-02-20 21:21:15 +01:00
Siana Gearz
408811c319 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer 2013-02-20 21:20:22 +01:00
Siana Gearz
1555d70230 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-02-20 21:19:39 +01:00
Lirusaito
b9da20f0d6 Added new controls to Network Preferences
Adds Texture Bandwidth slider
Adds Use HTTP for Inventory and Textures checkboxes.
Also, swaps out the bandwidth slider for a new Z Offset slider on quick settings, as bandwidth sliders should be set and forget, there is no modern need for them to be changed so frequently.

[Note to translators: please examine the network preferences after this update, controls have been moved and may now overlap.]
2013-02-20 06:16:53 -05:00
Shyotl
041481db89 Snap grid was pulling colors from wrong control group. 2013-02-19 22:33:31 -06:00
Shyotl
beeef8d5b9 Fix crash if periodic av metric update happens after disconnect. 2013-02-19 21:54:35 -06:00
Shyotl
8d09539fcc Added a couple missing entries to settings.xml 2013-02-19 21:52:13 -06:00
Shyotl
07bc115b1c Stars had nonsensical and broken face winding. 2013-02-19 20:58:13 -06:00
Siana Gearz
00cb7a0e51 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer 2013-02-19 21:12:14 +01:00
Siana Gearz
657484fedc Merge branch 'Canon' of git://github.com/Lirusaito/SingularityViewer 2013-02-19 21:10:40 +01:00
Siana Gearz
3b86a39293 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-02-19 21:10:06 +01:00
Lirusaito
49eb78db27 Added the ever-requested marketplace tab to search floater (When on SL Grids, only) 2013-02-19 08:40:12 -05:00