Commit Graph

5505 Commits

Author SHA1 Message Date
Latif Khalifa
362415fe8a Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-26 00:36:53 +01:00
Latif Khalifa
38248ac5b3 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-26 00:36:43 +01:00
Inusaito Sayori
98d5e4bea8 Possibly fix and restore Report Abuse to avs list menus 2013-11-25 03:44:07 -05:00
Inusaito Sayori
201ca35afb Possible fix for Mute/Unmute from lists of avatars not working 2013-11-25 03:33:13 -05:00
Inusaito Sayori
26655aefe0 Fix last online unknown showing up as zeroed out date.
Adds group_member_status_unknown to strings.xml
SV-1237 #close Fixed~
2013-11-25 03:24:40 -05:00
Aleric Inglewood
f8d9bcf487 Don't reset easy handles after using them.
We create a new easy handle every time.
2013-11-24 19:15:48 +01:00
Aleric Inglewood
ec436b0e3b Improve upload_finished detection for HTTP requests.
We detect the end of an upload when libcurl informs us
that it is no longer interested in knowing if a socket
is writable (which it tells us cause we're doing the call
to select(), by means of a call to MultiHandle::socket_callback).

However, this does not *always* work.
The debug output might look like this:

[...initialization and first part of a TLS handshake...]
0x7f759f0ad700   CURL        :   select(55, {17, 39, 46, 47, 48, 49, 50, 51, 52, 54}, NULL, NULL, timeout = 1 ms) = 7
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_IN, <unfinished>	<--- Calling curl_multi_socket_action (socket 46 is readable)
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSLv3, TLS change cipher, Client hello (1):
0x7f759f0ad700   CURLIO      0x13fce7b0       S> 1 bytes
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSLv3, TLS handshake, Finished (20):
0x7f759f0ad700   CURLIO      0x13fce7b0       S> 16 bytes
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSL connection using AES256-SHA
0x7f759f0ad700   CURLIO      0x13fce7b0       * Server certificate:
0x7f759f0ad700   CURLIO      0x13fce7b0       *          subject: C=US; ST=California; L=San Francisco; O=Linden Lab, Inc.; CN=*.agni.lindenlab.com; emailAddress=root@lindenlab.com
0x7f759f0ad700   CURLIO      0x13fce7b0       *          start date: 2012-09-20 22:55:47 GMT
0x7f759f0ad700   CURLIO      0x13fce7b0       *          expire date: 2015-09-20 22:55:47 GMT
0x7f759f0ad700   CURLIO      0x13fce7b0       *          issuer: C=US; ST=California; L=San Francisco; O=Linden Lab, Inc.; OU=Linden Lab Certificate Authority; CN=Linden Lab Certificate Authority; emailAddress=ca@lindenlab.com
0x7f759f0ad700   CURLIO      0x13fce7b0       *          SSL certificate verify ok.
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: PROTOCONNECT => DO handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURLIO      0x13fce7b0       H< POST /cap/d67d4540-4504-b3d1-1d26-112010e88bd8 HTTP/1.1\r\nHost: sim10480.agni.lindenlab.com:12043\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nContent-Type: application/llsd+xml\r\nX-SecondLife-UDP-Listen-Port: 32837\r\nConnection: keep-alive\r\nKeep-alive: 300\r\nContent-Length: 333\r\n\r\n
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: DO => DO_DONE handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)	<=== THIS IS NEW: total to upload: 333 bytes, total uploaded: 0 bytes.
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: DO_DONE => WAITPERFORM handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: WAITPERFORM => PERFORM handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURLTR      :       curl_easy_getinfo((CURL*)0x13fcf320, CURLINFO_PRIVATE, 0x7f759f0abdb0) = CURLE_OK
0x7f759f0ad700   CURL        :       Entering MultiHandle::socket_callback((CURL*)0x13fcf320, 46, CURL_POLL_INOUT, 0x7f758c001508, 0x7f758c2ce4e0) [CURLINFO_PRIVATE = 0x13fce7b0]
0x7f759f0ad700   CURL        :         CurlSocketInfo::set_action(CURL_POLL_IN --> CURL_POLL_INOUT) [0x13fce7b0]	<=== WATING FOR WRITING BUT ALREADY WAITING FOR INPUT!
0x7f759f0ad700   CURL        0x13fce7b0          reset_lowspeed: mLowSpeedClock = 138530973390; mStalled = -1
0x7f759f0ad700   CURLTR      :   <continued> {11}) = 0									<--- Returning from curl_multi_socket_action
0x7f759f0ad700   CURL        :   select(58, {17, 39, 46, 47, 48, 49, 50, 51, 52, 54}, {36, 46, 57}, NULL, timeout = 756 ms) = 5
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_OUT, <unfinished>	<=== SOCKET AVAILABLE FOR WRITING
0x7f759f0ad700   CURLIO      0x13fce7b0       * additional stuff not fine transfer.c:1037: 0 0
0x7f759f0ad700   CURLIO      0x13fce7b0       D< 333 bytes: "<llsd><map><key>folders</key><array><map><key>fetch_folders</key>...etc"	<=== WRITING *ALL* DATA
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 333)	<=== THIS IS NEW, DETECT END OF UPLOAD
0x7f759f0ad700   CURL        0x13fce7b0          upload_finished: mStalled set to Time_10ms (138530973390) + 6000 (60 seconds)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 333)
0x7f759f0ad700   CURL        :   select(58, {17, 39, 46, 47, 50, 52, 54}, {36, 46, 57}, NULL, timeout = 0 ms) = 8
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_IN|CURL_CSELECT_OUT, <unfinished>
0x7f759f0ad700   CURLIO      0x13fce7b0       * HTTP 1.1 or later with persistent connection, pipelining supported
0x7f759f0ad700   CURLIO      0x13fce7b0       H> HTTP/1.1 200 OK\r\n

