New Directives & Features
January 8th, 2004

<iIP islocal="205.210.228.20">

Will return true if the specified IP address is local to the server.

*********

i_hostname and i_hostip are new variables that contain the hostname and IP provided by the browser in the request to the server.  

*********

<iREDIR status=300>

Will set the appropriate status code to the browser in a range from 300 to 399.

*********

<iILISTCREATE CASESENS=TRUE>

the new CASESENS directive applies to the separator value.  Default is FALSE.  

*********

<iFORMAT VAR="variable">

This will do the same thing as iFORMAT and /iFORMAT do but to the contents of the variable.  Do not use a colon in front of the variable name.  

*********

<iFORMAT SRC="some source data here">

This will do the same thing as iFORMAT and /iFORMAT do but to the contents of the directive and outputs the result.

*********

<iFTPACTION LOWPORT=1 HIGHPORT=65536>

The LOWPORT and HIGHPORT directives specify the port range to use for the data port.  

*********

<iHTTPSESSION SOURCEIP="205.210.228.20">

If the IP or hostname specified is multihomed, DNS will use it's rules to select the IP.   The IP or hostname specified must be on the server that the tag is running on.

*********

EHANDLE=quiet on any tag will suppress the error being reported to the tagerror.log file.

*********

New special variables

:i$z is <
and :i$x is >

*********

/!ihtml file= to save a file now works with binary as well as text content.

*********

New/Revised Error Codes
95 is the interrupted timeout
96 is the polled timeout
97 is a forward detected timeout during a nap (it does not bother
waiting)

*********

<iWHILE MAXITERATION=15000>

The MAXITERATION directive allows the iWHILE tag to loop the specified number of times instead of triggering the global MAXITERATION setting.

*********
ihttp has a filename, writefile and path directive

*********
<iListSort name="listname" sort=(stri)|strs|numb>

 (string insensitive, string sensitive, number)

To sort a LIST.

*********

<iREADLINE MAX=1024>

The MAX directive is the number of characters to read as a maximum to find the end of the line.  

*********

<iFTPACTION CMD=CHMOD>

This can be used to change permissions.  

*********

New Registry Setting

setting is mediafile=path
works just like noexistpage=path

if ihtml is mapped to any of that list of types as a handler, it checks for them when the request comes in. if the object is not an ihtml source code type, then the page specified is loaded, and the i_prevpage variable set to the original object name.

This has other applications as well since you could use it for thumbnailing etc by processing a query string on hits like

<img src="photo.jpg?size=thumb">

*********

New variable
i_priv_reqtiming

it contains 4 sets of seconds.milliseconds numbers which are :
a)	time of request getting to ihtml kernel 
b)	time after post data is uploaded
c)	time after request page is loaded into ram 
d)	time after app is decrypted

A feature was added to the itime tag to the time in a compatible format as well. This can be used to measure inbound bandwidth to the server by uploading post data, and also measure the disk access penalties mapped drives, and the decrypting source penalties.

*********

Pre/Post SQL Feature

This feature allows you to specify a particular set of SQL commands to run before every SELECT request.  There are defaults for SQL Server to improve performance.

[HKEY_LOCAL_MACHINE\SOFTWARE\Inline\iHTML\Currentversion\PostSQL]
[HKEY_LOCAL_MACHINE\SOFTWARE\Inline\iHTML\Currentversion\PreSQL]

To enter a command to run, create a value in the above keys with the name of the sql server and the data is the command to run.

*********

This allows multiple values in a form to be concatenated together when set to TRUE.  TRUE is now the default.

FormMultiValue REGSZ: true

*********

<iCGI EXITCODE=”error_variable” BUFFER=”16384”>
Used to get the exit code from the process, saved in the specified variable.  If a process returns an error code, this is how you get it.  Note that this is not the exit code of any child processes.
Can also set the buffer size for stdout, 16K is default, no reason to change it.  iHTML polls the buffer and constantly empties it, so the process can write an unlimited amount of output.

New ihtml error codes: 1351/1352

I_error_nslookup
I_error_cryptolib
I_error_xml
I_error_httpsession

Each of these are defined only when an error has occurred and they contain an error code specific to the tag in question.  Each of these variables is erased before error handling occurs, so if they exist then they refer to the current error being handled.  Use iISDEF to determine whether to display error information from any of these variables.

<!ihtml ihtmlmore=”true/false”>