Commit Graph

439 Commits

Author SHA1 Message Date
Latif Khalifa
c87f7b0576 Breakpad3: WIP, minidump files created
TODO: re-work sending crash logs
get rid of standalone loggers
2013-10-01 13:43:45 +02:00
Aleric Inglewood
723f4963e0 Do not count long poll connections against CurlConcurrentConnectionsPerService
This is necessary for opensim mega regions that can have up to 16 long
poll connections for a single service, while upping the maximum number
of connections per service just for that is clearly nonsense.

I also changed that long poll connections do not "use" the "Other"
capability type (which shows that the debug info in the HTTP debug
console for the Other capability type turns grey when it only has event
poll connections). As a result additional connections become available
for textures, mesh and the inventory (the other capability types) on
opensim, which has all types on the same service, because now Other
does no longer constantly reserves a full share of the available
connections. This makes the actual number of connections used for
textures and mesh a lot more like it is on Second Life.
2013-09-30 17:39:17 +02:00
Latif Khalifa
1e7f984ce6 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-29 01:34:00 +02:00
Aleric Inglewood
1c0f87d82f Let curl follow redirects by default.
Turns out that the only responders that want to get the redirect
status codes themselves are the ones that already had a
redirect_status_ok() exception.
2013-09-28 20:41:10 +02:00
Inusaito Sayori
af36d63975 Remove duplicate entries from message_prehash.h 2013-09-28 11:34:57 -04:00
Inusaito Sayori
4725db2d2f Merge branch 'VarRegion' of https://github.com/Lirusaito/SingularityViewer into aurora-sim
Merged cleanly:
	indra/llkeyframewalkmotion.cpp - 36e6946c96 - worked around a bug in Aurora walking motion
	indra/llrender/llimagegl.cpp - fa8e1f033b - An llerrs here becomes an llwarns, to avoid bothering the user with non power of two dimensioned images
	indra/newview/llmanip.cpp, indra/newview/llmanipscale.cpp - "Changed hardcoded 256 constants and such to width functions" - a50f0008b2
	indra/newview/llpatchvertexarray.cpp - fa8e1f033b - Support patches of non power of two width
	indra/newview/llworldmap.h - conflict

Conflicts:
	indra/llmessage/patch_code.cpp - My version cleaned up a bit of code duplication, so this was applied, within the new tags
	indra/llmessage/patch_code.h - b_large_patch in decode_patch_header defaults to false, indra/newview/llcloud.cpp patch removed.
	indra/llmessage/patch_dct.h - false positive
	indra/newview/llagent.cpp - false positive
	indra/newview/llfloaterregioninfo.cpp - nonsl wacky textures support meets the refactor.
	indra/newview/llfloaterworldmap.cpp - false positive
	indra/newview/llglsandbox.cpp - false positive
	indra/newview/llnetmap.cpp - small changes for type consistency brought into FS' patch, nothing important; also adds change to LLNetMap:draw removing getRegionWidthInMeters to keep using the constant REGION_WIDTH
	indra/newview/llpanelobject.cpp - Get the region width of the object we're editing for maximum pasted x/y coords
	indra/newview/llstartup.cpp - [Fixes old issues] My old patch did not fully use first_sim_size_x here, this has been fixed.  The unused first_sim_size_y has been removed.
	indra/newview/llsurface.cpp - rebuildWater isn't used, removed for now.  Styling conflicts otherwise.
	indra/newview/llsurfacepatch.cpp - remove FS patch that comments out code that isn't even in the modern source; cleaned up a mess of tags with more clear explanation, perhaps it can be expanded upon though.  Some styling conflicts.
	indra/newview/llviewermessage.cpp - Fix the problem? setRegionWidth by number.
	indra/newview/llviewerobject.cpp - false positive
	indra/newview/llviewerparcelmgr.cpp - just styling conflicts
	indra/newview/llviewerparcelmgr.h - false positive
	indra/newview/llviewerparceloverlay.cpp - false positive
	indra/newview/llviewerparceloverlay.h - false positive
	indra/newview/llviewerregion.cpp - cleaned up LLViewerRegion::getCompositionXY patches, they're more in the way than they're worth; removed DispatchOpenRegionSettings capability mention for now, it's not related to variable regions.  Also remove rebuildWater, it's not used right now.
	indra/newview/llvowater.cpp - false positive
	indra/newview/llwind.cpp - remove decode_patch_header patches for false, since we have a default; otherwise false positive.
	indra/newview/llworld.*
		- [Fixes old issues] Remove setRegionWidth by LLMessageSystem as the messages used are not always the same, the by number one remains of course.
		- Retained separation of connecting neighbors through the old method when the width is 256
		- updateLimits() would never have been merged in, we have an entirely different grid manager, therefore it's removed.
		- Fix the stupidity passed on over the years wherein a static constant variable would hold the same value as the first call to setLandFarClip..
	indra/newview/llworldmap.cpp - 36e6946c96 Aurora map workaround stuffs, parts removed; rework of LLWorldMap::simInfoFromHandle
	indra/newview/llworldmap.h - Cleaned up organization, avoid making members public, and fixed tagging
