Oz Linden

  • Content count

  • Joined

  • Last visited

Community Reputation

117 Excellent


About Oz Linden

  • Rank
    Advanced Member
  1. Your timing in asking this is very good. We're in the process of testing a form for this on LindenLab.com now; it should be available quite soon. It really isn't because we wanted to make it harder, we've just been focused on other things.
  2. llHTTPRequest changes

    For the time being at least, I don't have a solution to suggest. We have a lot of simulator hosts, and they come and go very frequently. I'm not aware of a certificate authority that provides the availability and scale we would need at a cost we could afford to provide a server certificate for each simulator host (if you find one, by all means, file a Feature Request... we'll look at it). Using wildcard certificates would seem to me to be a solution that's less secure than the problem. In the long run, I'm sure that either we'll find a way or services like SNS will allow you to provide trusted root CAs to add to their built-in list, but at present that's not something I can make any predictions about.
  3. llHTTPRequest changes

    They are not self-signed certificates. They are signed by the Linden Lab Certificate Authority, the public certificate for which is available at https://bitbucket.org/lindenlab/llca/raw/tip/LindenLab.crt you should be able to install that certificate to provide robust authentication of the script request. We do not currently have any plans to change that.
  4. We have a release candidate viewer available that improves the retries when connecting to the voice service - it may well be much better for you, especially if the problem is in something about the network you're passing through to get there. It also has other improvements to voice quality and security. Go to the Alternate Viewers page and download the Second Life Voice Viewer. Release Candidate viewers are ones that we believe are ready for general use and are making available to test that belief. Eventually, they become the default viewer.
  5. We are continuing to update the reliability and stability of the LSL HTTP functionality in LSL. The latest changes involve validating the MIME type values: The HTTP_MIMETYPE parameter to llHTTPRequest is checked. LSL will validate these for proper format; requests that attempt to send an improperly formatted type will send a debug channel error, not send the request, and return a null request key. If you use the new HTTP_ACCEPT option to llHTTPRequest (which allows you to further restrict the type your script expects), the Content-Type of the response is checked to see that it matches your restriction; if it does not, the http_response event will be a 415 error and the body will be "Unsupported or unknown Content-Type". Incoming HTTP requests to a script check to see if the Content-Type in the request is formatted correctly and that it is an allowed type (it always checked for allowed types). Previously, it was possible to send a type that was syntactically invalid but matched an allowed wildcard type. Incoming parameters are not validated. If an incoming request has an improperly formatted or unacceptable MIME type, LSL responds with a 415 error response and no event is generated for the script. Valid MIME type format looks like “type/subtype; parameters” (the semicolon and parameters may be omitted). LSL does not validate the content of the optional parameter section. Testing Your Scripts We have made simulators implementing these checks available; regions where you can test your scripts are listed below. Please do so as soon as possible and make any required changes. Agni regions: Magnum Sandbox 1 Magnum Sandbox 2 Magnum Sandbox 3 Aditi regions: Bonifacio Sandbox Artifex Examples Some examples of valid calls to llHTTPRequest include: key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, “text/plain;charset-utf8” ], “my body” ); key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, “application/x-www-form-urlencoded” ], “body=stuff” ); key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "multipart/mixed; boundary=\"---1234567890---\"" ], “The body as multipart” ); NOTE WELL: Calls similar to the following will now be errors; they will trigger a debug error and return a Null key from llHTTPRequest. The invalid values in these examples did not trigger errors before (they probably would have caused problems on some web servers). key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/application/xml” ], “my body” ); The value for HTTP_MIMETYPE has too many sections (more than one '/'); it does not follow the type/subtype pattern. Values like this one used to be on the wiki page for llHTTPRequest; they were never valid but were not checked. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/xmll charset=utf8” ], “my body” ); No semicolon after the mime type. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text / xml” ], “my body” ); The value for HTTP_MIMETYPE includes spaces in the type/subtype section. key my_key; my_key = llHTTPRequest( “http://www.mywebsite.com/”, [ HTTP_METHOD, “POST”, HTTP_MIMETYPE, "text/xml\n” ], “my body” ); The value for HTTP_MIMETYPE includes a control character (A newline.) We'll be watching this thread and will try to clarify any questions or problems you encounter. Go forth and test please!
  6. llHTTPRequest changes

    Please file a Jira with the specifics for your LSL script and server.
  7. llHTTPRequest changes

    Solution to what?
  8. llHTTPRequest changes

    The User-Agent value identifies the HTTP client, not the host (there is a 'Server' header that identifies the server). It's rarely true that you need to manipulate the user agent value unless the server you're accessing limits or modifies responses based on it. Please do not execute a request periodically just to keep a connection open... you're consuming simulator resources. Opening a connection is pretty inexpensive.
  9. llHTTPRequest changes

    Please file a Jira on this one. Be sure to include where it is happening and an object that demonstrates the problem. We certainly didn't do anything like that on purpose, so it will take some work to figure it out but we need more specific information to start.
  10. llHTTPRequest changes

    I added the note above to the original post. Sorry that caused problems for a few services; I made the change because when we added the ability to append your own User-Agent values, we included checks on valid syntax and since our own value would not have passed that check, I thought it only fair to correct it. Perhaps that wasn't the best tradeoff, but now that it's done we won't change it again.
  11. llHTTPRequest changes

    That looks right ... what is the value of nPlayingURL ? Do you get an error message?
  12. llHTTPRequest changes

    I think you underestimate the ability of SL Residents to adapt. For some history of why we made this change, see my posts in https://community.secondlife.com/forums/topic/406941-dj-board-display-not-working-properly/ I regret that it wasn't reasonable to make an automatic adjustment in the simulator to correct this, but sometimes that's the way it works out. We try to keep disruptions like this to a minimum, and I'm making a special effort on this one to reach out to the authors of scripts that are affected. Frankly my biggest regret is that the URL hack was not noticed long ago and a better solution (like the current one) provided then (well before my time, but that's an imperfect excuse) - it should never have worked and it's surprising to me that it ever did. Software surprises you that way sometimes. We have a couple of other improvements to llHTTPRequest in the pipeline (ones that won't break anything); watch this thread for announcements when they're available for testing.
  13. llHTTPRequest changes

    In the latest main channel simulator version (2017-07-11T22:13:46.327548), we deployed some updates that changed the llHttpRequest call. These were made necessary by updates to some of the underlying HTTP libraries we use, and are intended to make HTTP use from LSL easier to debug and more robust, but in a few cases they have broken some existing scripts. This note is intended to summarize the changes and provide guidance on how to update your scripts. URLs The most important change, and the one that seems to be responsible for most of the problems that have been reported, is in the handling of the URL parameter. In previous versions, the URL was not checked, and some scripts had done things that shouldn't have worked (and now they don't): Control characters in the URL. Specifically, this has usually been newline characters. There were widely used hacks that inserted newlines in order to get around restrictions on the use of some headers, and those hacks also truncated other important headers that the simulator inserts in all requests. This will now produce a run time error without sending the request. The fix is to remove the newlines and any additional headers they were inserting; if it was the User-Agent header, there is a new parameter you can use to provide a value for that header. Spaces in the URL. Space characters are not allowed in URLs, but because many scripts insert them, we have put in special handling to convert them to a %20 in most cases. If your script is passing values returned from other LSL calls that may return spaces, you should do the replacement before putting them into the URL, like: string URL = "http://example.com/path?region=" + llEscapeURL(llGetRegionName()) depending on how your server works, you may need to substitute a plus sign ('+') for the spaces in parameter values rather than the '%20'. Header Value Changes We added a new HTTP_USER_AGENT parameter that lets you append to the User-Agent header value; in some cases, servers look for key words in this header. We made requests shorter by sending one long Accept header with all the allowed MIME types rather than many headers with one each. This made requests shorter and more compatible with more servers. As far as we know it has not caused any problems. The default User-Agent header server token value was changed from 'Second Life LSL' to 'Second-Life-LSL'; this appears to have caused problems for some servers that were checking for it. Problems If you are having problems with these changes, you may reply on this thread or file a JIRA and we'll make an effort to help you. Please include the part of the script that is making the call to llHTTPRequest and the values that are being passed to it, and describe any errors you are getting on the Debug chat channel or from your web server.
  14. Massive ping times on login

    The 'ping' value on the status bar cannot be compared to the times for a traceroute or ping command; it's an entirely different mechanism with quite different performance. The viewer displays the times for application messages that are processed by the simulator; those other commands display times for network packets that are handled at a much lower level and so are normally significantly faster. The login servers are separate from the simulators. To measure connectivity to login, the name to test is login.agni.lindenlab.com (which is really any one of many redundant servers). With as little as there is in your post to go on, it's impossible to guess what your problem might be but we monitor the responsiveness of login servers very very closely and they are fine, so chances are that the problem is either something in your system or in the network between you and the server.
  15. DJ Board Display Not Working Properly

    This change is rolling to the main channel now, and will roll to any RC channels it isn't already on in tomorrows roll. Apologies for the delays and difficulties.