<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JustOneMore+Loon</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JustOneMore+Loon"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/JustOneMore_Loon"/>
	<updated>2026-07-27T14:09:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145277</id>
		<title>GroupChatTest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145277"/>
		<updated>2011-06-02T23:08:10Z</updated>

		<summary type="html">&lt;p&gt;JustOneMore Loon: Undo revision 1145275 by JustOneMore Loon (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
We are performing a load test of some Group Chat changes on ADITI Thursday the 2nd of June at 4PM PT. We can use as many willing participants as we can get.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Refresh this page at 4PM on Thursday for more details.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
* Who: You!&lt;br /&gt;
* What: A load test of Group Chat changes&lt;br /&gt;
* Where: ADITI, the preview grid.&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* When: &#039;&#039;&#039;Thursday, the 2nd of June, 2011 @ 4PM PT&#039;&#039;&#039; &lt;br /&gt;
* Why: To help make Group Chat better&lt;br /&gt;
* How: However you can.&lt;br /&gt;
&lt;br /&gt;
= How To Help =&lt;br /&gt;
We will have open join groups for you to become a member in. Testing will be as simple as chatting in these groups while we gather metrics.&lt;br /&gt;
* &#039;&#039;&#039;Step 1&#039;&#039;&#039;: Log into ADITI with any Viewer&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* &#039;&#039;&#039;Step 2&#039;&#039;&#039;: Teleport to a random region chosen below:&lt;br /&gt;
** If your region is full or crowded we encourage you to spread out. We need each region to be as full as possible.&lt;br /&gt;
* &#039;&#039;&#039;Step 3&#039;&#039;&#039;: Join the group &amp;quot;Second Life Beta&amp;quot;&lt;br /&gt;
** secondlife://Aditi/app/group/19657888-576f-83e9-2580-7c3da7c0e4ca/about&lt;br /&gt;
** There are group join objects in each region as well&lt;br /&gt;
* &#039;&#039;&#039;Step 4&#039;&#039;&#039;: Start chatting via group chat in the group &amp;quot;Second Life Beta&amp;quot;.&lt;br /&gt;
* Additional instructions will be sent via god shout.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Test Island 1&lt;br /&gt;
! Test Island 2&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%201/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%201/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%202/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%202/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%203/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%203/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%204/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%204/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%205/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%205/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%206/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%206/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%207/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%207/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%208/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%208/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%209/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%209/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2010/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2010/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2011/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2011/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2012/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2012/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2013/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2013/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2014/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2014/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2015/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2015/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2016/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2016/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2017/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2018/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2019/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2020/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2021/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2022/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2023/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2024/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2025/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2026/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2027/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2028/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2029/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2030/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2031/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2032/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2033/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2034/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2035/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2036/128/128/30&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JustOneMore Loon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145275</id>
		<title>GroupChatTest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145275"/>
		<updated>2011-06-02T23:04:20Z</updated>

		<summary type="html">&lt;p&gt;JustOneMore Loon: /* How To Help */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
We are performing a load test of some Group Chat changes on ADITI Thursday the 2nd of June at 4PM PT. We can use as many willing participants as we can get.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Refresh this page at 4PM on Thursday for more details.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
* Who: You!&lt;br /&gt;
* What: A load test of Group Chat changes&lt;br /&gt;
* Where: ADITI, the preview grid.&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* When: &#039;&#039;&#039;Thursday, the 2nd of June, 2011 @ 4PM PT&#039;&#039;&#039; &lt;br /&gt;
* Why: To help make Group Chat better&lt;br /&gt;
* How: However you can.&lt;br /&gt;
&lt;br /&gt;
= How To Help =&lt;br /&gt;
We will have open join groups for you to become a member in. Testing will be as simple as chatting in these groups while we gather metrics.&lt;br /&gt;
* &#039;&#039;&#039;Step 1&#039;&#039;&#039;: Log into ADITI with any Viewer&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* &#039;&#039;&#039;Step 2&#039;&#039;&#039;: Teleport to a random region chosen below:&lt;br /&gt;
** If your region is full or crowded we encourage you to spread out. We need each region to be as full as possible.&lt;br /&gt;
* &#039;&#039;&#039;Step 3&#039;&#039;&#039;: Join the group &amp;quot;Second Life Beta&amp;quot;&lt;br /&gt;
** secondlife://Aditi/app/group/19657888-576f-83e9-2580-7c3da7c0e4ca/about&lt;br /&gt;
** There are group join objects in each region as well&lt;br /&gt;
* &#039;&#039;&#039;Step 4&#039;&#039;&#039;: Start chatting via group chat in the group &amp;quot;Second Life Beta&amp;quot;.&lt;br /&gt;
* Additional instructions will be sent via god shout.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Test Island 1&lt;br /&gt;
! Test Island 2&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%201/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%201/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%202/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%202/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%203/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%203/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%204/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%204/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%205/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%205/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%206/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%206/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%207/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%207/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%208/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%208/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%209/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%209/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2010/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2010/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2011/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2011/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2012/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2012/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2013/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2013/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2014/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2014/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2015/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2015/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Oatmeal%2016/128/128/30&lt;br /&gt;
| secondlife://GC%20Test%2016/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2017/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2018/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2019/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2020/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2021/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2022/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2023/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2024/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2025/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2026/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2027/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2028/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2029/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2030/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2031/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2032/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2033/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2034/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2035/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://GC%20Test%2036/128/128/30&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JustOneMore Loon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145273</id>
		<title>GroupChatTest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupChatTest&amp;diff=1145273"/>
		<updated>2011-06-02T22:51:24Z</updated>

		<summary type="html">&lt;p&gt;JustOneMore Loon: /* How To Help */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
We are performing a load test of some Group Chat changes on ADITI Thursday the 2nd of June at 4PM PT. We can use as many willing participants as we can get.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Refresh this page at 4PM on Thursday for more details.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
* Who: You!&lt;br /&gt;
* What: A load test of Group Chat changes&lt;br /&gt;
* Where: ADITI, the preview grid.&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* When: &#039;&#039;&#039;Thursday, the 2nd of June, 2011 @ 4PM PT&#039;&#039;&#039; &lt;br /&gt;
* Why: To help make Group Chat better&lt;br /&gt;
* How: However you can.&lt;br /&gt;
&lt;br /&gt;
= How To Help =&lt;br /&gt;
We will have open join groups for you to become a member in. Testing will be as simple as chatting in these groups while we gather metrics.&lt;br /&gt;
* &#039;&#039;&#039;Step 1&#039;&#039;&#039;: Log into ADITI with any Viewer&lt;br /&gt;
** Instructions for accessing ADITI are here: [[Preview Grid#How do I log in to Aditi?]]&lt;br /&gt;
* &#039;&#039;&#039;Step 2&#039;&#039;&#039;: Teleport to a random region chosen below:&lt;br /&gt;
** If your region is full or crowded we encourage you to spread out. We need each region to be as full as possible.&lt;br /&gt;
* &#039;&#039;&#039;Step 3&#039;&#039;&#039;: Join the group &amp;quot;Second Life Beta&amp;quot;&lt;br /&gt;
** secondlife://Aditi/app/group/19657888-576f-83e9-2580-7c3da7c0e4ca/about&lt;br /&gt;
** There are group join objects in each region as well&lt;br /&gt;
* &#039;&#039;&#039;Step 4&#039;&#039;&#039;: Start chatting via group chat in the group &amp;quot;Second Life Beta&amp;quot;.&lt;br /&gt;
* Additional instructions will be sent via god shout.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Test Island 1&lt;br /&gt;
! Test Island 2&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%201/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%201/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%202/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%202/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%203/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%203/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%204/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%204/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%205/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%205/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%206/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%206/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%207/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%207/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%208/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%208/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%209/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%209/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2010/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2010/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2011/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2011/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2012/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2012/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2013/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2013/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2014/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2014/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2015/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2015/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| secondlife://Aditi/secondlife/Oatmeal%2016/128/128/30&lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2016/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2017/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2018/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2019/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2020/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2021/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2022/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2023/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2024/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2025/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2026/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2027/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2028/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2029/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2030/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2031/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2032/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2033/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2034/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2035/128/128/30&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| secondlife://Aditi/secondlife/GC%20Test%2036/128/128/30&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JustOneMore Loon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_HTTP_server&amp;diff=655972</id>
		<title>LSL HTTP server</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_HTTP_server&amp;diff=655972"/>
		<updated>2009-11-16T17:25:08Z</updated>

		<summary type="html">&lt;p&gt;JustOneMore Loon: /* Other Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is the counterpart to [[llHTTPRequest]].  While llHTTPRequest enables LSL scripts request data from HTTP-accessible sources, HTTP-in enables outside sources to request data from scripts in Second Life.  The key difference is that llHTTPRequest exchanges data when the script in SL wants; HTTP-in allows outside sources to determine when they need to communicate with scripts in SL.&lt;br /&gt;
&lt;br /&gt;
Prior to HTTP-in, similar functionality could be achieved by polling with [[llHTTPRequest]], [[llEmail]] and [[:Category:LSL_XML-RPC|XML-RPC]].  All three are cumbersome and the latter two have serious scalability bottlenecks.&lt;br /&gt;
&lt;br /&gt;
It is important to note that LSL HTTP servers cannot use HTML. See [[#Other_Limitations|Other Limitations]] for details.&lt;br /&gt;
&lt;br /&gt;
== Uses ==&lt;br /&gt;
* Easily get data from LSL scripts to outside viewers, scripts or servers.&lt;br /&gt;
** Web front end for a visitor counter or other statistics accumulator.&lt;br /&gt;
* Easily get data into LSL scripts from outside viewers, scripts or servers.&lt;br /&gt;
** A store with a web front end that communicates to an in-world object to exchange L$ and inventory items.&lt;br /&gt;
** Inworld game for which an external program handles the primary game logic that needs to manipulate inworld items.&lt;br /&gt;
&lt;br /&gt;
Gory Technical Details follow.  Or jump straight to the [[LSL_http_server/examples | Script Examples]].&lt;br /&gt;
&lt;br /&gt;
== Script API ==&lt;br /&gt;
* &#039;&#039;&#039;[[LlRequestURL|key llRequestURL()]]&#039;&#039;&#039;&lt;br /&gt;
: Request a new LSL Server public URL. &lt;br /&gt;
: An http_request event will be triggered with success or failure and include the returned key&lt;br /&gt;
: NOTE: URL&#039;s are assigned to the script that called them, an http_request event will not be triggered in a script separate from the one that requested the URL.&lt;br /&gt;
&amp;lt;lsl&amp;gt;request_id = llRequestURL();&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[LlRequestSecureURL|key llRequestSecureURL()]]&#039;&#039;&#039;&lt;br /&gt;
: Similar to &#039;&#039;llRequestURL&#039;&#039; except requests an HTTPS / SSL URL.&lt;br /&gt;
: An http_request event will be triggered with success or failure and include the returned key&lt;br /&gt;
&amp;lt;lsl&amp;gt;request_id = llRequestSecureURL();&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[LlReleaseURL|llReleaseURL(string url)]]&#039;&#039;&#039;&lt;br /&gt;
: Clear the specific URL, used for both secure and non-secure URLs.&lt;br /&gt;
&amp;lt;lsl&amp;gt;llReleaseURL(&amp;quot;http://sim3015.aditi.lindenlab.com:12046/cap/3ff4f3f2-ea08-76c1-cef6-a22b4a573a7c&amp;quot;);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[Http_request|http_request(key id, string method, string body)]]&#039;&#039;&#039;&lt;br /&gt;
: Event triggered when an URL is hit:&lt;br /&gt;
:* id is unique to this request&lt;br /&gt;
:* Supported methods are GET/POST/PUT/DELETE&lt;br /&gt;
:* body: The body of the request.&lt;br /&gt;
: Event also triggered with response to &#039;&#039;llRequestURL&#039;&#039; and &#039;&#039;llRequestSecureURL&#039;&#039;&lt;br /&gt;
:* id matches the key returned by &#039;&#039;llRequestURL&#039;&#039; or &#039;&#039;llRequestSecureURL&#039;&#039;&lt;br /&gt;
:* method == [[URL_REQUEST_GRANTED]] for success, [[URL_REQUEST_DENIED]] for failure to get an URL&lt;br /&gt;
:* body is the public URL.  If unable to get a public URL body will be empty.&lt;br /&gt;
* &#039;&#039;&#039;[[LlHTTPResponse|llHTTPResponse(key id, integer status, string body)]]&#039;&#039;&#039;&lt;br /&gt;
: Send &#039;&#039;body&#039;&#039; to the requester with status code &#039;&#039;status&#039;&#039;&lt;br /&gt;
:* id is the id from http_request that maps to the specific request&lt;br /&gt;
:* sending a response to the requestor will clear the request and delete information associated with it&lt;br /&gt;
* &#039;&#039;&#039;[[LlGetHTTPHeader|string llGetHTTPHeader(key id, string header)]]&#039;&#039;&#039;&lt;br /&gt;
: Returns the string for the specified header in the specified request. All received headers are converted to lower case and this function is case-sensitive.  The returned string is limited to 255 characters.&lt;br /&gt;
:* Supported headers are:&lt;br /&gt;
::* &amp;quot;x-script-url&amp;quot;: The base url, as originally received from [[llRequestURL]] or [[llRequestSecureURL]].&lt;br /&gt;
::* &amp;quot;x-path-info&amp;quot;: Any trailing path information from the requested url&lt;br /&gt;
::* &amp;quot;x-query-string&amp;quot;: Any query arguments, the text past a ? in the url&lt;br /&gt;
::* &amp;quot;x-remote-ip&amp;quot;: IP address of the host that made the request&lt;br /&gt;
::* &amp;quot;user-agent&amp;quot;: The user-agent header as reported by the requester&lt;br /&gt;
:* Supported headers sent by &#039;&#039;&#039;[[LlHTTPRequest|llHTTPRequest()]]&#039;&#039;&#039;&lt;br /&gt;
::* &amp;quot;x-secondlife-shard&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-object-name&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-object-key&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-region&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-position&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-rotation&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-velocity&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-owner-name&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-owner-key&amp;quot;&lt;br /&gt;
 requested url: &#039;&#039;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/foo/bar?arg=gra&#039;&#039;&lt;br /&gt;
 x-script-url: &#039;&#039;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&#039;&#039;&lt;br /&gt;
 x-path-info: &#039;&#039;/foo/bar&#039;&#039;&lt;br /&gt;
 x-query-string: &#039;&#039;arg=gra&#039;&#039;&lt;br /&gt;
: This header information is valid for 30 seconds, or until [[llHTTPResponse]] is called.&lt;br /&gt;
* &#039;&#039;&#039;[[Changed|changed(integer change)]]&#039;&#039;&#039;&lt;br /&gt;
:* [[CHANGED_REGION_START]]: New changed() event triggered on region startup.&lt;br /&gt;
* &#039;&#039;&#039;[[LlGetFreeURLs|integer llGetFreeURLs()]]&#039;&#039;&#039;&lt;br /&gt;
: Returns the number of URLs available to this script.&lt;br /&gt;
&lt;br /&gt;
== URL Lifetime Limitations ==&lt;br /&gt;
* URLs are &#039;&#039;&#039;temporary&#039;&#039;&#039;!&lt;br /&gt;
* URLs will be lost in the following cases, all detectable by the script events listed with them.&lt;br /&gt;
** On object derez/rez: [[on_rez]]&lt;br /&gt;
** On script save/reset: &#039;&#039;[[default]] [[state_entry]]() (trickier in multi-state scripts)&lt;br /&gt;
** On region cross or TP(attachments): [[changed]]() {{LSLGC|Events|event}}, [[CHANGED_REGION]] and [[CHANGED_TELEPORT]]&lt;br /&gt;
** On region restart: [[changed]]() event, &#039;&#039;new&#039;&#039; flag [[CHANGED_REGION_START]]&lt;br /&gt;
* When urls are &#039;lost&#039; it means that all public urls for that script are gone, new ones will need to be requested and the new urls will &#039;&#039;&#039;&#039;&#039;not&#039;&#039;&#039;&#039;&#039; resemble the old ones.&lt;br /&gt;
* Maintaining persistent URLs will require building or using an external service similar to how [http://en.wikipedia.org/wiki/Dynamic_DNS Dynamic DNS] services work for tying domain names to dynamic IP addresses.&lt;br /&gt;
&lt;br /&gt;
Contributed HTTP-in URL mapping implementations and services:&lt;br /&gt;
* A Dynamic DNS service running on Google App Engine (contributed as an example) can be found in the forums here: http://forums.secondlife.com/showthread.php?t=323981&lt;br /&gt;
* Static URL service for HTTP-Server with API (under development),can be found [http://lsl.sltools.biz/ here]. (free by SLTools)&lt;br /&gt;
* The [http://wiki.apez.biz/URLMap_API Virtual ID URLMap service] provides mapping from a static subdomain of your choice via a REST API (part of the free [http://www.apez.biz Apez Corp] [http://wiki.apez.biz/Development web-services API]).&lt;br /&gt;
* Yet another one, running on GAE, with password protected and private domains.  http://wiki.secondlife.com/wiki/Public_Object_DNS&lt;br /&gt;
* An advanced and extensively featured Dynamic DNS service: [http://lslurl.com LSLurl].&lt;br /&gt;
** Second Life Wiki article: [[Lslurl|LSLurl]]&lt;br /&gt;
&lt;br /&gt;
== Resource Limitations ==&lt;br /&gt;
* There are a limited number of URLs available in each region, split by land ownership exactly like prim limits.&lt;br /&gt;
** Use [[llGetFreeURLs]] to get the exact number of available URLs for the script.&lt;br /&gt;
** The number of allowed URLs is the same as the number of allowed prims on the parcel the object is over.&lt;br /&gt;
**: &#039;&#039;Object owner does not matter, all objects over a parcel will use the resource pool for that parcel.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;Like prims, all the parcels owned by the same owner and in the same region share the same pool of resources.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;If you have two parcels in a region that each support 100 URLs, then you could use all 200 in object(s) on a single parcel.&#039;&#039;&lt;br /&gt;
** The region&#039;s object bonus factor does not apply to available URLs.&lt;br /&gt;
**: &#039;&#039;If a parcel has a max of 300 prims in a region with a 2x bonus factor there will only be 150 urls allowed.&#039;&#039;&lt;br /&gt;
* Each resident has their own unique pool of available URLs with a max of 38 URLs per resident.&lt;br /&gt;
** This is 1 per attachment point, but all 38 could be used by a single attachment for example.&lt;br /&gt;
* Vehicles are special and lazily moved to resident pools by the following logic:&lt;br /&gt;
** Any object that has a resident sitting on it is a &#039;vehicle&#039;&lt;br /&gt;
** Vehicles will use the url resources from the parcel they are over until the cross a parcel border.&lt;br /&gt;
**: &#039;&#039;Specifically this prevents anyone from breaking your vending machine by sitting on it and making it a &#039;vehicle&#039;.&#039;&#039;&lt;br /&gt;
** When any object using URL resources with a resident sitting on it crosses a parcel boundary the resources will switch to the first sitting resident with enough resources.  If no sitting agents have enough resources then the resources from the parcel being moved onto will be used.  If even then there are not enough resources to use then the vehicle will be blocked from moving.&lt;br /&gt;
**: &#039;&#039;In short we do everything we can to find a pool to host the resources needed by the vehicle, but will block movement if we can&#039;t.&#039;&#039;&lt;br /&gt;
* Parcel Sale: When a parcel is sold such that it changes the total available URLs in the region for either resident (seller or buyer) such that more URLs are being used than are available some objects will be returned.  &lt;br /&gt;
** The objects returned will be from youngest object to oldest object of those using URLs in each category in order of object category: Temporary, Other, Group, Owner, Selected/Sat upon.&lt;br /&gt;
**: &#039;&#039;The &#039;&#039;&#039;only&#039;&#039;&#039; time objects are possibly returned is when parcels change owner, and only if more resources are being used than allowed.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;We return youngest temporary objects before older temporary objects before younger &#039;other&#039; (owned by non-group, non-parcel-owner) objects etc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Other Limitations ==&lt;br /&gt;
* Size of the body of the requests will be [[limit]]ed to 2k [[bytes]].&lt;br /&gt;
* Size of headers of requests will be limited to 255 bytes. This is per header, not total.&lt;br /&gt;
* The size of responses to requests is not currently limited, but this is subject to review during testing.&lt;br /&gt;
* The content type of the returned data is always &#039;text/plain; utf-8&#039;&lt;br /&gt;
*: &#039;&#039;Allowing more content type options is a possibility for the future, but not guaranteed.&#039;&#039;&lt;br /&gt;
* There is a cap of 64 in flight requests per script. This is based on the maximum number of pending events in LSL. After hitting the 64 request limit, the simulator cap server returns &#039;503 Service Unavailable&#039; to the inbound request.&lt;br /&gt;
* &#039;&#039;We may throttle the rate we accept hits at the CAP server level as well.  This is possible, but has not yet been decided.&#039;&#039;&lt;br /&gt;
* HTML cannot be used without an external parser, as all output is plain text only. If making such a parser, remember that you should probably restrict access to only Linden Lab HTML URLs as to not have your bandwith stolen.&lt;br /&gt;
* It is important to note that when appending a query string to a cap URL there MUST be a trailing slash between the cap guid and the query string token &#039;?&#039;. IE https://sim123.agni.lindenlab.com/cap/f73b4b94-012d-44f2-bd0c-16c328321221?arg=gra will return an HTTP 500, but https://sim123.agni.lindenlab.com/cap/f73b4b94-012d-44f2-bd0c-16c328321221/?arg=gra will succeed. (This doesn&#039;t seem to be true.)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[LSL_http_server/examples | Script Examples]]&lt;br /&gt;
* [[LSL_http_server/design | Design Document]]&lt;br /&gt;
* Design Jira:{{jira|SVC-1086}}&lt;br /&gt;
&lt;br /&gt;
{{LSLC|HTTP}}&lt;br /&gt;
{{LSLC|Communications}}&lt;/div&gt;</summary>
		<author><name>JustOneMore Loon</name></author>
	</entry>
</feed>