2013-09-27 09:51:39 -04:00
Latif Khalifa
ad8ea07a7a Aurora var region support
Firestorm patch by Cinders
Adopted from Angstrom viewer with assistance of nhede Core
and Revolution Smythe.
2013-09-27 03:14:51 +02:00
Latif Khalifa
6c1ea557b5 Harden agains network packet overruns
Patch by NickyD from Firestorm
2013-09-26 04:09:01 +02:00
Aleric Inglewood
e3939c3632 Avoid long viewer freezes when region doesn't have reverse DNS.
Some opensim servers might not have a reverse DNS, which causes
a stall of up to 5 seconds for each call. This means that
every time you up the parcel music stream (or any other media)
the viewer would freeze six times 5 seconds.. 30 seconds.

With this patch it only freeze once ;) (when you enter a region).
It already did that before (too), but after that opening the
parcel media doesn't freeze the viewer at all anymore.
2013-09-23 01:41:11 +02:00
Aleric Inglewood
12d3873aa7 Crash fix for empty media URL.
Apparently LLViewerMediaImpl::navigateInternal could be called with
an empty url. That lead to a curl request with an empty url, which
failed because that leads to an empty 'service' string, which is
not allowed.

Patched the code to ignore empty media urls and hardened AICurl
to deal with any remaining cases.
2013-09-22 23:25:40 +02:00
Inusaito Sayori
04c78a1d8a Merge in Storm-1838 2013-07-31 15:49:34 -04:00
Lirusaito
863c35710f Feature Request: Add an option to keep last name Resident.
Should work to solve Issue 517: Legacy log handling of "Resident" name
2013-07-19 07:16:51 -04:00
Latif Khalifa
a74b8ddc6b Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-07-19 01:05:30 +02:00
Aleric Inglewood
d21b3cb19b Enforce a 60s reply delay for LLEventPollResponder 2013-07-19 00:47:56 +02:00
Latif Khalifa
085947a557 Merge remote-tracking branch 'shyotl/master' 2013-07-14 02:38:13 +02:00
Shyotl
e4da971026 Hooked up underlying material fetching mechanism and added material-related structures. Not integrated into rendering pipeline. 2013-07-12 13:56:31 -05:00
Lirusaito
dfb4370a56 Remove iamHereLogin remnants overlooked in 62f03bc489 2013-07-10 08:12:13 -04:00
Aleric Inglewood
6103cb23e6 Allow people to login again. 2013-07-08 17:25:06 +02:00
Aleric Inglewood
4b0b83797c CURLIO (and libcwd): add number of established connections to http console.
I need to parse the debug output of libcurl for this, and choose
to not do that for a Release build - at which point it makes little
sense to even do it for a Debug build, since also the Alpha release
are 'Release'. Even though it would probably have no impact on FPS,
there would be like two persons looking at that number and understanding
it.
2013-07-04 00:02:28 +02:00
Aleric Inglewood
e0c66138c7 Increase connect timeouts for capabilities that demand short transfer times.
The automatic adjustment sets the connect time to 3 seconds, which might
be a bit on the short side sometimes.

