<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jadeforrest</id>
	<title>AOLserver Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jadeforrest"/>
	<link rel="alternate" type="text/html" href="https://panoptic.com/wiki/aolserver/Special:Contributions/Jadeforrest"/>
	<updated>2026-04-25T17:30:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5146</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5146"/>
		<updated>2008-06-19T19:52:25Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: correct mistake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
 ns_returnfile 200 [ns_guesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;br /&gt;
&lt;br /&gt;
Want to name the file?&lt;br /&gt;
&lt;br /&gt;
ns_set update [ns_conn outputheaders] content-disposition &amp;quot;attachment; filename=1.abc&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5145</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5145"/>
		<updated>2008-06-19T19:14:50Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
 ns_returnfile 200 [ns_guesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;br /&gt;
&lt;br /&gt;
Want to name the file?&lt;br /&gt;
&lt;br /&gt;
ns_set update [ns_conn headers] content-disposition &amp;quot;attachment; filename=1.abc&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5144</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5144"/>
		<updated>2008-06-19T19:14:35Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: added content disposition hint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
 ns_returnfile 200 [ns_guesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;br /&gt;
&lt;br /&gt;
Want to name the file?&lt;br /&gt;
&lt;br /&gt;
ns_set update [ns_conn headers] content-disposition \&lt;br /&gt;
   &amp;quot;attachment; filename=1.abc&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Languages&amp;diff=5130</id>
		<title>Languages</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Languages&amp;diff=5130"/>
		<updated>2008-04-14T15:23:03Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: add requirement for adding new languages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of AOLserver's greatest strengths is it's built in Tcl interpreter, but many other languages&lt;br /&gt;
are also available via loadable [[modules]].&lt;br /&gt;
* [[Java]], via [[nsjk2]], [[nsjava]], [[nstomcat]]&lt;br /&gt;
* Python, via [[PyWX]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* OCaml, via [[nsocaml]]&lt;br /&gt;
* [[Scheme]]&lt;br /&gt;
* [[Ruby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to support a language in the core, the language runtime must&lt;br /&gt;
have these two non-negotiable properties:&lt;br /&gt;
&lt;br /&gt;
   1) Fully thread-safe&lt;br /&gt;
   2) Embeddable&lt;br /&gt;
&lt;br /&gt;
(Dossy)&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Languages&amp;diff=5129</id>
		<title>Languages</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Languages&amp;diff=5129"/>
		<updated>2008-04-13T14:09:46Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: remove standard ML -- I believe this is an advertisement, as it links to SMLServer, which is not related to Aolserver in any way.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of AOLserver's greatest strengths is it's built in Tcl interpreter, but many other languages&lt;br /&gt;
are also available via loadable [[modules]].&lt;br /&gt;
* [[Java]], via [[nsjk2]], [[nsjava]], [[nstomcat]]&lt;br /&gt;
* Python, via [[PyWX]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* OCaml, via [[nsocaml]]&lt;br /&gt;
* [[Scheme]]&lt;br /&gt;
* [[Ruby]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=SMLserver&amp;diff=5128</id>
		<title>SMLserver</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=SMLserver&amp;diff=5128"/>
		<updated>2008-04-13T14:08:59Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: remove content -- this does not seem to be related to Aolserver in any way -- it seems to be advertising.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ruby&amp;diff=5110</id>
		<title>Ruby</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ruby&amp;diff=5110"/>
		<updated>2007-12-12T16:49:29Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NsRuby is a module for serving Ruby on Aolserver. What is it's status?&lt;br /&gt;
&lt;br /&gt;
It currently sits starving at: http://sourceforge.net/projects/nsruby&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5109</id>
		<title>Talk:Ruby</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5109"/>
		<updated>2007-12-12T16:48:31Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: /* Ruby on Rails on AOLserver? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ruby on Rails on AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Any thoughts or ideas on whether [http://www.rubyonrails.org Ruby on Rails] would work with the nsruby module? --[[User:Caveman|Caveman]] 10:28, 9 December 2005 (EST)&lt;br /&gt;
&lt;br /&gt;
* What would be the point?  Rails already includes a Ruby-based HTTP listener that's closely integrated with Rails.  You would get no performance benefit from putting AOLserver in front of Rails, as Rails is all single-threaded so requests get processed in serial, as I understand it.  If you wanted to accelerate a Rails app, I'd front it with a load balancing switch and run a bunch of Rails listeners.  But, that'd mean Rails couldn't keep in-memory state information unless you want to run the switch in sticky-session mode, which is lame. ''-- [[User:Dossy|Dossy]] 07:50, 10 December 2005 (EST)''&lt;br /&gt;
&lt;br /&gt;
* Dossy is correct here, as far as I understand. It's amazing how long it has taken for other web servers to begin to approach Aolserver, and even now, the hottest thing around (Rails) faces such terrible scalability issues. The problem is most people won't notice until their web site really blows up -- [[User:Jadeforrest|Jadeforrest]]&lt;br /&gt;
&lt;br /&gt;
== Ruby on Aolserver? ==&lt;br /&gt;
&lt;br /&gt;
Yes, but Ruby on Aolserver would absolutely ROCK!&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5108</id>
		<title>Talk:Ruby</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5108"/>
		<updated>2007-12-12T16:47:33Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: /* Ruby on Rails on AOLserver? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ruby on Rails on AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Any thoughts or ideas on whether [http://www.rubyonrails.org Ruby on Rails] would work with the nsruby module? --[[User:Caveman|Caveman]] 10:28, 9 December 2005 (EST)&lt;br /&gt;
&lt;br /&gt;
* What would be the point?  Rails already includes a Ruby-based HTTP listener that's closely integrated with Rails.  You would get no performance benefit from putting AOLserver in front of Rails, as Rails is all single-threaded so requests get processed in serial, as I understand it.  If you wanted to accelerate a Rails app, I'd front it with a load balancing switch and run a bunch of Rails listeners.  But, that'd mean Rails couldn't keep in-memory state information unless you want to run the switch in sticky-session mode, which is lame. ''-- [[User:Dossy|Dossy]] 07:50, 10 December 2005 (EST)''&lt;br /&gt;
&lt;br /&gt;
* Dossy is correct here, as far as I understand. It's amazing how long it has taken for other web servers to begin to approach Aolserver, and even now, the hot thing faces such scalability issues. Rails can only serve one request at a time. That is completely lame -- [[User:Jadeforrest|Jadeforrest]]&lt;br /&gt;
&lt;br /&gt;
== Ruby on Aolserver? ==&lt;br /&gt;
&lt;br /&gt;
Yes, but Ruby on Aolserver would absolutely ROCK!&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5107</id>
		<title>Talk:Ruby</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:Ruby&amp;diff=5107"/>
		<updated>2007-12-12T16:45:36Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: /* Ruby on Rails on AOLserver? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ruby on Rails on AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Any thoughts or ideas on whether [http://www.rubyonrails.org Ruby on Rails] would work with the nsruby module? --[[User:Caveman|Caveman]] 10:28, 9 December 2005 (EST)&lt;br /&gt;
&lt;br /&gt;
* What would be the point?  Rails already includes a Ruby-based HTTP listener that's closely integrated with Rails.  You would get no performance benefit from putting AOLserver in front of Rails, as Rails is all single-threaded so requests get processed in serial, as I understand it.  If you wanted to accelerate a Rails app, I'd front it with a load balancing switch and run a bunch of Rails listeners.  But, that'd mean Rails couldn't keep in-memory state information unless you want to run the switch in sticky-session mode, which is lame. ''-- [[User:Dossy|Dossy]] 07:50, 10 December 2005 (EST)''&lt;br /&gt;
&lt;br /&gt;
== Ruby on Aolserver? ==&lt;br /&gt;
&lt;br /&gt;
Yes, but Ruby on Aolserver would absolutely ROCK!&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5006</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5006"/>
		<updated>2006-12-12T00:26:47Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
 ns_returnfile 200 [ns_guesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5005</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5005"/>
		<updated>2006-12-12T00:04:21Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
 ns_returnfile 200 [ns_ugesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5004</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=5004"/>
		<updated>2006-12-12T00:03:48Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
ns_returnfile 200 &amp;quot;application/zip&amp;quot; $filepath&lt;br /&gt;
ns_returnfile 200 [ns_ugesstype $file] $filepath&lt;br /&gt;
&lt;br /&gt;
For now, see [[ns_return]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_set&amp;diff=4950</id>
		<title>Ns set</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_set&amp;diff=4950"/>
		<updated>2006-04-25T20:18:32Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: added example of running through ns_set&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_set.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_set - Manipulate sets of key-value pairs&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_set''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command is used to manipulate sets of key-value pairs or &amp;quot;fields&amp;quot;.  The fields in the set are ordered by number.  The field numbers start at zero and increase by one, up to the total number of fields.  An '''ns_set''' is actually a multiset - in other words, the same key can appear multiple times in the same set.  This data structure is particularly useful for things like HTTP headers which have this same property.&lt;br /&gt;
&lt;br /&gt;
: The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
* '''ns_set array''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the contents of the ''setId'' in a string representation similar to Tcl's '''array get''' format.  This is useful for converting an '''ns_set''' to an '''array''' or for iterating over the key-value pairs with '''foreach'''.  Since '''ns_set'''s can contain the same key multiple times, converting an '''ns_set''' to an '''array''' can result in an array that is not exactly the same as the original '''ns_set''' as keys in an array are unique.&lt;br /&gt;
* '''ns_set cleanup'''&lt;br /&gt;
&lt;br /&gt;
: Frees all sets in the current interp.&lt;br /&gt;
* '''ns_set copy''' ''?-persist? setId''&lt;br /&gt;
&lt;br /&gt;
: Returns a new set that has the same name and contents as the set referenced in ''setId''.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set cput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value'', if the field does not already exist in the set.  If the field already exists in the set, the set is unchanged.  Returns the field number of the new field, or the field number of the existing field if it already exists in the set.&lt;br /&gt;
* '''ns_set create''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
* '''ns_set new''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
&lt;br /&gt;
: Allocates memory for a new set and returns the setId for the new set.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set delete''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Deletes the field in the set at field number ''fieldNumber''.&lt;br /&gt;
* '''ns_set delkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Removes the first field in the set whose key is ''key''.  Note that there could be multiple fields in the set with this key; this command only removes the first occurrence.&lt;br /&gt;
* '''ns_set find''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the index of the first field in the specified ''setId'' whose ''key'' matches the specified key.  Indexing starts at zero.  If no matching fields are found, '''ns_set find''' returns -1.&lt;br /&gt;
* '''ns_set free''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Frees the specified set.  Sets must be explicitly freed with '''ns_set free''' if the ''-persist'' option was used when creating the set.  Otherwise, sets are automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set get''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the first value associated with ''key''.  If ''key'' isn't in the set, an empty string is returned.&lt;br /&gt;
* '''ns_set icput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set cput'''.&lt;br /&gt;
* '''ns_set idelkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set delkey'''.&lt;br /&gt;
* '''ns_set ifind''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set find'''.&lt;br /&gt;
* '''ns_set iget''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set get'''.&lt;br /&gt;
* '''ns_set isnull''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the value of the field specified by ''fieldNumber'' is null and 0 if it is not.  Note that an empty string is not the same as a null.  '''ns_set isnull''' will return 0 if the value is an empty string.&lt;br /&gt;
* '''ns_set iunique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set unique'''.&lt;br /&gt;
* '''ns_set key''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the key for the field numbered ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set in order.&lt;br /&gt;
* '''ns_set list''' ''?-shared?''&lt;br /&gt;
&lt;br /&gt;
: Returns the list of all non-persistent '''ns_set'''s.  If ''-shared'' is specified, this command returns only the list of persistent '''ns_set'''s.&lt;br /&gt;
* '''ns_set merge''' ''high low''&lt;br /&gt;
&lt;br /&gt;
: Merges two sets.  Any fields in the ''low'' set are appended to the ''high'' set if a field with the same key name does not already exist in the ''high'' set.&lt;br /&gt;
* '''ns_set move''' ''to from''&lt;br /&gt;
&lt;br /&gt;
: Moves all fields from the ''from'' set to the end of the ''to'' set, leaving the ''from'' set a valid, empty set.&lt;br /&gt;
* '''ns_set name''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the name of the set.  Returns an empty string if no name has been set.&lt;br /&gt;
* '''ns_set print''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Prints the specified set to stderr which should go to the server log.  This is useful for debugging, but '''ns_set array''' may be more useful in actual code.&lt;br /&gt;
* '''ns_set put''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value''.  Note that the field is appended so if a previous field has the same key as the new field, the previous field will be returned by '''ns_set get'''.  The field number of the new field is returned.&lt;br /&gt;
* '''ns_set size''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the number of fields in the set.&lt;br /&gt;
* '''ns_set split''' ''?-persist? setId ?splitChar?''&lt;br /&gt;
&lt;br /&gt;
: Splits one set into multiple sets based on the ''splitChar'' as described below and returns a Tcl list of IDs for the newly-allocated sets.  It assumes that the keys in the source ''setId'' contain a specific character (''splitChar'') that can be used to separate the name of a new set and the key in the new set.  The default ''splitChar'' is a period &amp;quot;.&amp;quot;.&lt;br /&gt;
* '''ns_set truncate''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Removes any fields with index ''fieldNumber'' or greater and frees any memory allocated for them.&lt;br /&gt;
* '''ns_set unique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the specified key is unique in the specified set and 0 if it is not.  For example, a web browser could send multiple &amp;quot;Accept:&amp;quot; headers which would end up in the header set for the connection.  '''ns_set unique''' would return 0 for the &amp;quot;Accept:&amp;quot; key, because there are multiple fields with the key &amp;quot;Accept:&amp;quot;.  The test for uniqueness is performed case-sensitively.&lt;br /&gt;
* '''ns_set update''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Updates the first field in the specified set whose key is ''key'' and replaces its value with ''value''.  This is equivalent to '''ns_set delkey''' followed by '''ns_set put''' if there is only one field with the key of ''key''.&lt;br /&gt;
* '''ns_set value''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the value of the set at field number ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set mySet [ns_set create mySetName a b c d e f A Joe B John C Jeff]&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set size $mySet&lt;br /&gt;
    6&lt;br /&gt;
&lt;br /&gt;
    % ns_set name $mySet&lt;br /&gt;
    mySetName&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    a b c d e f A Joe B John C Jeff&lt;br /&gt;
&lt;br /&gt;
    % ns_set get $mySet A&lt;br /&gt;
    Joe&lt;br /&gt;
&lt;br /&gt;
    % ns_set iget $mySet a&lt;br /&gt;
    b&lt;br /&gt;
&lt;br /&gt;
    % ns_set unique $mySet a&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set iunique $mySet a&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set truncate $mySet 3&lt;br /&gt;
   &lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            c = d&lt;br /&gt;
            e = f&lt;br /&gt;
&lt;br /&gt;
    % ns_set update $mySet c &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            e = f&lt;br /&gt;
            c = Hello World!&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet c&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet nokey&lt;br /&gt;
    -1&lt;br /&gt;
&lt;br /&gt;
    % ns_set delete $mySet 0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % set anotherSet [ns_set create]&lt;br /&gt;
    d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set list&lt;br /&gt;
    d0 d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet dog.food &amp;quot;Yummy dog food!&amp;quot;&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet cat.food &amp;quot;Yummy cat food!&amp;quot;&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $anotherSet&lt;br /&gt;
    &amp;lt;Unamed set&amp;gt;:&lt;br /&gt;
            dog.food = Yummy dog food!&lt;br /&gt;
            cat.food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % set newSets [ns_set split $anotherSet]&lt;br /&gt;
    d2 d3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % foreach s $newSets { ns_set print $s }&lt;br /&gt;
    dog:&lt;br /&gt;
            food = Yummy dog food!&lt;br /&gt;
    cat:&lt;br /&gt;
            food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set key $anotherSet 0&lt;br /&gt;
    dog.food&lt;br /&gt;
&lt;br /&gt;
    % ns_set value $anotherSet 1&lt;br /&gt;
    Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $mySet $anotherSet&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $anotherSet&lt;br /&gt;
&lt;br /&gt;
    % set thirdSet [ns_set new]&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $thirdSet $mySet&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $thirdSet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % array set testArray [ns_set array $thirdSet]&lt;br /&gt;
&lt;br /&gt;
    to run through an ns_set&lt;br /&gt;
    for {set i 0} {$i &amp;lt; [ns_set size $myset]} {incr i} {&lt;br /&gt;
        set key [ns_set key $myset $i]&lt;br /&gt;
        set value [ns_set value $myset $i]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
: The ns_set command currently reports that it accepts two additional subcommands, idelete and purge.  These are both noops (idelete may be a mistake as delete is already case-irrelevant).&lt;br /&gt;
&lt;br /&gt;
: NULL values, distinct from the empty string, are useful when representing a database row as an ns_set.  Currently, it is difficult to get a NULL value in an ns_set through the TCL API.  You may get a NULL value in the set created by [[ns_parsequery]] or by omitting the last value when seeding the ns_set in the create/new subcommand, etc.  It is possible to create NULL-valued fields through the C API.&lt;br /&gt;
&lt;br /&gt;
: ns_set is intended for relatively ''small'' amounts of data.  (Keys are found by a ''linear'' search through the whole underlying C array.)  If you stuff very large amounts of data into an ns_set, performance will be very poor - use a Tcl Array instead for that.&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_findset]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=4945</id>
		<title>Ns returnfile</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnfile&amp;diff=4945"/>
		<updated>2006-04-19T17:22:55Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For now, see [[ns_return]]&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4944</id>
		<title>Ns return</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4944"/>
		<updated>2006-04-19T17:22:30Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: add internal links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Name&lt;br /&gt;
ns_connsendfp, ns_respond, ns_return, ns_returnadminnotice, ns_returnbadrequest, ns_returnerror, ns_returnfile, ns_returnforbidden, ns_returnfp, ns_returnnotfound, ns_returnnotice, ns_returnredirect, ns_returnunauthorized, ns_write - commands&lt;br /&gt;
Synopsis&lt;br /&gt;
[[ns_connsendfp]] fp len&lt;br /&gt;
&lt;br /&gt;
[[ns_respond]]&lt;br /&gt;
&lt;br /&gt;
ns_return status type string&lt;br /&gt;
&lt;br /&gt;
[[ns_returnadminnotice]] status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
[[ns_returnbadrequest]] reason&lt;br /&gt;
&lt;br /&gt;
[[ns_returnerror]] status msg&lt;br /&gt;
&lt;br /&gt;
[[ns_returnfile]] status type filename&lt;br /&gt;
&lt;br /&gt;
[[ns_returnforbidden]]&lt;br /&gt;
&lt;br /&gt;
[[ns_returnfp]] status type fileid len&lt;br /&gt;
&lt;br /&gt;
[[ns_returnnotfound]]&lt;br /&gt;
&lt;br /&gt;
[[ns_returnnotice]] status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
[[ns_returnredirect]] location&lt;br /&gt;
&lt;br /&gt;
[[ns_returnunauthorized]]&lt;br /&gt;
&lt;br /&gt;
[[ns_write]] string&lt;br /&gt;
&lt;br /&gt;
Description&lt;br /&gt;
&lt;br /&gt;
These procedures provide a simple interface for returning information to the client. They build HTTP/1.0 headers and send the appropriate data out the socket to the client. The script does not end at the time ns_return* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
type should be a MIME type (see ns_guesstype manual page for a list). status is a three-digit number fitting the pattern below:&lt;br /&gt;
&lt;br /&gt;
1xx Informational - Not used, but reserved for future use.&lt;br /&gt;
2xx Success - The action was successfully received, understood, and accepted.&lt;br /&gt;
3xx Redirection - Further action must be taken in order to complete the request.&lt;br /&gt;
4xx Client Error - The request contains bad syntax or cannot be fulfilled.&lt;br /&gt;
5xx Server Error - The server failed to fulfill an apparently valid request.&lt;br /&gt;
Some common status values and their meanings are:&lt;br /&gt;
&lt;br /&gt;
201 Created&lt;br /&gt;
202 Accepted&lt;br /&gt;
203 Provisional Information&lt;br /&gt;
204 No Content&lt;br /&gt;
300 Multiple Choices&lt;br /&gt;
301 Moved Permanently&lt;br /&gt;
302 Moved Temporarily&lt;br /&gt;
303 Method&lt;br /&gt;
304 Not Modified&lt;br /&gt;
401 Unauthorized&lt;br /&gt;
402 Payment Required&lt;br /&gt;
403 Forbidden&lt;br /&gt;
404 Not Found&lt;br /&gt;
405 Method Not Allowed&lt;br /&gt;
406 None Acceptable&lt;br /&gt;
407 Proxy Authentication Required&lt;br /&gt;
408 Request Time-out&lt;br /&gt;
409 Conflict&lt;br /&gt;
410 Gone&lt;br /&gt;
501 Not Implemented&lt;br /&gt;
502 Bad Gateway&lt;br /&gt;
503 Service Unavailable&lt;br /&gt;
504 Gateway Time-out&lt;br /&gt;
ns_connsendfp&lt;br /&gt;
This function writes len bytes of the specified channel or file to the conn.&lt;br /&gt;
ns_return&lt;br /&gt;
Sends back both the headers and the string.&lt;br /&gt;
ns_returnadminnotice&lt;br /&gt;
Wraps the text msg and longmsg in some html, appends a line with a link to &amp;quot;mailto:serveradministrator&amp;quot; based on the virtual server parameter &amp;quot;WebMaster&amp;quot;.&lt;br /&gt;
ns_returnbadrequest&lt;br /&gt;
Returns a 400 status code and a formatted HTML message containing the reason text.&lt;br /&gt;
ns_returnerror&lt;br /&gt;
Wraps the text msg in some html and returns that to the client.&lt;br /&gt;
ns_returnfile&lt;br /&gt;
Sends back the headers and the contents of the file.&lt;br /&gt;
ns_returnforbidden&lt;br /&gt;
Returns a 403 status code.&lt;br /&gt;
ns_returnfp&lt;br /&gt;
First sends the appropriate headers. Next, it writes out the contents of file from the current file position until the end of the file.&lt;br /&gt;
ns_returnnotfound&lt;br /&gt;
Returns a 404 status code.&lt;br /&gt;
ns_returnnotice&lt;br /&gt;
Wraps teh text msg and longmsg in some html and returns that to the client.&lt;br /&gt;
ns_returnredirect&lt;br /&gt;
Returns a redirect to the passed in location&lt;br /&gt;
ns_returnunauthorized&lt;br /&gt;
Returns a 401 status code&lt;br /&gt;
ns_write&lt;br /&gt;
Writes the string out the connection. You can use it instead of the ns_return or ns_respond functions to build HTTP responses. AOLserver will not include the usual headers on the output data. The script does not end at the time ns_write* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
See Also&lt;br /&gt;
&lt;br /&gt;
ns_respond(n) , ns_writefp(n)&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4943</id>
		<title>Ns return</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4943"/>
		<updated>2006-04-19T17:21:19Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Name&lt;br /&gt;
ns_connsendfp, ns_respond, ns_return, ns_returnadminnotice, ns_returnbadrequest, ns_returnerror, ns_returnfile, ns_returnforbidden, ns_returnfp, ns_returnnotfound, ns_returnnotice, ns_returnredirect, ns_returnunauthorized, ns_write - commands&lt;br /&gt;
Synopsis&lt;br /&gt;
ns_connsendfp fp len&lt;br /&gt;
&lt;br /&gt;
ns_respond&lt;br /&gt;
&lt;br /&gt;
ns_return status type string&lt;br /&gt;
&lt;br /&gt;
ns_returnadminnotice status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
ns_returnbadrequest reason&lt;br /&gt;
&lt;br /&gt;
ns_returnerror status msg&lt;br /&gt;
&lt;br /&gt;
[ns_returnfile] status type filename&lt;br /&gt;
&lt;br /&gt;
ns_returnforbidden&lt;br /&gt;
&lt;br /&gt;
ns_returnfp status type fileid len&lt;br /&gt;
&lt;br /&gt;
ns_returnnotfound&lt;br /&gt;
&lt;br /&gt;
ns_returnnotice status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
ns_returnredirect location&lt;br /&gt;
&lt;br /&gt;
ns_returnunauthorized&lt;br /&gt;
&lt;br /&gt;
ns_write string&lt;br /&gt;
&lt;br /&gt;
Description&lt;br /&gt;
&lt;br /&gt;
These procedures provide a simple interface for returning information to the client. They build HTTP/1.0 headers and send the appropriate data out the socket to the client. The script does not end at the time ns_return* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
type should be a MIME type (see ns_guesstype manual page for a list). status is a three-digit number fitting the pattern below:&lt;br /&gt;
&lt;br /&gt;
1xx Informational - Not used, but reserved for future use.&lt;br /&gt;
2xx Success - The action was successfully received, understood, and accepted.&lt;br /&gt;
3xx Redirection - Further action must be taken in order to complete the request.&lt;br /&gt;
4xx Client Error - The request contains bad syntax or cannot be fulfilled.&lt;br /&gt;
5xx Server Error - The server failed to fulfill an apparently valid request.&lt;br /&gt;
Some common status values and their meanings are:&lt;br /&gt;
&lt;br /&gt;
201 Created&lt;br /&gt;
202 Accepted&lt;br /&gt;
203 Provisional Information&lt;br /&gt;
204 No Content&lt;br /&gt;
300 Multiple Choices&lt;br /&gt;
301 Moved Permanently&lt;br /&gt;
302 Moved Temporarily&lt;br /&gt;
303 Method&lt;br /&gt;
304 Not Modified&lt;br /&gt;
401 Unauthorized&lt;br /&gt;
402 Payment Required&lt;br /&gt;
403 Forbidden&lt;br /&gt;
404 Not Found&lt;br /&gt;
405 Method Not Allowed&lt;br /&gt;
406 None Acceptable&lt;br /&gt;
407 Proxy Authentication Required&lt;br /&gt;
408 Request Time-out&lt;br /&gt;
409 Conflict&lt;br /&gt;
410 Gone&lt;br /&gt;
501 Not Implemented&lt;br /&gt;
502 Bad Gateway&lt;br /&gt;
503 Service Unavailable&lt;br /&gt;
504 Gateway Time-out&lt;br /&gt;
ns_connsendfp&lt;br /&gt;
This function writes len bytes of the specified channel or file to the conn.&lt;br /&gt;
ns_return&lt;br /&gt;
Sends back both the headers and the string.&lt;br /&gt;
ns_returnadminnotice&lt;br /&gt;
Wraps the text msg and longmsg in some html, appends a line with a link to &amp;quot;mailto:serveradministrator&amp;quot; based on the virtual server parameter &amp;quot;WebMaster&amp;quot;.&lt;br /&gt;
ns_returnbadrequest&lt;br /&gt;
Returns a 400 status code and a formatted HTML message containing the reason text.&lt;br /&gt;
ns_returnerror&lt;br /&gt;
Wraps the text msg in some html and returns that to the client.&lt;br /&gt;
ns_returnfile&lt;br /&gt;
Sends back the headers and the contents of the file.&lt;br /&gt;
ns_returnforbidden&lt;br /&gt;
Returns a 403 status code.&lt;br /&gt;
ns_returnfp&lt;br /&gt;
First sends the appropriate headers. Next, it writes out the contents of file from the current file position until the end of the file.&lt;br /&gt;
ns_returnnotfound&lt;br /&gt;
Returns a 404 status code.&lt;br /&gt;
ns_returnnotice&lt;br /&gt;
Wraps teh text msg and longmsg in some html and returns that to the client.&lt;br /&gt;
ns_returnredirect&lt;br /&gt;
Returns a redirect to the passed in location&lt;br /&gt;
ns_returnunauthorized&lt;br /&gt;
Returns a 401 status code&lt;br /&gt;
ns_write&lt;br /&gt;
Writes the string out the connection. You can use it instead of the ns_return or ns_respond functions to build HTTP responses. AOLserver will not include the usual headers on the output data. The script does not end at the time ns_write* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
See Also&lt;br /&gt;
&lt;br /&gt;
ns_respond(n) , ns_writefp(n)&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4942</id>
		<title>Ns return</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_return&amp;diff=4942"/>
		<updated>2006-04-19T17:21:01Z</updated>

		<summary type="html">&lt;p&gt;Jadeforrest: copy from man page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Name&lt;br /&gt;
ns_connsendfp, ns_respond, ns_return, ns_returnadminnotice, ns_returnbadrequest, ns_returnerror, ns_returnfile, ns_returnforbidden, ns_returnfp, ns_returnnotfound, ns_returnnotice, ns_returnredirect, ns_returnunauthorized, ns_write - commands&lt;br /&gt;
Synopsis&lt;br /&gt;
ns_connsendfp fp len&lt;br /&gt;
&lt;br /&gt;
ns_respond&lt;br /&gt;
&lt;br /&gt;
ns_return status type string&lt;br /&gt;
&lt;br /&gt;
ns_returnadminnotice status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
ns_returnbadrequest reason&lt;br /&gt;
&lt;br /&gt;
ns_returnerror status msg&lt;br /&gt;
&lt;br /&gt;
ns_returnfile status type filename&lt;br /&gt;
&lt;br /&gt;
ns_returnforbidden&lt;br /&gt;
&lt;br /&gt;
ns_returnfp status type fileid len&lt;br /&gt;
&lt;br /&gt;
ns_returnnotfound&lt;br /&gt;
&lt;br /&gt;
ns_returnnotice status msg ?longmsg?&lt;br /&gt;
&lt;br /&gt;
ns_returnredirect location&lt;br /&gt;
&lt;br /&gt;
ns_returnunauthorized&lt;br /&gt;
&lt;br /&gt;
ns_write string&lt;br /&gt;
&lt;br /&gt;
Description&lt;br /&gt;
&lt;br /&gt;
These procedures provide a simple interface for returning information to the client. They build HTTP/1.0 headers and send the appropriate data out the socket to the client. The script does not end at the time ns_return* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
type should be a MIME type (see ns_guesstype manual page for a list). status is a three-digit number fitting the pattern below:&lt;br /&gt;
&lt;br /&gt;
1xx Informational - Not used, but reserved for future use.&lt;br /&gt;
2xx Success - The action was successfully received, understood, and accepted.&lt;br /&gt;
3xx Redirection - Further action must be taken in order to complete the request.&lt;br /&gt;
4xx Client Error - The request contains bad syntax or cannot be fulfilled.&lt;br /&gt;
5xx Server Error - The server failed to fulfill an apparently valid request.&lt;br /&gt;
Some common status values and their meanings are:&lt;br /&gt;
&lt;br /&gt;
201 Created&lt;br /&gt;
202 Accepted&lt;br /&gt;
203 Provisional Information&lt;br /&gt;
204 No Content&lt;br /&gt;
300 Multiple Choices&lt;br /&gt;
301 Moved Permanently&lt;br /&gt;
302 Moved Temporarily&lt;br /&gt;
303 Method&lt;br /&gt;
304 Not Modified&lt;br /&gt;
401 Unauthorized&lt;br /&gt;
402 Payment Required&lt;br /&gt;
403 Forbidden&lt;br /&gt;
404 Not Found&lt;br /&gt;
405 Method Not Allowed&lt;br /&gt;
406 None Acceptable&lt;br /&gt;
407 Proxy Authentication Required&lt;br /&gt;
408 Request Time-out&lt;br /&gt;
409 Conflict&lt;br /&gt;
410 Gone&lt;br /&gt;
501 Not Implemented&lt;br /&gt;
502 Bad Gateway&lt;br /&gt;
503 Service Unavailable&lt;br /&gt;
504 Gateway Time-out&lt;br /&gt;
ns_connsendfp&lt;br /&gt;
This function writes len bytes of the specified channel or file to the conn.&lt;br /&gt;
ns_return&lt;br /&gt;
Sends back both the headers and the string.&lt;br /&gt;
ns_returnadminnotice&lt;br /&gt;
Wraps the text msg and longmsg in some html, appends a line with a link to &amp;quot;mailto:serveradministrator&amp;quot; based on the virtual server parameter &amp;quot;WebMaster&amp;quot;.&lt;br /&gt;
ns_returnbadrequest&lt;br /&gt;
Returns a 400 status code and a formatted HTML message containing the reason text.&lt;br /&gt;
ns_returnerror&lt;br /&gt;
Wraps the text msg in some html and returns that to the client.&lt;br /&gt;
ns_returnfile&lt;br /&gt;
Sends back the headers and the contents of the file.&lt;br /&gt;
ns_returnforbidden&lt;br /&gt;
Returns a 403 status code.&lt;br /&gt;
ns_returnfp&lt;br /&gt;
First sends the appropriate headers. Next, it writes out the contents of file from the current file position until the end of the file.&lt;br /&gt;
ns_returnnotfound&lt;br /&gt;
Returns a 404 status code.&lt;br /&gt;
ns_returnnotice&lt;br /&gt;
Wraps teh text msg and longmsg in some html and returns that to the client.&lt;br /&gt;
ns_returnredirect&lt;br /&gt;
Returns a redirect to the passed in location&lt;br /&gt;
ns_returnunauthorized&lt;br /&gt;
Returns a 401 status code&lt;br /&gt;
ns_write&lt;br /&gt;
Writes the string out the connection. You can use it instead of the ns_return or ns_respond functions to build HTTP responses. AOLserver will not include the usual headers on the output data. The script does not end at the time ns_write* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
See Also&lt;br /&gt;
&lt;br /&gt;
ns_respond(n) , ns_writefp(n)&lt;/div&gt;</summary>
		<author><name>Jadeforrest</name></author>
		
	</entry>
</feed>