Difference between revisions of "LlReleaseURL"

From Second Life Wiki
Jump to navigation Jump to search
m
(I've changed the script as suggested on the talk page, the reason for rebooting the script is to avoid race conditions that might arise if the change event happens in quick succession.)
Line 20: Line 20:
     llReleaseURL(url);
     llReleaseURL(url);
     url = "";
     url = "";
    llSetTimerEvent(0.0);
     urlRequestId = llRequestURL();
     urlRequestId = llRequestURL();
}
}
Line 26: Line 26:
throw_exception(string inputString)
throw_exception(string inputString)
{
{
     key owner = llGetOwner();
     llInstantMessage(llGetOwner(), inputString);
    llInstantMessage(owner, inputString);
   
   
     // yeah, bad way to handle exceptions by restarting.
     // yeah, bad way to handle exceptions by restarting.
Line 44: Line 43:
     changed(integer change)
     changed(integer change)
     {
     {
         if (change & (CHANGED_OWNER | CHANGED_INVENTORY))
         if (change & CHANGED_OWNER | CHANGED_REGION | CHANGED_REGION_START)
        {
            llReleaseURL(url);
            url = "";
             llResetScript();
             llResetScript();
        }
        if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT))
            request_url();
     }
     }
   
   
Line 68: Line 59:
         if (method == URL_REQUEST_DENIED)
         if (method == URL_REQUEST_DENIED)
             throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body);
             throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body);
         else if (method == URL_REQUEST_GRANTED)
         else if (method == URL_REQUEST_GRANTED)
         {
         {
             key owner = llGetOwner();
             url = body;
             llLoadURL(owner, "Click to visit my URL!", body);
             llLoadURL(llGetOwner(), "Click to visit my URL!", url);
   
   
             // check every 5 mins for dropped URL
             // check every 5 mins for dropped URL
Line 100: Line 90:
                 request_url();
                 request_url();
         }
         }
         else if (id == NULL_KEY)
         else if (id == NULL_KEY)
             throw_exception("Too many HTTP requests too fast!");
             throw_exception("Too many HTTP requests too fast!");

Revision as of 12:12, 19 May 2014

Summary

Function: llReleaseURL( string url );

Releases the specified URL, it will no longer be usable.

• string url URL to release

Examples

KBcaution.png Important: Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the sim owner and/or estate managers.

<lsl> string url; key urlRequestId; key selfCheckRequestId;

request_url() {

   llReleaseURL(url);
   url = "";
   llSetTimerEvent(0.0);
   urlRequestId = llRequestURL();

}

throw_exception(string inputString) {

   llInstantMessage(llGetOwner(), inputString);

   // yeah, bad way to handle exceptions by restarting.
   // However this is just a demo script...

   llResetScript();

}

default {

   on_rez(integer start_param)
   {
       llResetScript();
   }

   changed(integer change)
   {
if (change & CHANGED_OWNER

See Also

Functions

•  llRequestURL
•  llRequestSecureURL
•  llGetFreeURLs
•  llHTTPResponse
•  llGetHTTPHeader

Articles

•  LSL http server

Deep Notes

History

Search JIRA for related Issues

Signature

function void llReleaseURL( string url );