Also remove the HACK and use CurlTimeoutConnect again.
The default is still 10 seconds, but is overridden to be 30 for mesh
now (which needs a reconnect for every mesh, since LL does not support
connection reuse for mesh). Note that I never saw any successful
connect under 8 seconds while I had the connect time out at 30:
Over 8 seconds is a sure fail (except for mesh, where in rare cases
there were connect times of 15 seconds (never 14 or 16).

On quiet servers, the connect time is normally sub-second. This is
the bulk of connections for my own SL use.
2013-07-04 00:02:28 +02:00
Aleric Inglewood
59716ba86b Added progress meter in HTTP debug console. 2013-07-02 02:12:34 +02:00
Aleric Inglewood
0353498b9c Set CURLOPT_FORBID_REUSE for XMLRPCResponder
XMLRPCResponder is used to login, which is a HTTP 1.0 server
that doesn't support reuse of connections.
It's cleaner to close connections from our side too.

This changes,
0x7fffdcf93700   CURLIO      0x7fffcd86db40   * Connection #0 to host login.agni.lindenlab.com left intact
into
0x7fffdcf93700   CURLIO      0x7fffcd8b0bd0   * Closing connection #0
2013-07-01 15:44:47 +02:00
Aleric Inglewood
982921e495 Add AICurlTimer - timer support for the curl thread.
Not used yet. Deliberately not threadsafe.
Usage the same as AIFrameTimer, upon which is was based.
2013-07-01 15:41:44 +02:00
Latif Khalifa
321a7ffbd4 Merge remote-tracking branch 'aleric/master' 2013-06-28 00:12:57 +02:00
Aleric Inglewood
f74ad5eafa Fix global connection threshold not to count non-approved queued request as being in the pipeline.
This make more sense when comparing the threshold against 2 times the
maximum allowed total connections.

As a result, textures won't stall when there are around 128 mesh
requests queued.
2013-06-28 00:09:10 +02:00
Aleric Inglewood
73ea6eb80e Rewrite of AIPerService::add_queued_to
This should fix any 'stalls' with zero added requests for mesh.
2013-06-28 00:09:09 +02:00
Aleric Inglewood
32681403c6 Fixed a typo: mConcurrectConnections -> mConcurrentConnections
That's what you get for only copy&pasting variable names.
2013-06-26 13:23:10 +02:00
Lirusaito
306df58793 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer into VoiceUpdate 2013-06-24 14:22:36 -04:00
Aleric Inglewood
1d04b4af24 Actually use CapabilityType::mConcurrentConnections for Approvements. 2013-06-24 18:57:42 +02:00
Aleric Inglewood
719f57e00d Fix documentation at top of AIPerService::approveHTTPRequestFor 2013-06-24 18:37:57 +02:00
Aleric Inglewood
6c36b6efa0 Add AIPerService::mCTInUse and AIPerService::mUsedCT
Keep track of which capability types are used and in use
at the moment for each service.

Update the http debug console to only show services
that have at least one capability type marked as used (this resets upon
restart of the debug console) and show previously used but currently
unused capability types in grey.

Update CapabilityType::mConcurrentConnections based on usage of the
capability type (CT): Each currently in-use CT gets an (approximate)
equal portion of the available number of connections, currently
unused CTs get 1 connection for future use, so that requests can and
will be added to them if they occur. If a CT is currently not in use
but was used before then it's connection (but at most one connection)
is kept in reserve. For example, if there are 8 connections available
and a service served textures and mesh in the past, but currently
there are no texture downloads, then mesh get at most 7 connections,
so that at all times there is a connection available for textures.
When one texture is added, both get 4 connections.
2013-06-24 16:13:00 +02:00
Aleric Inglewood
af9018f35f Add AIPerService::CapabilityType::mConcurrectConnections
Prepares for throttling number of connections per capability type.
The value is current left at AIPerService::mConcurrectConnections,
so not having an effect yet.
2013-06-23 18:09:09 +02:00
Aleric Inglewood
87176418a2 Change CurlConcurrentConnectionsPerService to U16 and clamp it between 1 and 32.
Also fixes a bug where going from 1 to 2 would not update
AIPerService::mConcurrectConnections correctly.
2013-06-23 18:05:23 +02:00
Lirusaito
d4bed6382c Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer into VoiceUpdate 2013-06-23 02:25:15 -04:00
Aleric Inglewood
ee59617c5e Always add new http requests to the back the queue. 2013-06-22 22:20:37 +02:00
Aleric Inglewood
432d6b5697 More comment fixes to refer to services instead of hostnames. 2013-06-22 20:08:15 +02:00
Latif Khalifa
8574f1ee23 Merge remote-tracking branch 'aleric/master' 2013-06-14 18:31:48 +02:00
Aleric Inglewood
34b921a101 Disable llassert(!mUploadFinished)
This fires so little that it isn't worth anymore to look into it
(the only problem resulting from this is a wrong timeout on one
of the http requests); and therefore no longer makes sense to
have it triggered in alpha builds at all, since those do not
produce enough debug output to understand what caused it in the
first place.
2013-06-12 21:21:41 +02:00
Aleric Inglewood
def40055b0 Don't add windows filesname to service list. 2013-06-12 03:10:11 +02:00
Lirusaito
fd453593b3 Merge branch 'Moap' of git://github.com/Shyotl/SingularityViewer into VoiceUpdate
Conflicts:
	indra/newview/llfloateravatarinfo.cpp - llpanelprofile.cpp update
	indra/newview/llfloatergroupinfo.cpp - llgroupactions.cpp update
	indra/newview/llfloaterobjectiminfo.cpp - simple merge
	indra/newview/llstartup.cpp - Followed Shyotl's directions from 07165961dc
	indra/newview/llviewermedia.cpp - includes conflict, simple stuff.

SLURL update:
	indra/newview/llavataractions.cpp
	indra/newview/llgroupactions.cpp
2013-06-11 15:32:18 -04:00
Lirusaito
62a96b8b33 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer into VoiceUpdate 2013-06-11 05:56:24 -04:00
Lirusaito
89963b018b [Voice Update] llfloateractivespeakers.* to llspeakers.*
Condenses the three moderation responders to one.
Adds Speakers settings.
Uses dedicated timer class to track speakers on the list
Adds temporary getSpeakerManager() function to LLFloaterIMPanel to play the role of LLIMModel::getSpeakerManager
2013-06-04 10:18:49 -04:00
Lirusaito
c273e34ed8 [Voice Update] LLVoiceClient
Migrate a bunch of classes out of llvoiceclient.* and into new llvoicevivox.*
Update most of these to match their counterparts
Introduce VoiceFonts support (voice morphing, floater still to come)
Support for a bunch of v3 voice settings.
Move volume settings management from LLMutelist into LLSpeakerVolumeStorage
Support for Avaline mutes (WIP)
Adds voice section to LLAgent
Moved llfloatervoicedevicesettings to llpanelvoicedevicesettings, v3's voice device panel design is more intuitive.
2013-06-03 22:20:27 -04:00
Aleric Inglewood
c5489932cf Fix ASSERT(!mUploadFinished || mBeingRedirected)
Hopefully this is the last case.
2013-06-04 00:31:44 +02:00
Aleric Inglewood
98badb94da Add AIHTTPView, a HTTP Debug Console - press Ctrl-Shift-7 2013-06-01 16:14:32 +02:00
Shyotl
ef3e918558 Initial moap commit. /VERY/ WIP. Primarily committed to clean up unstaged changes. Do not run this, even if it may compile, as it will NOT work (for a myriad of reasons)! 2013-05-31 05:33:41 -05:00
Siana Gearz
bc145c95fb Silence VC10 warnings 2013-05-26 05:43:28 +02:00
Aleric Inglewood
ed8fa9229f Merge remote-tracking branch 'singu/master' 2013-05-21 23:58:53 +02:00
Aleric Inglewood
cf4c4a72c2 Added AICapabilityType and related.
This splits the AIPerService queue up into four queues: one for each
"capability type". On Second Life that doesn't make a difference in
itself for textures because the texture service only serves one
capability type: textures. Other services however can serve two types,
while on Avination - that currently only has one services for everything
- this really makes a difference because that single service now has
four queues.

More importantly however is that the administration of how many requests
are in the "pipeline" (from approving that a new HTTP request may be
added for given service, till curl finished it) is now per capability
type (or service/capabitity type pair actually). This means downloads of
a certain capability type (textures, inventory, mesh, other) will no
longer stall because unapproved requests cluttered the queue for a given
service.

Moreover, before when a request did finished, it would only look for a
new request in the queue of the service that just finished. This simple
algorithm worked when there were no 'PerSerice' objects, and only one
'Curl' queue: because if anything was queued that that was because there
were running requests, and when one of those running requests finished
it made sense to see if one of those queued requests could be added now.
However, after adding multiple queues, one for each service, it could
happen that service A had queued requests while only requests from
service B were actually running: only requests of B would ever finish
and the requests of A would be queued forever.

With this patch the algorithm is to look alternating first in the
texture request queue and then in the inventory request queue - or vice
versa, and if there are none of those, look for a request of a different
type. If also that cannot be found, look for a request in another
service. This is still not optimal and subject to change.
2013-05-21 23:34:23 +02:00
Siana Gearz
63f152e78d Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer 2013-05-13 02:43:49 +02:00