...and the server already replies without a call to MultiHandle::socket_callback between
writing and reading, because the socket was still (already) waiting for input anyway
(since it was waiting for the SSL/TLS handshake before in this case, but
it also happens when the data has to be written in more than one writes).

Using the progress callback however, we are able to detect the end of the upload right
after writing, anyway.
2013-11-24 19:13:17 +01:00
Aleric Inglewood
6714d3585d Improve CURLTR debug output.
It was very confusing that only *after* a call to a libcurl function
it was written to debug output that it was called.
Now it prints it before calling it, and when that leads to additional
debug output while inside the function, it prints that before giving
the return value.

For example:

0x7f529ea15700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f528c002920, CURL_SOCKET_TIMEOUT, 0, <unfinished>
0x7f529ea15700   CURLIO      0xea8ef30       * About to connect() to login.agni.lindenlab.com port 443 (#0)
0x7f529ea15700   CURLIO      0xea8ef30       *   Trying 216.82.16.97...
0x7f529ea15700   CURLIO      0xea8ef30       * 0xe3240e0 is at send pipe head!
0x7f529ea15700   CURLIO      0xea8ef30       * STATE: CONNECT => WAITCONNECT handle 0x7f528c001df0; (connection #0)
0x7f529ea15700   CURLTR      :       curl_easy_getinfo((CURL*)0xe3240e0, CURLINFO_PRIVATE, 0x7f529ea13db0) = CURLE_OK
0x7f529ea15700   CURL        :       Entering MultiHandle::socket_callback((CURL*)0xe3240e0, 36, CURL_POLL_OUT, 0x7f528c001508, 0) [CURLINFO_PRIVATE = 0xea8ef30]
0x7f529ea15700   CURLTR      :         curl_easy_getinfo((CURL*)0xe3240e0, CURLINFO_PRIVATE, 0x7f529ea13d58) = CURLE_OK
0x7f529ea15700   CURLTR      :         curl_multi_assign((CURLM*)0x7f528c002920, 36, 0x7f528c031680) = 0
0x7f529ea15700   CURL        :         CurlSocketInfo::set_action(CURL_POLL_NONE --> CURL_POLL_OUT) [0xea8ef30]
0x7f529ea15700   CURL        :       MultiHandle::timer_callback(): timeout set to 1 ms.
0x7f529ea15700   CURLTR      :   <continued> {1}) = 0

Unfortunately, this breaks defining DEBUG_CURLIO without using libcwd,
but that was unusable already anyway (even though it compiled).
2013-11-24 18:24:09 +01:00
Inusaito Sayori
44d1b4f1fb A start on the group's feature request to have indication of mute in friends list
We may need to trick the friends list into refreshing when someone is muted to complete this feature...
probably need mutelist callbacks if those exist
2013-11-22 20:21:47 -05:00
Inusaito Sayori
7d98cf1891 [LLIMMgr/LLIMPanel] Woops, only allow invites to Adhocs!! 2013-11-22 18:41:34 -05:00
Inusaito Sayori
2d66022727 [LLIMMgr/LLIMPanel] Clean up the now redundant usage of isInviteAllowed() 2013-11-22 18:18:05 -05:00
Inusaito Sayori
15fefc231b [LLIMMgr/LLIMPanel] isInviteAllowed should return based on mSessionType, not on mDialog. 2013-11-22 18:09:13 -05:00
Inusaito Sayori
53969d05d8 [LLIMMgr/LLIMPanel] Always allow Drag and Drop sharing of any inventory regardless of mDialog so long as mSessionType is P2P_SESSION 2013-11-22 18:00:58 -05:00
Inusaito Sayori
209e64b136 Merge llfloatertools.cpp with upstream to fix MATBUG-240
MATBUG-240: Unable to change media settings for an already applied media texture unless media texture is removed and reapplied.
2013-11-22 17:35:11 -05:00
Inusaito Sayori
f3f1727b49 Actually fix SV-1226
It happened because we filtered mFromName which started out as from_name, and inconsistently used the two after that...
This change switches to just using mFromName after that point..
SV-1226 #close Fixed it~
2013-11-22 00:49:47 -05:00
Inusaito Sayori
15dbce00ee Prevent any RLVa filtering of music information as mentioned in SV-1226 2013-11-21 23:09:13 -05:00
Aleric Inglewood
2a7b96fab2 Increase connect time outs for SSL/TLS connections to 30 seconds.
On (very) slow machines this might improve the experience.
This only has effect on Second Life, since that's currently the only
grid that uses https for capabilities (all of them, except GetMesh,
GetMesh2 and GetTexture).

When linking the viewer with libmemleak, which significantly slows
down calls to malloc (and calloc, realloc, new, memalign and so on)
and free (delete), I no longer could download my inventory.
With this patch this was solved. The reason was that completing
the SSL/TLS handshake took more than 10 seconds (15 to 20).
2013-11-21 19:47:25 +01:00
Aleric Inglewood
1aa0a9be67 Minor bug fix. 2013-11-21 01:28:34 +01:00
Aleric Inglewood
53e26d4909 Compile fix for -DDEBUG_CURLIO
Since that fakes the libcwd macros, this is needed to compile
the recent change that allows to only turn on debugging output
for certain statemachine objects when DEBUG_CURLIO is defined,
but libcwd is not used (CWDEBUG is undefined).
2013-11-21 01:28:16 +01:00
Aleric Inglewood
bdef8dc185 Merge remote-tracking branch 'singu/master' 2013-11-20 15:13:25 +01:00
Siana Gearz
9c29488044 If the text is too skinny to render, don't crash 2013-11-20 10:33:15 +01:00
Siana Gearz
060628397b Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-11-20 05:50:03 +01:00
Siana Gearz
f23dc157be Prevent accidental modification of vital stock grid 2013-11-20 05:49:43 +01:00
Shyotl
3715b7439d Doer fonts fast(er)! (better batching for font glyph rendering) 2013-11-19 19:40:29 -06:00
Siana Gearz
cde5b23353 Limit avatar physics to 20-40 simulation steps per second to avoid wonky integration 2013-11-20 02:22:16 +01:00
Siana Gearz
07736106b1 Suppress asserts in fallback font loading 2013-11-20 02:20:58 +01:00
Siana Gearz
01744730a1 Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer 2013-11-20 01:11:13 +01:00
Siana Gearz
c162b470b2 Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-11-20 01:09:10 +01:00
Shyotl
5d2511e39e More font cleanup and updating. 2013-11-19 17:56:27 -06:00
Aleric Inglewood
483b97a608 Merge remote-tracking branch 'singu/master' 2013-11-19 22:13:57 +01:00
Aleric Inglewood
ea0e25b92b Make entering a Login URI in the grid manager more robust.
Before, when anything but the exact correct Login URI was entered, the
user would either get no error, or a pop up saying "Cannot retrieve grid
info from server."

With this patch, that pop up includes what went wrong and stresses that
they check if they entered the correct Login URI and where to find it.

I was motivated to write this after looking at crash report 8405 where
a user who had downloaded Singularity for the very first time crashed
twice when entering things like "aviworlds" and " aviworlds.com:8002"
(not the space), and "http:aviworlds.com:8002" (missing '//').

Especially in the light of FS accepting Login URI without the 'http://',
a lot of grid websites (like that of aviworlds) might instruct users
to enter the url without http://. Ie, this user was told to enter
just "aviworlds.com:8002", and when that failed was instructed to
add 'http' in front of it...

Now the code accepts also really WEIRD things, but will never mess
up a good entry. For example, if you enter "pssshht:aviworlds.com:8002"
then that will work, as a side effect. The real objective however is
of course to let things work like: "aviworlds.com:8002  ",
"http:aviworlds.com:8002", " http:/aviworlds.com:8002", and to give
a usable error message when there is a typo in the hostname (Cannot
resolve hostname) or they forget to add a port number (404, or
connection refused), plus the text "Make sure you entered the correct
Login URI. An example of a Login URI is: \"http://cool.grid.com:8002/\",
this url can usually be found on the website of the grid."
2013-11-19 22:00:34 +01:00
Aleric Inglewood
06bebcc5c4 Bug fix for BlockingResponder.
Blocking http requests (code using responders derived from
BlockingResponder) *do* call getRaw() and getLLSD to get the body of
server error messages. It is therefore perfectly ok if mStatus !=
HTTP_OK.
2013-11-19 21:16:12 +01:00
Aleric Inglewood
63a6ed4f43 Fix floater xmls: tooltip must be tool_tip. 2013-11-19 20:26:55 +01:00
Latif Khalifa
26ca140e4b Fixed symbol generation on Mac with channel specific packages 2013-11-19 08:47:18 +01:00
Latif Khalifa
054d67669f Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 06:28:45 +01:00
Shyotl
503e5287cd Fix minor oversight that broke openal audio impl. 2013-11-18 23:27:29 -06:00
Latif Khalifa
7187ceb0ac Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 05:14:46 +01:00
Latif Khalifa
594eacb480 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 04:44:55 +01:00
Latif Khalifa
f21bec1ab9 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-19 04:44:47 +01:00
Latif Khalifa
e6977de12f Mac build changes to create specific channel installers 2013-11-19 04:19:48 +01:00
Latif Khalifa
c99f54367d Use viewer channel as the basis for installer file names 2013-11-19 00:50:06 +01:00
Latif Khalifa
c6ec03ab19 Re-enable generating tarballs when packaging on Linux 2013-11-19 00:52:59 +01:00
Latif Khalifa
cce3809a26 Autogenerate version numbers on Mac too 2013-11-19 00:28:05 +01:00
Latif Khalifa
7183797e05 Autogenerated versioned windows resource files 2013-11-19 00:12:34 +01:00
Aleric Inglewood
7b9f854c66 Fix for 'with active responder' llerrs crash.
This fixes at least one case (crash report 8407), which comes
down to not cleanly informing a responder of failure when the
request url is empty (or so badly formed that it isn't a valid
url). As a result, the statemachine would abort() without
informing the responder - which is bad, sort of.

The previous cases where the responder needed to be informed
of a failure, namely "statemachine timed_out()" and "bad_socket()"
when a socket suddenly becomes bad for unknown reason, have been
replaced with the more general 'aborted()' function, which must
be called before the statemachine calls abort(). Clearly this
has been done for all cases of abort() now, so that if the
llerrs fires again in the future then that would have to be
after the statemachine calls finish(), which is still as "impossible"
as it was - hence the llerrs is still there to make sure.

The reason that this seldom happened on SL, and more often on
opensim, even more often on home-brew test grids, seems plausible:
malformed urls happen more in those cases.

I also took the opportunity to improve the robustness of cases
where the curl error code is checked: it makes no sense to check
what curl gives as error code when an internal error occurred.
2013-11-18 18:16:26 +01:00
Shyotl
b9d2ad3132 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2013-11-18 10:38:39 -06:00
Shyotl
8aa4d0fd27 Removed fasttimer that was hurting perf a tiny bit. 2013-11-18 09:58:21 -06:00
Shyotl
030588caaf Underwater shadows. 2013-11-18 09:57:35 -06:00
Shyotl
be249ac8a1 Font update. Minor refactor, and removed some pointless code that was leaking. 2013-11-18 09:56:49 -06:00
Shyotl
2badc1c79c Initialize LLListener_OpenAL::mRolloffFactor just to be safe. 2013-11-18 09:55:15 -06:00