Please note that not every release is made available for all the
supported platforms. The existance of a particular version number in
this file is not an indication that version was publicly released or
ever will be released. Bug fixes are generally rolled up into the next
major or minor release. If you have a support contract and need a fix
please contact Easysoft Support.

Since the 1.1.0.0 release we have changed the way changes are reported
and numbered. From 1.1.0.0, every fix/change in a particular major
version gets a new build number.

Since 1.2.0 we have changed to using 3 part version numbers which are
major.minor.build.

Note 1.3 versions of OOB were only made available for Windows and
were created to add support for Windows 2003 Server.

======================================================================

2.6.8:

    Fix buffer length mapping problem with SQLGetInfoW()

2.6.7:

    Remove new keywords, prevent them being passed over

2.6.6:

    Add option to defer calling SQLBindCol until first fetch. This will avoid 
    roundtrips for each bind but may create sequencing issues, so its optinal
    Also cache some SQLColAttributes values

2.6.5:

    Fix Windows SSL Issue

2.6.4:

    Try and get block fetch working with wide data

2.6.3:

    Return the correct length for cached SQLGetInfoW string Y/N values

2.6.2:

    Handle endian swaps for bound WCHAR

2.6.1:

    Add W Entry points on the client side

2.4.3:

    Prevent the process affinity flag from causing the oob to fail to start with 32 CPU's

2.4.2:

    If a SQLGetDescField is not local, get from server

2.4.1:

    Bound wide characters were not returning both bytes of the null terminator

2.3.11:

    Small change to SQLGetData on server to handle broken target drivers

2.3.10:

    Fix problem with structure binding and bind offset pointer

2.3.9:

    Fix initialisation of groups

2.3.7:

    SQL_ATTR_ROW_BIND_OFFSET_PTR was no being handled correctly

2.3.6:

    Windows MUTEX changes

2.3.6:

    Add call to set list of suplimentary groups when changing user from root to logon user

2.3.5:

    Add support for Windows 2012 R2

2.3.3:

Add connection attribute DECASNUMERIC to map a 

    SQLBindParameter( SQL_Type = SQL_DECIMAL ) 

to SQL_NUMERIC to overcome a problem with Oracle Gateway and MS Access.
In the odbc.ini DSN entry

    DECASNUMERIC=1

    Add support for Windows 8 

2.3.2:

Add support for Linux 3.x

2.3.1:

Fix problem with 32/64 array support in easyrpc

2.3.0:

New build to handle 64 bit clients and servers

2.2.0:

New build to support operationon Windows 7

10083557: SQL_IS_INTEGER was not working correctly when used with SQLSetStmtAttr.

Removed link to OOB news group from the HTTP Administrator.

When unbinding parameters, also release any bound bookmarks.

SQLProcedureColumns and SQLProcedures was not transferring SQL_NTS correctly.

Add support for SQL Server additional types in SQLBindParameter

10097173: Arrays of CHAR output parameters were not being trasfered back

10097174: SQL_DIAG_DYNAMIC_FUNCTION not being returned from server

2.1.4

Added support for Windows 7 (RC1)

Fix bug where attributes in the odbc.ini file are truncated to 100
characters. This changes raise the limit to 1023 charatcers per
attribute.

Added basic support for MS SQL Server 2008 types SQL_SS_TIME2 and
                       SQL_SS_TIMESTAMPOFFSET.

2.1.3

Added support for FreeBSD 7

2.1.2

Fixed bug in use of the UseOOBDBAuth attribute (Override UID/PWD
checkbox in the OOB setup dialogue). When the OOB Client sets
UseOOBDBAuth in the connection string or in the DSN it ignores the
value it is set to (0 or 1) and always acts as if it is set to
1. i.e., if you check "Override UID/PWD" in the DSN, save the DSN then
uncheck it and resave the DSN the DSN will contain UseOOBDBAuth=0
which will act as 1.

Add support for FreeBDS 6

2.1.1

Fix bug (leading to possible seg fault) in logging SQLConnect
parameters when username/password are passed in as NULL.

2.1.0

Add support for Windows Vista and add new MSI Installer.

On Windows make the OOB HTTPD Admin Server a separate service instead of
just a separate process started by the main server.

Fix non-existant style sheet references in service_change.html and
service_control.html.

Fix bug introduced since 2.0.0 where the style sheet referenced in the
index and information pages of the web administrator was incorrect.

Added the second C/ODBC tutorial to the windows install.

Added WriteStatsOnExit flag to the OOB Server. This flag controls whether the
connection statistics are written when the OOB Server service terminates
and replaces the pre-2.1 behavior which was to always write this file.

2.0.22

Removed a log message output when using SQL_LEN_DATA_AT_EXEC causing a
/tmp/esoobclient.log_<PID> (or esoobclient.log) file to be created.

2.0.21

Added support for OpenVMS IA64 @ OpenVMS 8.2-1.

Added support for AIX 5.1 PPC (64bit)

Fixed bug in OOB Client for tru64 where SQLBINGINTs were the wrong size.

Undo changes in 2.0.17 temporarily.

Added new section to Perl_DBI_DBD_ODBC.txt detailing how to use OOB
under Perl and Perl's DBI, DBD::ODBC modules.

oob_server_location.gif was missing from the performance white paper.

Added dbi-debugging.html tutorial.

Added support for FreeBSD x86 V6

New FAQ entries.

Added note to hosts statistics page saying this is a list of the first
20 different clients connecting and not all clients that every
connected if that is more than 20.

2.0.20

Fix bug in OOB Client Setup dialogue which did not exit cleanly when
an incompatible operating system was encountered.

2.0.19

Fix bz 2256. UseOOBDbAuth connection attribute only works as described
in the manual when set in the connection string and is not acted on when
found in a DSN pulled from the registry or ini file.

2.0.18

Provide the OOB client with specific knowledge of the current SQL
Server specific connection attributes so that SQL_COPT_SS_MARS_ENABLED
may be set before connection.

2.0.17

Experimental build introducing column attribute block fetching.

2.0.16

Changes to avoid remote SQLBindCol calls when only the TargetValuePtr
or StrLen_or_IndPtr have changed to work around issue under Universe
where it rebinds columns repeatedly with no changes in arguments.

2.0.15

Fix bz 2245. Resolve problems with non standard Driver Managers.

2.0.14

Fix bz 2149. Can't use IP address to connect to remote OOB Server on
irix 64.

2.0.13

Produce workaround for issue in bz 2215. It appears that under some
circumstances (too complicated to outline in detail here) the MS SQL
Server ODBC Driver can write off the end of the parameter status
array. This can occur when the PARAMSET_SIZE is set to N, parameters
bound, executed, statement has RESET_PARAMS and then this is repeated
but with the PARAMSET_SIZE reduced to N-M on the same statement.

Change for bz 2201. Increase the size of the DSN list buffer so more
DSNs may be viewed in the OOB setup dialogue.

2.0.12

Fix internal bz 2035. An OOB Server running under inetd or a child
created in Windows when MultiProcess is enabled wastes time retrieving
configuration settings only required in standalone mode. This is minor
speed in connections to a Server running under inetd or in Windows
running in MultiProcess mode.

Add QT ODBC example - see doc/qt subdirectory after installation.

Add C/ODBC tutorial.

Enhancement 2037. HTTP Server returns inline style sheet included in
each page instead of as a reference. Now using a "link rel=" in
header.

Enhancement 2040. Add favicon.ico to web server so it can be displayed
  in the URL bar of modern browsers.

Fix bz 2046. If OOB Client logging is enabled on a 64bit platform
and SQLColAttribute is called for an integer type the client
may bus error.

Fix bz 2074. Symbolic link in unixODBC on HP-UX for libodbccr.sl.1 was
missing.

In the OOB HP-UX PaRisc2 distribution the OOB Client was logging a
single message "DYNALOAD_USE_SHL libodbc.sl" to the
/tmp/esooobclient.log_xxx file even though logging was not turned on.

bz 2078. The unixODBC distributed with OOB had a bug in the cursor
library which prevented rows being returned properly when
SQL_ATTR_ROW_ARRAY_SIZE was set greater than 1.

bz 2090. The unixODBC distributed with the OOB had a bug in the cursor
library where if SQL_ROWSET_SIZE was set to n (where n > 1) and
SQLExtendedFetch was used rows were only returned one per fetch
instead of n per fetch.

2.0.11

Fix internal bz 2019. Fix problems using SQL_DATA_AT_EXEC with
SQLBulkOperations/SQLSetPos and bound columns. Change requires new
client and server. We do not know of any applications affected by
this.

Fix internal bz 2016. If you are using the ODBC Administrator
(e.g. ODBCConfig) to create a new OOB DSN and you do not have
permission to write to the system ini file the OK button appears to do
nothing as no error is displayed.

Fix internal bz 2012. DSNs created with the GUI Setup dialogue and
using multiple Server/Port pairs are written out as
"server:port,server:port" but the OOB Client ODBC Driver incorrectly
wants a space between pairs instead of a comma. The test button in the
dialogue works.

If OOB Client ODBC Driver needs to load the setup dialogue
(e.g. SQL_DRIVER_PROMPT) but dlopen fails the error message
cannot be trusted because it comes from strerror instead of
dlerror.

2.0.10

Fix bz 2017. Bug introduced in 2.0.6. Check on parameter buffer size
does not work leading to "General error: Internal server error,
Parameter buffer too small (n/n)" error.

2.0.9

Fiz bz 1976. INSTALL.txt file is out of date with respect to
licensing.

Add new connection string attribute (IgnoreStmtAttrs). See new
dialogue, DSN_definition.txt and example_odbc.ini.

Fix bz 1960 in unixODBC. SQLGetDiagRec exists in the cursor library
but it does nothing. As a result, if you are using the cursor library
and any ODBC call fails, the diagnostic is not retrievable.

Minor change to logging of the SQLGetFunctions call which was not logging
a number of functions.

2.0.8

Fix bz 1952 in unixODBC. If a driver does not have cursor support and
the application asks for cursor support unixODBC will use the cursor
library. If the application then calls SQLTransact unixODBC's cursor
library calls SQLTransact in the driver but with the environment and
connection handle arguments the wrong way around. This leads OOB to
report SQL_INVALID_HANDLE.

Fix bz 1950. Help dialogue off the OOB DSN setup dialogue does not
handle resizing properly.

Fix bz 1925. Use of freed memory in OOB DSN setup dialogue. This can
happen when editing an existing DSN but we've only actually seen a
problem on UNIX. The symptom on UNIX is that when you are using
unixODBC's ODBCConfig and double-click on an existing DSN, ODBCConfig
throws a different dialogue not OOB specific.

Fix bz 1922. During the UNIX install if you create a DSN on the fly,
but choose to not retrieve a list of tables from it for verification a
message is displayed showing how you should use isql to access the
DSN. The command line output uses the TargetDsn instead of the DSN.

Fix bz 1919. When installing on Fedora Core release 4 for x86_64 the
install does not find an already installed unixODBC because the
libraries are in /usr/lib64 instead of /usr/lib.

2.0.7

Enhancement bz 1918. Add connection string and DSN attribute
"OverrideLength" to work around broken ODBC Drivers which insist on
the BufferLength argument to SQLGetxxx functions being the size of
SQLINTEGER/SQLSMALLINT for integer types. Few people will need this
but if you find SQLGetInfo for an integer attribute type is returning
SQL_SUCCESS_WITH_INFO, 01005, data truncated you may need to set this
connection attribute.

2.0.6

Fix bz 1913. If upgrading with the OOB 2 Windows install you may
seeing a message warning a file has failed to be renamed. This problem
has been resolved but the warning can safely be ignored; it may just
mean the install finishes on a must reboot system dialogue.

Fix internal bz 1223. Binding large input parameters with a huge
ColumnSize and small BuuferLength then setting StrLen_or_IndPtr to a
large value can cause an access violation in the OOB Server. It
doesn't now. No known applications do this, this was one off code
used for testing.

Internal bz 1783. Minor addition to the help for HTTPAuthAll in the
OOB web administrator.

Internal bz 1887 and 1892. Change Windows install setup types to
Client, Server, Complete and Custom.

Internal bz 1901. Windows install may prompt to uninstall previous
version of OOB first. This should now only happen if a few registry
keys in HKLM\Software\Easysoft\Info\Products\2002* cannot be removed.

Internal bz 1910. "i=do not know" not handled in uodbc install
in UNIX installation.

Internal bz 1891. If a license is retrieved during the UNIX
installation do not ask whether to add it to the licenses file - just
do it.

Internal bz 1890. Various changes to text output during UNIX install.

Internal bz 1851. There is "Press the return key to continue" in the
UNIX installation which does not need to be there.

In UNIX install, removed -v from tar arguments to stop the displaying
of untarred trees.

2.0.5

Fixed internal bz 1882. When browsing a DSN in the web administrator
if you click down through the pages to display rows from the selected
table the first row in the table is omitted.

Fixed internal bz 1872. In the OOB Client DSN setup on the servers
dialog, you can insert multiple empty entries and the focus does not
move to the inserted row.

2.0.4

Fixed internal bz 1881. If OOB Client logging is turned on and then an
application calls SQLDescribeCol with a NULL ColumnName the exit
logging can attempt to dereference NULL.

2.0.3

Fix internal bz 1864. In the OOB web administrator if you attempt to
browse a data source which has a lot of tables the web administrator
can fail with an access violation. The call to SQLTables has been
restricted to Tables only and this issue fixed by truncating the
list if it gets too long.

Fix internal bz 1866. Prompt during Windows install for a directory to
put OOB Server log files should say not say server and should just
say log and audit files.

Do internal bz 1867. Remove messagebox during install saying essupp.dll
renamed (if it has to be renamed).

Fix internal bz 1668. Remove the create logdir checkbox from the Windows
install because this is implied when a directory which does not exist
is entered.

Fix internal bz 1869. During the Windows install, clicking back from the
registration dialogue resets the Name and Company.

2.0.2

Fix internal bz 1854. The usage message for oobping suggests -u
username and -p password can be used individually when that does not
make sense. Usage message changed.

Fix internal bz 1857. In HP-UX parisc1 distributions the symbolic link
in /usr/local/easysoft/oob/client/lib points up a directory to
libesoobclient.a instead of libesoobclient.sl. This should not affect
anyone as this link was only here so you could build DBD::ODBC
directly with the OOB Client and everyone should be using unixODBC
now.

Fix internal bz 1856. Comment on OOB web admin data sources page
suggest only system data sources are shown because the OOB Server
cannot access user data sources. On UNIX, this is not true as user
data sources may be accessed. The web administrator will still only
show SYSTEM dsns though.

Fix internal bz 1860. If your application connects through OOB to
another OOB and then a driver and the application calls SQLGetInfo for
SQL_DRIVER_NAME when the first OOB has GetInfoPassThru set the
application will get an error.

Fix internal bzs 1862 and 1863. On UNIX, in the OOB web administrator
license page which displays the installed licenses there are two errors:

o the quantity is described as being set to unlimited when the license
  is for unlimited concurrent connection but it is displayed as 0.
o the second field (version) is missing.

2.0.1

Fix internal bz 1858. If you point an OOB Client DSN at an HP-UX or
AIX OOB Server and click on the targetdsn ... button it fails to
retrieve a list of DSNs.

2.0.0

All OOB Enterprise features pulled into OOB2.

Enhancement. New OOB DSN setup dialogue for Windows and this is usable
on some UNIX platforms too (from under the unixODBC driver manager).

Enhancement. You can now view and change the status of the OOB Server
service in the web administrator.

Enhancement 1781. Add new OOB Server setting AllowDSNBrowse (0x8000).
When enabled (the default):

a) the web administrator will display a list of SYSTEM DSNs
   (as it always has).
b) An application at the client end can call the SQLBrowseConnect
   ODBC API and retrieve a list of remote SYSTEM DSNs.
c) The drop down on the TargetDSN field in the OOB Client DSN setup
   dialogue can be populated with a list of SYSTEM DSNs from the
   server.

Do bz 1786. On Linux if you mix a non-MT-safe OOB Client with a
MT-safe unixODBC then if the OOB Client needs to use
SQLGetPrivateProfileString and dlopens libodbcinst.so when
libodbcinst.so is unloaded with dlcose the application will probably
seg fault. This seems to be due on Linux to different or different
sized structures used by dl* when built with or without threads. For
now the OOB will not perform the dlclose.

Fix bz 1779. If you disable AllowDBBrowse setting in OOB web
administrator then select the statistics page then paste in the URL to
the page which would have displayed a DSN the page displayed has left
over output from the statistics page.

Fix bz 1775. A dsn URL in the OOB HTTP Admin was not protected when
HTTPAuthAll was enabled.

Do bz 34. The Access Control Rules in the OOB Server allowed specific
IP addresses or class A, B or C address ranges but could not handle
any ranges outside of A, B or C. This has been enhanced to use the
n.n.n.n/m.m.m.m sytax where n.n.n.n is an IP address and m.m.m.m is a
network mask. In addition the internal algorithms have been speeded up
substaantially.

Do bz 1358. Relax ODBC restriction where in SQLDriverConnect if the
DriverCompletion is anything other than SQL_DRIVER_NOPROMPT and
connection pooling is enabled an HY110 error is returned. The driver
manager copes with this so error changed to an informational.

Fix bz 1773. Fails to handle post data from some browsers.  Results in
split_form_fileds error. Fix in Server.

Do bz 1772. Add product version to the licenses shown in the OOB web
administrator.

Fix bz 1770. SQLBrowseConnect fails to return a full connection string
(which can be used to connect with SQLDriverConnect at a later date)
when SQLBrowseConnect succeeds in connecting to the remote DSN.

Fix bz 1769. Windows installer incorrectly throws the OOB DSN setup
dialogue during the install when InstallShield has passed a NULL
WindowHandle.

Fix bz 1768. Custom install on Windows where Server is unchecked still
installs esoobserver.exe

Fix bz 1766. SQLBulkOperations(SQL_FETCH_BY_BOOKMARK) does not return
bound column data. Fix in OOB client.

Fix bz 1765. SQLFreeStmt(SQL_UNBIND) in the OOB Server does not free
the DataPtr for a bound bookmark (if one exists).

Fix bz 1738. Newly introduced perl configuration checking script is
not passed the flag from the installer to say whether the OOB install
installed unixODBC or not. This is a very minor issue only affecting
the message during the configuration checker.

Fiz bz 1729. The OOB Test DSN dialogue does not take notice of the
Connect Retries setting (the OOB client itself does).

Fiz bz 1725. A few URLs passed to the HTTP server can cause it to hang
and when stop is pressed in the client browser the HTTP server can get
an access violation.

bz 1728. Added text to the Port and HTTPPort descriptions on HTTP
server configuration page clarifying settings which don't take affect
until the server is restarted.

bz 1688. On UNIX platforms supporting SONAME in shared objects set it
in the OOB client.

bz 1685. Reduce output from the install when installing
shared/versioned files.

In the UNIX install remove unnecessary statements about probably
needing to be root to install an ODBC driver into unixODBC if the
installer already is root.

Fix bz 1684. If SQLDriverConnect is called without a DSN and without a
required attribute e.g. Server, TargetDSN it is not trapped by the
client and the SQLDriverConnect fails. This is a regression - it used
to work.

Fix bz 1677. DSN=DEFAULT added to out connection string incorrectly
when out connection string did not contain a DSN, DRIVER or FILEDSN.

Enhancement bz 1662. Change install so that when you are installing
the client it gives you the opportunity to create a OOB client DSN
matching the OOB Server you have installed.

Enhancement bz 1624. Default the server install to No unless the
client was not installed.

Changed the Transport connection attribute so it is not required.

1.5.1
Fix bz 1642. When SQL_NUMERIC columns are bound as SQL_C_DEFAULT they
are returned as numerics instead of strings. This was reported when
accessing numeric columns in EDA-ISAM from Oracle's hsodbc.

Added isql.sh for bz 1613. isql.sh is a wrapper script around
unixODBC's isql which ensures the dynamic linker can find all the
libraries required for Easysoft drivers.

Fix for bz 1623. Installer not clear enough about why you would
install the OOB client ODBC driver under unixODBC.

Fix for bz 1622. People have complained about the number of times
enter has to be pressed "unnecessarily" during the install. Remove all
of these except where warning shown.

Fix for bz 1637. Solaris 10 uses a new method of installing services.

1.5.0

New release to support Solaris 10.

1.4.39

Internal bz 1554. Stop outputting the fact md5sum can't be found -
customers keep asking us about it.

1.4.38

Start menu news group link pointed to old (but still existing) OOB
news group.

Changes for internal bz 1578 - "Microsoft Office X - Microsoft Excel -
Microsoft Query - Not seeing table names". Changes to FAQ.txt,
MAC_OSX.txt and DSN_definition.txt. Office X on MAC OS X needs
DisguiseWide=1 setting in DSNs.

Fix internal bz - "Microsoft Office X - Microsoft Excel - Microsoft
Query - Not returning data". In MAC OS X, values retrieved from the
server as SQL_C_DOUBLE are returned with the wrong endianess. Fix in
libesrpc.dylib.

Fix internal bz 1581 - "iODBC Test not working - Option Type out of
Range".  From iODBC 03.52.0001.0928, the "iODBC Test.command" program
on MAC OS X calls SQLSetConnectOption with option 1051. In iODBC
03.51.0001.0908 this is trapped by the driver manager as invalid and
never gets to the driver.  From 03.52.0001.0928 the driver sees the
call. The OOB client was not allowing option 1051 as it did not know
whether the option was a string or an integer.

1.4.37
Fix internal bz 1439. Start menu item for "License Manager" is spelt
"Licence" incorrectly.

1.4.36
Fix internal bz 1360. If an application sets a connection attribute
before calling SQLConnect/SQLDriverConnect and the setting of that
connection attribute fails in the ODBC driver at the remote end (when
SQLConnect/SQLDriverConnect are called) the OOB Client will seg fault.
No known applications do this but this issue was found due to a bug in
unixODBC 2.2.10 when handling DSN odbc.ini setting
DMConnAttr=attr=value.

1.4.35
unixODBC 2.2.10 fails to remove the SAVEFILE attribute from connection
strings - this should be fixed in the next release of unixODBC.  To
avoid SAVEFILE getting through the OOB to the server end this change
removes SAVEFILE in OOB.

1.4.34
Fixed internal bz 1354. If you call SQLDriverConnect with a connection
string containing the DSN and SAVEFILE attributes OOB reports 01S09
and inconsistent attributes, returns SQL_SUCCESS_WITH_INFO but has
made no attempt to connect.

1.4.33
In MT distributions distribute the MT and non-MT libesrpc and
libessupp shared objects.

1.4.32
Fix internal bz 1322. iodbctest application calls SQLDriverConnect
with WindowHandle=NULL and DriverCompletion=SQL_DRIVER_PROMPT. A
driver cannot through a dialogue without a WindowHandle so ODBC
defines state HY092 for this error. Unfortunately this stops you using
iodbctest.  Remove this restriction in UNIX versions of OOB for now.

1.4.31

The following fixes have been grouped together for 1.4.31 as they are
all related.

Fix internal bz 1243. RowStatusArray is not returned by
SQLSetPos(SQL_ADD, SQL_DELETE, SQL_UPDATE, SQL_REFRESH) if
SQLExtendedFetch was used. Client-only fix.

Fix internal bz 1244. The OOB Server will not return the
RowStatusArray to the RowStatusArray argument in SQLExtendedFetch.
The status will not be returned and instead the OOB Server will error
saying:

  General error: IRD ArrayStatusPtr not set

This affects SQLSetPos(SQL_REFRESH), SQLSetPos(SQL_ADD),
SQLSetPos(SQL_UPDATE), SQLSetPos(SQL_DELETE) and SQLBulkOperations
when used after SQLExtendedFetch. Server-only fix.

Fix internal bz 1245.RowStatusArray is not returned by
SQLBulkOperations if SQLExtendedFetch was used. Client-only fix.

1.4.30
Fix internal bz 1139. If you attempt to use a FILEDSN on UNIX with
unixODBC then unixODBC incorrectly passes FILEDSN on to the OOB client
in the connection string. This FILEDSN then ends up on the server
where it will undoubtably fail in the driver manager at the server
end. Although not an OOB issue, this change removes FILEDSN from the
connection string passed on to the server.  unixODBC post 2.2.9 should
fix this issue properly.

1.4.29
Fix bz 1075. If BlockFetchSize is set we set row array size to
BlockfetchSize in the driver but the driver might not handle values >
1 and return SQL_SUCCESS_WITH_INFO and option value changed. If this
happens we need to adopt the driver's value.

1.4.28
Fix internal bz 1023. Some URLs in the OOB HTTP Server which expect
form data can seg fault if no form data is present.

1.4.27
Fix bz 995 issues in SQLDriverConnect()

If not using SQL_DRIVER_NOPROMPT StringLength2Ptr is returned 1 chr too big.

If using SQL_DRIVER_NOPROMPT InConnectionString is assumed to be
NUL-terminated and may not be. This can cause a read and write buffer
overrun.

1.4.26
Fix bz 836 in OOB Server for UNIX. Even though OOB Server logging is
not turned on you may see /tmp/esoobserver.log_<NNN> (where <NNN> is
the process ID) files being created containing "NULL ltoken in
undo". These should have no side effects other than the creation of
the log files.

1.4.25
Fix internal bz 830. If an ODBC driver returns a negative value in the
StrLen_or_IndPtr in the SQLGetData call this can cause a segfault in
the OOB client. Note that ODBC drivers which do this are broken and
this change in the OOB Server is only likely to move the issue into
the ODBC application. The change is in the OOB Server.

1.4.24
Fix internal bz 792 in the OOB client. If OOB client logging is turned
on and an application calls SQLGetDiagRec with a connection handle the
OOB client will make an additional call to the OOB Server with an
invalid statement handle. This can been seen in an OOB Server log but
other than being one additional call there is no affect on the client
application or ODBC driver nehind the OOB Server.

1.4.23
Fix internal bzs 712, 719 and 720:
SQLSetPos(SQL_ADD) not supported when row-wise binding in use.
SQLSetPos(SQL_ADD) has RowNumber (2ng arg) hard-wired at 1
SQLSetPos(SQL_ADD) does not push Row Operation Array to server

Fix internal bz 778. Symbol clash in EasyRPC with Excel/Query prevents
using the OOB client with Excel.

1.4.22
Fix internal bz 745. An application connecting to a UNIX OOB Server
and sending a lot of non-EasyRPC protocol data can cause the OOB
Server to seg fault. This is a similar issue to bz 650.

1.4.21
Fix internal bz 739. oob/examples/Makefile.darwin missing from 1.4.14
MAC OS X distribution.

Fix internal bz 395. Example files do not build on MAC OS X.

1.4.20
Fix internal bz 664. OOB Client does not specifically support
SQL_DESC_ROWVER although it can still be set/retrieved if BufferLength
is set to SQL_IS_SMALLINT.

1.4.19
Fix internal bz 663. Add support for SQL_ATTR_ANSI_APP. Strictly
speaking it is a driver manager attribute and the OOB client will not
see it but a few people use the OOB client without a DM.

1.4.18
Fix bz 654. The OOB Server web administrator no longer shows data
sources on the data sources page. Introduced bug in 1.4.0.

1.4.17
Fix bz 642. There is a small memory leak in an OOB Server
running multi-threaded if an ODBC diagnostic is posted on an ODBC
environment handle and then the client end application is aborted.

1.4.16
Fix bz 650. Caught exception in the OOB Server when scanned with the
Tenable NeWT "Gain root remotely" family, plugin "Tinyproxy heap
overflow". When the OOB Server is running Multi-threaded it will shut
down.

1.4.15
Fixed internal bz 649. If you telnet to port 8888 multiple times and
simply hit enter the main OOB Server can fail with an exception. This
problem was introduced in 1.4.0.

1.4.14
Fix internal bz 629. Workaround a bug in GetPrivateProfileString in
iODBC which can return a value > 0 when nothing is written into the
output buffer. This can stop SYSTEM DSNs being seen and sometimes
cause random DSN attribute values to be retrieved.

1.4.13
Fix internal bz 625. The OOB client on UNIX (not MAC OS X), since
version 1.4, fails to attempt to use SQLGetPrivateProfileString in the
libodbcinst shared object if the DSN is not found in any of the fixed
places. This would affect you if say you had unixODBC installed in
/usr/local (the default --prefix for unixODBC's configure) as the OOB
client does not look in /usr/local/etc by default. A workaround is to
symbolically link /etc/odbc.ini to wherever unixODBC has set
--sysconfdir to (e.g. /usr/local/etc/odbc.ini).

1.4.12
Fix internal bz 624. If you bind a parameter with a NULL DataPtr and
the StrLen_or_IndPtr = SQL_NULL_DATA the OOB Server process handling
the connection may get an access violation dereferencing a NULL
pointer.

1.4.11
Fix internal bz 576. You cannot retrieve values from a new explicit
descriptor until it is associated with a statement. The MS Conformance
Test does this.

1.4.10
Fix internal bz 602. Fix for bz 476 swapped the memory leak when the
connection is not made to a file descriptor leak.

1.4.9
Fix internal bz 578. During UNIX install if you enter an incorrect
response to the question "Install ODBC-ODBC Bridge Client (y/n) [y]:"
the script re-requests input without reprompting.

Fix internal bz 579 as 578 but for the question "Would you like to
request a OOB Server license now (y/n) [y]:"

Fix internal bz 577. oobping can fail to show ODBC diagnostics when an
ODBC call using a connection handle fails.

1.4.8
Change to Windows dialogue thrown when an application uses "DRIVER="
and asks for prompt. The DSN combo box is now not editable as the DSN
is meaningless in this situation and the combo box and "..."  buttons
are only there to speed up filling in the fields.

1.4.7
Change to EasyRPC to allow a client to obtain and output as an error,
text written to the socket at the server end from the shell run under
inetd.

Also fixed internal bz 776 introduced by fix for bz 476. Some messages
from the OOB Server (like access denied) are not displayed properly by
the client.

1.4.6
Minor changes to OOB client logging.

1.4.5
Fix internal bz 566. Message when MaxClientConnect hit contains
"connections" in the plural when there it only 1 connection and is
missing a '.'

Changed licclient (UNIX only) to insist on values being entered for
Company, Email and Name when obtaining a license. (bz550).

1.4.4
Fix internal bug bz 547. Accessing the data sources page in the OOB
Server for interix crashes the OOB server.

Improved mxODBC.txt file documenting how to use OOB under Python and
mxODBC.

1.4.3
Fix internal bugs bz 543. Not answering 'y' or 'n' to "Continue with
install? (y/n) [y]:" causes the install to terminate.

1.4.2
Fix bz 533 in OOB Server. The OOB Server changes SQL_WCHAR bound input
parameters to SQL_CHAR preventing parameterised unicode inserts.

1.4.1
Fix internal bz 511 in OOB Server. Possible memcpy to NULL if a
parameter not bound.

1.4.0 (December 2003)
=====================

Fix bz 497. Possible read off the end of a malloced buffer in snprintf
can lead to access violations on OpenVMS when ODBC diagnostics are
posted by the OOB client.

Fix bz 476. If you call SQLDriverConnect() but the actual socket
connect call to the OOB Server fails (e.g. connection refused) memory
is leaked.

Fix bz 474. If you call SQLSetDescField(SQL_DESC_NAME) and this call
succeeds in the remote ODBC driver, your ODBC application will get
SQL_ERROR and no diagnostics.

Fix bz 472. If an error in the network code for the OOB client occurs
a 08S01 state with error text "Communication link failure" is posted
to the ODBC diags but no further detail outlining the nature of the
network error.

Fix bz 459. The OOB client failed to swap bytes in SQL_C_WCHAR fields
when retrieving them to a platform with different endianess to the
server.

Fix bz 425. There was an unprotected linked list walk in the OOB
multi-threaded client which could cause strange problems if the
network connection was lost when the application had created multiple
threads.

Fix internal bz 450. Missing "</td>" in data sources output in the web
admin.

Fix bz 449. There is a one time leak of two thread handles in the
Windows OOB Server.

Fix bz 320. Windows install. Clicking on Help in the OOB DSN dialogue
does not display help during the install.

Fix bz 386. Inconsistent naming for text files in UNIX. Some had .txt
extensions and some did not. Now all have .txt extension.

Fix bz 443. On Windows if the call to GetVersionEx() in the server
fails a message is logged to the eventlog as INFORMATION type instead
of ERROR type.

Fix bz 2 - some abort() calls in the OOB HTTP Server. As far as we are
aware these have never been hit by anyone.

Added uninstall instructions for xinetd to UNINSTALL.txt

Fix bz 348. Invalid IP addresses (like 192...) are allowed in the
OOB's AllowList and DenyList. Also, if you delete an IP address that
happens to be a substring of another IP address earlier in the list
the wrong address is delete.

Fix bz 429. There was no text on the OOB's HTTP Server Security page
describing how to delete entries.

Fix bz 428. The OOB Server service on Windows may fail to STOP in time
if it was previously in a PAUSED state.

Fix bz 7. On UNIX, if a [demo] DSN already exists the OOB's [demo] DSN
will not be installed. It now displays the conflicting DSN and allows
the option to overwrite.

Fix for bz 426. If binding bigint input parameters with PARAMSET_SIZE
> 1 the second and subsequent big ints in the array do not get
inserted correctly. OOB client-only issue.

======================================================================

1.3.3
1.3.3 differs from 1.3.2 in that it includes all the changes below
from 1.2.39 to 1.2.41 and also includes:

Change to Windows installer re licensing. OOB 1.3 required a new
license and installed itself in such a way that the license manager
contained two entries in the product drop down one saying "Easysoft
ODBC-ODBC Bridge" and the newer one saying "Easysoft ODBC-ODBC Bridge
1.3". This lead to some confusion as

o the License Manager also displayed the previous license for OOB
  1.0 - 1.2 - which is invalid for 1.3.

o when the existing license did not work customers were picking
  "Easysoft ODBC-ODBC Bridge" from the drop down instead of
  "Easysoft ODBC-ODBC Bridge 1.3".

The installer now removes the old "Easysoft ODBC-ODBC Bridge" entry
(although the license itself for 1.0 - 1.2 remains intact) and
replaces it with a new entry which will only show 1.3 licenses.

1.3.2
1.3.2 differs from 1.3.1 in that it includes all the changes below
from 1.2.37 to 1.2.38.

1.3.1
1.3.1 differs from 1.3.0 in that it includes all the changes below
from 1.2.21 to 1.2.36.

1.3.0 (September 2003)
======================

1.3.0 is the same as 1.2.20 except it supports Windows 2003 Server

======================================================================

1.2.42
Fix for bz 398 - oobping can show the "time for execution" with the
milliseconds incorrectly. If a 1 or 2 digit millisecond time is shown
you need to add two or 1 zeros in front of the milliseconds.
e.g. 0.50s is really 0.050s and 0.5s is really 0.005s.

1.2.41
Fixes for bz 387, 388, 389, 390, 391 and 392. All text file
changes.fixes in the text files distributed in the doc directory.

1.2.40
Fixed BZ385. README.txt that comes with OOB for UNIX contains a
pointer to the old (although still existing) OOB news group. The
current news group is
news://news.easysoft.com/easysoft.public.odbc-odbc-bridge.

1.2.39
Fixed BZ379. References to ai.easysoft.com in INSTALL.txt should now
be license.easysoft.com.

1.2.38
Fix bz 323 in OOB Windows DSN setup dialogues which can fail to show
the last word in an error message in the test dialogue. Windows OOB
client only.

1.2.37
Fix bz 322 in OOB HTTP Server pages where the help button and link
next to Path on the configuration screen is missing. Windows Server
only.

1.2.36
Fixed BZ288. Clients seeing SQL_INVALID_HANDLE error from the OOB
Server from calls using a valid environment handle. This only seems to
happen under heavy load but in theory could happen any time. This only
affects Windows Servers with the OOB Server running Mulit-threaded
(the default).

1.2.35
Various changes to licclient on UNIX.
  Use license.easysoft.com instead of ai.easysoft.com.
  Fix contact details in license_request.txt.
  Just display installed products.
  Save name, email etc and offer as default when obtaining multiple
    licenses.
  Fix small memory leak.

1.2.34
Enhancement BZ273. MapExecDirect connection attribute and
odbc.ini/registry setting to allow OOBs mapping of SQLExecDirect to
SQLPrepare/SQLExecute for ODBC 2.0 applications to be configured. See
DSN_definition.txt and example_odbc.ini.

1.2.33
Enhancement BZ270. ListenBacklog setting added to the
esoobserver.ini/registry and HTTP administration server. This allows
the listen backlog passed to listen() to be specified rather than
using the previous hard-wired value of 20.

1.2.32
Enhancement BZ91.  xinetd configuration file for the OOB Server now
contains a description so the RedHat service tool displays the service
description.

1.2.31
Fix minor internal bug ID 2421 - missing '-' in reference to "ODBC
ODBC Bridge"

1.2.30
SGI re-port

1.2.29
On Windows, in the OOB client, use SO_REUSEADDR option on socket
because Windows only seems to return ports in the range 1024 to 5000
and they stay in use for up to 3 minutes after a closedown.

1.2.28
Added SQLDataSources.c example to the examples directory.

1.2.27
Fixed internal bug ID 2377. The demo DSN created in UNIX is missing
the Description attribute. This does no harm.
1.2.26
Bug ID 2371. OOB does not handle some ODBC 2.0 interval types. This
build adds the ODBC 2.0 interval types -80 to -92.

1.2.25
Enhancement 2369. If OOB client logging is turned on and an
application calls SQLGetDiagRec the OOB client outputs the results to
a trace file.  This enhancement adds the value of the
SQL_DIAG_COLUMN_NUMBER field to the trace which is invaluable when
tracking down problems with parameterised SQL or bound columns.

1.2.24
Fix bug ID 2362. When the OOB Server is running in multi-threaded mode
in Windows and an exception occurs it closes down. However, even if
the service manager is set to restart it, the service is not restarted
because the service manager believes the server shut down cleanly.

1.2.23
Fix bug ID 2361. In the OOB client DSN setup dialogues for Windows you
cannot enter multiple pairs of ports/servers for connecting to OOB
Enterprise.

1.2.22
Fix internal bug ID 2351. The OOB setup DSN dialogue for Windows omits
displaying any error text if the entire message text is less than 70
characters in length. e.g. you get:

error1: State=HY000. NativeCode=0
  [Easysoft ODBC(Server)]

instead of:

error1: State=HY000. NativeCode=0
  [Easysoft ODBC(Server)]
  General error: No license slots available

1.2.21
Special build - not generally released.

1.2.20
Fixed bug ID 2340. printf in OOB client callback outputs "RPC Error
callback with n - xxxxxxx" where n is a number and xxxxxxx is usually
a socket error string. Removed printf.

1.2.19
Fixed internal bug ID 2335. When MaxClientConnect is reached the error
message returned does not mention MaxClientConnect and is missing a
space.

1.2.18
Fixed internal bug ID 2212. License question asked twice when OOB
installed as part of EDA-ISAM.

1.2.17
Fix bug ID 2305. Licensing errors caused output to esoobserver.log on
Windows.

Fixed bug ID 2273. Random leak of a handle, a small amount of memory
and a potentially a license slot in the Windows version of the OOB
Server. If you were suffering from this you would see messages such as
"(1051286402) Failed to release license slot - No error text
available, return code 9" in the esoobserver.log file (usually in
c:\temp but it will be wherever LogDir points to).

1.2.16
Fixed bug ID 2243 - oobping fails when server is specified as an IP
address on sparcv9 platforms and the 64bit OOB distribution.

1.2.15
Fixed internal bug ID 2225. Changes in 1.2.13 cause a message to be
written to LogDir\esoobserver saying "Warning: Not Pooling and
processing dbc %d nnnnn" where nnnnn > 1 and usually a large
number. It is not causing any problem or an indication of any problem
other than it appears in the log file.

1.2.14
Fixed internal bug ID 2220 - missing description on HTTP web admin
page describing method of disabling OOB Server Timeout.

1.2.13
Fix internal bug ID 2150. If a multi-threaded OOB Server Service on
Windows detects an exception in a thread handling a connection it
should close the service down. One exception in a child thread nearly
always results in another elsewhere which can lead to strange behavior
not always immediately detected whereas a service shutdown is
immediately apparent and safer.

1.2.12
Fixed internal bug ID 1277. Some requests for handled URLs but with
malicious GET/POST data can return an error to the HTTP client without
and HTTP protocol header.

1.2.11
Fixed internal bug ID 2147. Some possible file I/O errors when
displaying gifs or pngs are not reported back to the HTTP client.

1.2.10
Fixed internal bug ID 2146. Any errors returned by the OOB HTTP Server
contain the OOB Server version which is incorrectly returned as 1.0
instead of 1.2.

1.2.9
Fixed internal bug ID 2145. It is possible to cause a
segfault/access_violation in the OOB HTTP Server by sending malicious
requests for some handled URLs that require GET/POST data and setting
the GET/POST data to unexpected strings.

1.2.8
Fix bug ID 2112. You cannot retrieve (via SQLBindCol) an IEEE negative
0 to OpenVMS where negative 0 is not allowed in a gfloat.

1.2.7
Various minor changes to the UNIX install scripts some for better
handling of errors.

1.2.6
Fixed internal bug ID 2073. Install on Sinix can mistakenly believe
untar operations might have failed because tar -v output on Sinix goes
to stderr.

1.2.5
Fixed internal bug ID 2075. License requests should be emailed to
license@easysoft.com and not support@easysoft.com. Fixed in
install_license shell installer script.

1.2.4
Added "groups=yes" to OOB Server configuration added for xinetd.
Without this some xinetds (the one standard with MAC OS X 10.2)
outputs a setgroups warning and closes the socket without running the
OOB Server.

1.2.3
Fixed potential problem in UNIX OOB Server which could raise a SIGPIPE
when the client disconnects. We have not seen this happen or had it
reported to us.

1.2.2
Small reduction in memory use in the OOB Server for ODBC
descriptors.

1.2.1
Fixed internal bug ID 2060. If an application exits without ODBC
disconnecting the OOB Server has to clean up the server side of the
ODBC connection to the ODBC driver. When this happens the OOB Server
internal ODBC statement structure may be leaked. This only applies to
servers running standalone (i.e. Windows, and UNIX OOB Servers running
with the standalone argument which is not the default - inetd is).

1.2.0 (March 2003)
==================

Consolidate all 1.1.0.n changes into a new minor release.

======================================================================

1.1.0.27
Fixed internal bug ID 1977. If you elect to install the demo DSN
during a UNIX install and you already have a DEMO DSN then this
install replaces your existing one (which may not have been for OOB).

1.1.0.26
Fixed internal bug ID 1988. OOB Server configuration changes made via
the OOB web admin are not acted on by the OOB Server until 5 seconds
of no incoming connections elapses.

1.1.0.25
Fixed internal bug ID 2039. Link to OOB news group in the OOB web
administrator points to the old da2k OOB news group instead of the new
one. Both still exist.

1.1.0.24
Fixed internal bug ID 2027. Post installation message in the Windows
install has a now out of date URL to the FAQ pages.

1.1.0.23
Fixed internal bug ID 1968.  The Windows DSN setup dialogue used by
the OOB client when DRIVER=xx is used (e.g. from MSQuery) is missing
the Easysoft Logo and help buttons.

1.1.0.22
Fixed internal bug ID 1962.  Windows version of OOB contained an out
of date manual in help file format.

1.1.0.21
Fixed internal bug ID 1954. In the Windows install if a dialogue is
shown asking for the Log/Audit path and you click back you don't go
to the previous dialogue.

1.1.0.20
FAQ updates - too numerous to mention.

1.1.0.19
Fix internal bug ID 1956. The FTP location for unixODBC is now
ftp://ftp.easysoft.com/pub/unixODBC.

1.1.0.18
Fixed internal bug 1790. SQLGetDiagRec can attempt to contact the
server if the connection dies and the application asks for the error.
This could happen if the OOB Server timed out an inactive connection.

1.1.0.17
Fixed internal bug ID 1948. ODBC diagnostics/errors associated with a
environment handle by the OOB client are unobtainable by an ODBC
application when OOB is not connected to an OOB Server.

1.1.0.16
Fixed internal bug ID 1947. SQLError returns diagnostics/errors in the
wrong order - back to front.

1.1.0.15
Fixed bug ID 1944. SQL_TINYINT output parameters are not returned to
the client.

1.1.0.14
Fixed bug ID 1939. SQL_BIGINT input parameters are not passed to
servers with different endianess properly.

1.1.0.13
Fixed internal bug ID 1933. If SQLAllocHandle fails when allocating a
dbc then the OOB demo application does not show the ODBC diagnostics.

1.1.0.12
Minor wording change on the /hosts.html web page in the OOB HTTP web
admin.

1.1.0.11
Fixed internal bug ID 1281. ODBC diagnostic text sometimes too long
for OOB setup dialogue text box.

1.1.0.10
Internal logging changes only.

1.1.0.9
Fixed bug ID 1843. If you use a new 1.1.0.0 OOB client with an older
(e.g. 1.0.0.27) OOB Server you will not be able to connect and you get
errors like "RPC Error callback with 0 - RPC-NONAME Function name not
in dispatch table". The workaround is to downgrade the client to a
1.0.0.n release or upgrade the server to a 1.1.0.n release. This fix
avoids any workaround.

1.1.0.8
Fixed internal bug ID 1834. On Windows the installed shortcut to the
OOB Web Administrator uses "http://localhost:8890". This works on most
machines as the hosts file usually contains an entry for "localhost"
pointing to 127.0.0.1. However, in more recent IE versions you can set
it up to use a proxy server but omit to set the "bypass proxy server
for local addresses" in which case the shortcut does not work.  Fixed
by changing it to "http://127.0.0.1:8890".

1.1.0.7
Fixed internal bug ID 1831. Some potential failures during the OOB
Server Service startup on Windows do not signal the Service Manager
that the service failed to start. If one of these errors occurs the
Service Manager will wait minutes before indicating the service failed
to respond to the start operation and will not be able to indicate
what the problem was.

1.1.0.6

Fixed internal bug ID 1828. If the Windows service fails to start the
OOB Server because of an error other than a system call failing
(e.g. missing expected registry setting for the OOB Server) the server
was returning the result of GetLastError() to the service manager in
the dwWin32ExitCode. This causes the service manager to report that
the service failed to start for unusual reasons e.g. "Error 2140: An
internal Windows NT error occurred". The OOB Server now sets
dwWin32ExitCode to ERROR_SERVICE_SPECIFIC_ERROR and sets the
dwServiceSpecificExitCode to a service specific error number (these
will be listed in the FAQ). This problem was found as a result of an
internal audit.

1.1.0.5
17-Jan-2003
Fixed internal bug ID 1829. There is an exceedingly small possiblity
an internal function for reading ini/registry settings could cause a
segfault when the OOB Server is starting up. We have not seen this
happen or had it reported to us.

1.1.0.4
10-Jan-2003
Fixed bug ID 1748. /usr is not one of the default places to search for
an existing unixODBC. This makes installation on RedHat 8.0 suggest
the unixODBC that comes with OOB should be installed when it is not
necessary.

1.1.0.3
10-Jan-2003
Added OpenOffice.org document.

1.1.0.2
8-Jan-2003
Fixed bug ID 1804. Restarting the OOB Server service from the Service
Manager (instead of stop then start) can lead to multiple instances of
the OOB HTTP Administrator process. The workaround is to use stop then
start rather than restart.

1.1.0.1
8-Jan-2003
Fixed bug ID 1802. The ImagePath registry setting for the OOB Server
Service contains a double backslash (\\) which should be \. No
indication that this was causing anyone a problem.

1.1.0.0 (Dec 2002)
==================
New minor release consolidating all the changes since 1.0.0.43 that
were never released.


At this point we changed the way changes are logged.

======================================================================

Changes since 1.0.0.43
======================

19-Dec-2002
Fixed long standing internal bug ID 1788. SQLGetConnectAttr for
SQL_ATTR_CONNECTION_DEAD was causing a round trip to the server which
the ODBC specification says it shouldn't.

Various changes to the way the OOB client handles OOB Server
inactivity timed out connections.

Added the OOB performance white paper to the distribution.

13-Dec-2002
Fixed bug ID 1783. The unixODBC distributed with OOB is missing
sqlucode.h from /usr/local/easysoft/unixODBC/include. This will cause
a particular problem with Perl DBD::ODBC 1.0 as it requires it.

10-Dec-2002
Enhancement 1773 - add support to oobping to time the requested
actions. New -e switch to oobping.

5-Dec-2002
Additions to the instructions for using OOB under Domino in
LotusNotesDomino.

4-Dec-2002
Fixed bug in OOB 1.0.0.40 for Solaris/X86 which includes a unixODBC
which fails to use RTLD_GROUP in the dlopen() call. This causes a
problem when the Easysoft Oracle ODBC driver is used under the OOB
Server running on Solaris/X86.

21-Nov-2002
Fixed bug ID 1747 in Windows installer.  If licensing is unchecked
during a custom install then the start menu Easysoft Data Access
Licensing => Documentation link is still installed.

Changes since 1.0.0.41
======================
18-Nov-2002
Fixed internal bug ID 1740. When installing the OOB Server on a new
Windows XP machine (i.e. one that does not have OOB installed already)
you may see a Severe error box containing "STR_ERROR_UNKNOWN, entry
not found in string table". The install works fine even though this
happened. This error dialogue should no longer be seen in this
situation.

Fixed internal bug ID 1728. It is possible for the OOB client DSN
dialogue (the one with the combo box) to display DSNs for which
SQLGetPrivateProfileString cannot get attribute values. This is due to
the OOB client calling SQLDataSources and ignoring the current setting
of SQLGetConfigMode(). Fix in Windows client.

14-Nov-2002
Fixed internal bug ID 1730 - Windows OOB client ignores
SQL_DRIVER_PROMPT if sufficient attributes are passed in the
connection string to allow connection to the OOB Server and server
DSN.

Fixed internal bug ID 1727. Tabbing order in the Windows OOB client
ODBC driver dialogue was incorrect.

Fixed internal bug ID 1729 - "General Error (HY000) for
SUCCESS_WITH_INFO message in SQLDriverConnect". The OOB Server for
Windows returns SQL_SUCCESS_WITH_INFO from SQLDriverConnect if you
attempt to connect to the MS Access driver when the OOB Server is
running Multi-Threaded (this is because Jet prior to Jet 4 was not
thread-safe).  The error state accompanying this diagnositc was HY000
when it should be 01000.

11-Nov-2002
Fixed bug ID 1726 - symbolic links created in oob/client/lib in the
OOB thread-safe distribution for Tru64 are incorrect.

Added Snort-1.9.0.PATCH to the OOB distribution. This is a patch to
make ODBC work in Snort 1.9.0. snort text file included with OOB
updated to explain the patch and the problems fixed.

7-Nov-2002
Fixed bug ID 1717. The Tru-64 thread-safe distributions of OOB contain
shared objects having dependencies on libpthread.so and
libpthreads.so.  This is incorrect. The only reported problem we have
had in respect to this is a core dump in the OOB client when OOB
logging is turned on.

30-Oct-2002
Fixed internal bug ID 1705 - oobping does not add -u username and -p
password to the -d connection string.

25-Oct-2002
Enhancement 1691. Cache results of SQLGetInfo calls in the OOB
client. All numeric and Y/N results are cached except
SQL_DATA_SOURCE_READ_ONLY which is used in PHP for testing persistent
connections.

Fixed bug ID 1615. Conversions from bigints to strings on AIX 4.3+
uses incorrect sprintf format. This affects OOB's BlockFetchMode only.
The problem is reduced precision when usin BlockFetchMode.

24-Oct-2002

Fixed internal bug ID 1688. Potential access violation when setting a
connection attribute to an empty string with ValuePtr!=NULL and
*StringLengthPtr=0. SQL Query Analyser can do this although we never
saw it actually create an access violation.

23-Oct-2002

Fixed internal bug ID 1677. OOB incorrectly stops applications from
calling SQLCopyDesc, SQLSetStmtAttr(SQL_ATTR_APP_ROW_DESC) and
SQLSetStmtAttr(SQL_ATTR_APP_PARAM_DESC) if the application asked for
ODBC behavior. Fix requires new OOB client and server.

Fixed internal bug ID 1676. SQLCopyDesc always returns SQL_ERROR.  Fix
requires new OOB client and server.

21-Oct-2002

Fixed internal bug ID 1675. If the application allocates an explicit
descriptor, makes it one of the current descriptors in a statement
then frees the explicit descriptor the error "Attempt to free a
descriptor xxxxxxx not in list" is returned from
SQLFreeStmt(SQL_DROP). Fix in OOB Server. Only application we've seen
do this is a linked server under MS SQL Server.

Fixed internal bug ID 1673/1674. Segmentation fault possible. If the
application binds columns and sets ROW_BIND_OFFSET_PTR, then calls
SQLSetPos(SQL_UPDATE) the OOB client may seg fault. Only application
we've seen do this is a linked server under MS SQL Server.

Fixed internal bug ID 1647. If a parameter is bound, the
OctetLengthPtr and IndicatorPtr are set to different addresses via
SQLSetDescField calls and IndicatorPtr points to 0 the OOB client
should use the value at OctetLengthPtr - it didn't. Only application
we've seen do this is a linked server under MS SQL Server.

11-Oct-2002
Various minor modifications to licshell and licclient on UNIX - better
error reporting and warnings mostly.

10-Oct-2002
Fixed internal bug ID 1337. Reinstalling Easysoft products on FreeBSD
can lead to duplicate paths being added to ldconfig_paths in
/etc/defaults/rc.conf.

Fixed internal bug IDs 1587 and 1588 for Mac OS X. The OOB
distribution tar file and the tar files contained in the distribution
tar file have names longer than 31 characters. This causes problems
for some of the Darwin GUI components which will truncate them
preventing installation.

9-Oct-2002
Fixed internal bug ID 1560. Mac OS X 10.2.n comes with inetd AND
xinetd running as standard for "compatability period". Install spots
this and asks which to use without offering any advice.

20-Sep-2002
Fixed internal bug ID 1486 (AIX-specific). Unused shared objects are
not unloaded before OOB is installed. This may cause untar warnings
because AIX holds shared objects in memory even though the reference
count is 0.  Added a slibclean to install.

17-Sep-2002
Fixed internal bug ID 1493 - potential buffer overflow when loading a
template file in the OOB HTTP administrator. We've not actually seen
this happen but if someone was to replace one of the template files
with a large file it could have happened.

11-Sep-2002
Fixed bug ID 1484. In UNIX, if the HOME environment variable is not
set then odbc.ini and .odbc.ini in the current users home directory
are not examined for DSNs. This bug was introduced 8 Oct 2001. The OOB
client is supposed to examine odbc.ini/.odbc.ini files in the HOME env
var and if HOME env var is not found get the current user's home
directory from the passwd file.

Changes since 1.0.0.40
======================
23-Aug-2002
Fixed internal bug ID 1448. OOB Service for windows is not
incrementing the checkpoints often enough. We have not had any reports
of this causing a problem when starting/stopping the OOB Service.

Fixed problem in oobping which has DSN=demo hard-wired as the
connection string and hence ignores the connection string specified on
the command line with -d.

14-Aug-2002
Small optimisation to the OOB Server which reduces the number of calls
to SQLDescribeCol/SQLNumResultCols if an application is repeatedly
calling SQLExecute with different parameters.

Optimisation in SQLBindParameter in the OOB client. If a parameter is
being rebound with the same arguments as before (other than
ParameterValuePtr and Strlen_or_IndPtr) there is no need to make the
RPC call to the server.

9-Aug-2002
Added preliminary support for the following connection attributes
(virtually all DB2):

SQL_ATTR_DISCONNECT_BEHAVIOR
SQL_ATTR_ENLIST_IN_DTC
SQL_ATTR_ENLIST_IN_XA
SQL_ATTR_WCHARTYPE
SQL_ATTR_LONGDATA_COMPAT
SQL_ATTR_CURRENT_SCHEMA
SQL_ATTR_CONNECTTYPE
SQL_ATTR_SYNC_POINT
SQL_ATTR_CLOSE_BEHAVIOR
SQL_ATTR_DB2EXPLAIN
SQL_ATTR_DB2ESTIMATE
SQL_ATTR_MAXCONN
SQL_ATTR_CONN_CONTEXT
SQL_ATTR_CLISCHEMA
SQL_ATTR_INFO_USERID
SQL_ATTR_INFO_WRKSTNNAME
SQL_ATTR_INFO_APPNAME
SQL_ATTR_INFO_ACCTSTR
SQL_ATTR_CONNECT_NODE
SQL_ATTR_DB2_SQLERRP

8-Aug-2002
Fixed internal bug ID 1440. If there are input bound parameters the
OOB client may call SQLNumParams every time SQLExecute is called even
though the SQL has not changed. This was a minor inefficiency which we
doubt anyone will notice.

31-Jul-2002
Fixed internal bug ID 1434. Driver specific connection attributes of
type SQL_IS_INTEGER are not supported. Workaround is to use
SQL_IS_UINTEGER.

20-Jun-2002
Fixed internal bug ID 1400 in OOB client. A small optimisation to
prevent the OOB client checking for output bound parameters every time
SQLExecute etc was called was not working properly. This optimisation
makes very little difference to any applications.

18-Jun-2002
Fixed bug ID 1388. You cannot bind an input parameters as
SQL_C_BIT if SQL_ATTR_PARAMSET_SIZE > 1 and BufferLength in the
SQLBindParameter call for that parameter is 0.

17-Jun-2002
Fixed internal bug ID 1303. Cannot bind columns as SQL_C_GUID. Fix
requires new client and server.

10-Jun-2002
Fixed internal bug ID 1394. SQLGetInfo in the OOB client did not
support querying SQL_CONVERT_GUID, SQL_CONVERT_WCHAR,
SQL_CONVERT_WLONGVARCHAR, SQL_CONVERT_WVARCHAR and
SQL_ODBC_SAG_CLI_CONFORMANCE.

31-May-2002
Part fix for internal bug ID 1386 - "double byte NUL not returned from
SQLGetData(SQL_C_WCHAR)". This bug ID probably applies to SQL_WCHAR
bound columns as well. Current fix is for SQLGetData only and the fix
applies to the server.

Changes since 1.0.0.39
======================
14-May-2002
Fixed internal bug ID 1385. BlockFetchMode (in OOB Client) does not
work correctly with result-sets containing SQL_BIGINTs. The first row
is correct but subsequent rows up to BlockFetchSize are garbage.

25-Apr-2002
Fixed internal bug ID 1304. In the Windows OOB DSN test dialogue any
ODBDC errors displayed look untidy with wrapped text and it is
difficult to visually split up the state, native error and text.

Fixed internal bug ID 1246. untarring unixODBC during an install on
unixware can lead to alot of untar warnings if the target system does
not have a user called "sources". New arguments to tar to ignore the
saved uid/gid.

Fixed internal bug ID 1284. Add knowledge of MS SQL Server specific
data type, sql_variant.

24-Apr-2002
Fixed internal bug ID 1351. On Windows platforms, if LogDir is set to
a path ending in '/' then it is classed as invalid.

Fixed internal bug ID 1370. If an exception occurs in the UNIX OOB
Server (e.g. SIGSEGV) the exception file is always written to /tmp
instead of to LogDir.

Fixed bug ID 1361. Disabling authentication in the UNIX OOB Server
does not have any affect.

Fixed internal bug ID 1349. You can enter invalid IP addresses in to
the security page of the OOB Server web administrator.

Fixed internal bug ID 1344. OOB web administrator can crash if it gets
a request without the HTTP version.

23-Apr-2002
Fixed internal bug ID 1372. If you turn on BlockFetchMode and the
application makes multiple calls to SQLGetData for the same column
repeatedly with small buffer sizes (to retrieve the entire column in
parts) the OOB client will continually return the first "BufferLength"
bytes (i.e. the application will probably loop). We are not aware of
any applications that do this.

11-Apr-2002
Minor alterations to the demo program for Copyright dates and opening
instructions.

Changes since 1.0.0.38
======================

21-Mar-2002
Internal bug ID 1359.
Fixed minor bug in OOB HTTP Server for Windows which may terminate due
to a severe error but the error is not seen when the server is running
as a Windows service.

8-Mar-2002
Internal Bug ID 1353.
Fixed minor error reporting problem in MultiThreaded OOB Server for
Windows which could report the wrong error code if _beginthreadex()
fails.

Internal bug ID 1354.
In a MultiThreaded OOB Server for Windows, if a call to create a
thread fails for any reason other than TOOMANYTHREADS, the OOB Server
service will shut itself down. This is undesirable as it is not a
fatal error.

27-Feb-2002
Fixed bug in libesrpc.so which would mean Irix, Sinix/MIPS, PA-RISC
and Solaris/X86 platforms communicating with platforms of different
endianess would get floats and doubles incorrectly when using
BlockFetchMode or binding the float/double columns.

14-Feb-2002
Fix bug ID 1343. Output bound SQLBIGINT parameters are not retrieved
properly. We are not aware of any commononly used applications using
this but some customer code was using SQLBIGINT output parameters.  A
new client and server is required for this fix.

Changes since 1.0.0.37
======================

11-Feb-2002
Fix internal bug ID 1340. Race condition in Windows OOB Server when
running multi-threaded which may occur under heavy load. Signs of this
problem are the RPC_FUNCFAIL error in the OOB client, RPC_MISSPARAM
error in the OOB Server (event log), or send/receive/connect errors in
the OOB server saying "socket operation on non socket".

8-Feb-2002
Fix internal bug ID 1338. If multiple queries are submitted in a
single prepare, columns are bound for the result-set, data is fetched,
SQLMoreResults() is called for the second result-set and this
result-set contains fewer columns but the previous bound columns are
left bound the OOB client will write into the pointers passed to
SQLBindCol even though the application may have freed them up.  The
09multi.t test in DBD::ODBC 0.34 does this. A new OOB client and
server is required for this fix as both of them have the same problem.

7-Feb-2002
Fix internal bug ID 1335. If you install the OOB Server on a UNIX
machine and a service other than OOB is already using port 8888, you
are prompted for a number port number but the service is still added
for port 8888.

1-Feb-2002
Fixed internal bug ID 1333. If using fallback servers/ports in the
odbc.ini leading spaces on the second and subsequent server names and
ports are retained. This can lead to failures looking up host names.
To work around this simply remove spaces on the comma separated list.

Fixed internal bug ID 1334 - Windows specific. If the OOB Server is
running MultiProcess the child processes inherit the listening socket
and its listenable state! This means that if there are existing
connections when the OOB Server service is shut down, the remaining
child OOB Servers keep the port (8888 by default) in a listenabele
state. New clients attempting to connect, hang, waiting for the now
non-existant server to call accept().

31-Jan-2002
Fixed bug IDs 1330 and 1331. SQLSetPos(SQL_ADD) does not return the
bookmark or the row status array.

Changes since 1.0.0.35
======================
28-Jan-2002
Fixed internal bug ID 1327 - if the driver's SQLFetch returns
SQL_SUCCESS_WITH_INFO the application cannot retrieve the
informational diagnostic through OOB.

24-Jan-2002
Fixed internal bug ID 1322 - SQLSetPos/SQLBulkOperations do not pass
the Row Operations Array to the server properly.

23-Jan-2002
Fixed internal bug ID 1317. If you do a custom Windows install and
deselect the Licensing component the install script may still try and
run the License Administrator.

Fixed bug ID 1310. SQLSetPos(SQL_UPDATE) will fail if a bookmark is
not bound.

16-Jan-2002
Fixed some bugs found with IBMs odbctest test suite.

o internal bug ID 1286 - SQLBrowseConnect problems.
  If a NULL OutConnectionString is passed in the OOB client may
    attempt to write to it without checking whether it is non-NULL
    first.
  If OutConnectionString, BufferLength, and StringLength2Ptr args to
    SQLBrowseConnect are all NULL|0 and the IncConnectionString is not
    sufficient to connect, the OOB client was returning SQL_ERROR
    instead of SQL_NEED_DATA.
  There was also an issue in the essupp shared library/DLL.
o internal bug ID 1288 - if you use row bound column binding and bind
  a column as SQL_C_DEFAULT for a column which has an inherent length
  then the OOB client can corrupt memory when the row is fetched.
o internal bug ID 1289 - BlockFetchMode segfault when columns are
  bound by calling SQLSetDescField instead of SQLBindCol.
o internal bug ID 1292 - SQLGetDescField() was not setting
  *StringLengthPtr for fixed-length identifiers.
o internal bug ID 1291 - SQLGetDescField() was not returning the
  trailing NUL on string identifiers.
o internal bug ID 1294 - if an application attempts to retrieve an
  Identifier value with SQLGetDescField() from a descriptor record
  which does not exist the OOB client returned SQL_ERROR instead of
  SQL_NO_DATA.
o internal bug ID 1295 - OOB did not handle binding columns/parameters
  via SQLSetDescRec() properly.
o Count field in the descriptor not incremented if SQL_DESC_DATA_PTR
  set in a higher record than Count already set to. Leads to the
  client thinking there are no bound columns when bound columns are
  set up using SQLSetDescField. (Fix in client AND server).
o internal bug ID 1301. When testing if we can enter BlockFetchMode
  the wrong BindOffsetPtr is tested. Also, if you previous have the
  RowBindType set the OOB client does not reset it. If you set the
  RowBindOffsetPtr or the RowBindType without resetting them when
  finished you need to get this fix if you intend using
  BlockFetchMode.

11-Jan-2002
When testing an OOB DSN in the DSN Setup dialogue and server
authentication fails provide test pointing to LogonUser/LogonAuth as
the problem. Windows only.

An "s" was missing from the support email address on the OOB web
administrator information page.

10-Jan-2002
Fixed internal bug ID 1275. Invalid HTTP header and HTML sent back to
browser if invalid or duplicate IP address added to access control
list via the OOB HTTP admin.

Fixed internal bug ID 1276. If access control rule set up to deny
certain clients access to a server and a client repeatedly attempts to
connect the server can get stuck in a blocking read on a still open
socket. The bug is in the client - which fails to close the socket.

9-Jan-2002
Fixed internal bug ID 1265. Reinistalling the OOB Server over the top
of an existing OOB installation on UNIX running on a machine using
xinetd leaves the esoobserver xinetd configuration file used by xinetd
correct but with each line commented out.

Fixed internal bug ID 1266. xinetd 2.3.3 supplied with RedHat 7.1 has
removed support for SIGUSR1. Previous versions of xinetd (certainly
2.1.8) supported SIGUSR1 which did a soft reconfiguration. OOB install
now changed to do SIGUSR2 - hard reconfiguration.

Fixed internal bug ID 1268. When installing OOB Server on UNIX on a
system using xinetd the installer is asked to confirm whether SIGUSR1
is the signal xinetd uses to reread its configuration file. The
default answer (carriage return meaning Yes), "s" for skip and a
SIGNAL_NAME are all handled correctly but "y" is interpreted as a
SIGNAL leading to the error "Cannot find singla y".

Changed the Windows install so that when the KeepExistingConfiguration
checkbox is selected the final Start/Copy installation option summary
shows the existing values instead of empty values. Also changed the
layout of the installation summary.

Fixed bug ID 1270. ODBC diagnostics reported inside OOB for the
environment do not include the connection or server name - as ODBC
specification states.  However, certain diagnostics in the environment
need identifying or you cannot tell which component in the chain is
reporting the problem e.g. "the no license slots available"
message. Relaxed this restriction to make it easier to identify OOB
diagnostics in the environment.

When testing an OOB DSN from the OOB Setup dialogue in Windows, error
diagnostics may be shown in the status pane. Some of these diagnostic
messages originate in areas unaware that CR and LF are displayed as
vertical bars in the status pane. Filter out CR and LF characters from
these diagnostics.
 
7-Jan-2002
Fixed internal bug ID 1262. No validation of ODBC port, HTTP port and
Inactivity Timeout values during the OOB Server InstallShield
installation.

Fixed internal bug ID 1263. No validation on the Port field in the DSN
dialogue. Also service names are not supported. No field validation on
BlockFetchSize to restrict it to <100. Windows only.

Fixed internal bug ID 1264. No validation on OOB DSN "Settings"
dialogue fields i.e. the send/receive buffer size, receive low
watermark and connection retries. Windows only.

Changes since 1.0.0.33
======================
5-Dec-2001
Fixed internal bug ID 1245. There is a small memory leak if a
thread/process created by the OOB server dies (disconnects) and the
previous thread/process in the linked list of threads/processes is in
use. This occurs when the OOB Server attempts to move the now unused
entry to the start of the linked list. Although a small leak of memory
this can build up over time. Our own OOB Server serving the busy
cinema web site is not showing this problem after 19 days but it may
affect anyone with a different access/connection pattern.

4-Dec-2001
Fixed internal bug ID 1242. If client application connects to remote
DSN with SQLConnect/SQLDriverConnect and informational diagnostics are
generated (SQL{Driver}Connect returns SQL_SUCCESS_WITH_INFO) then the
application terminates without disconnecting, the memory associated
with the diagnostics is leaked.

3-Dec-2001
Fixed bug ID 1241. DISCONNECT events are not logged in the audit file
unless an AUTH_ERROR is logged too.

25-Nov-2001
Various changes to install scripts to support darwin.

22-Nov-2001
Data Sources web page had text added explaining that only SYSTEM data
sources are shown.

Final fixes for internal bug ID 987 - possible buffer overflows in
the OOB HTTP admin server on some pages serving dynamic content.

20-Nov-2001
Internal bug ID 1178.  Minor change to unixware OOB install which now
uses -o and -p arguments on tar extraction to avoid warning messages
about failure to set owner/group.

Internal bug ID 1233 - Install on UNIX machine without md5sum outputs
a silly errors due to missing echo - does not cause install to fail
though.

19-Nov-2001
Added oobping executable to the OOB client. This is installed in the
easysoft/bin dir in UNIX and <TARGET_INSTALL_DIR> in Windows. You can
use oobping to see if a particular OOB Server is listening - say under
NetSaint or other network monitors.

12-Nov-2001
One free connection removed. This has various minor knock-on effects
on the installations.

Link in the start menu previously called "Local OOB HTTP Server"
changed to "OOB Web Administrator".

9-Nov-2001
A small memory leak was introduced into 1.0.0.32. The leak occurs when
a client connects to the OOB Server then closes the socket as port
scanners do.

7-Nov-2001
Fixed bug ID 1219 - MS Query can cause exception in OOB Server if
date/time/timestamp criteria are used. We believe this is a bug in MS
Query or the driver manager and the way SQLBindParameter is called but
it is fixed in the OOB Server as we have no control over the MS apps.

Fixed bug ID 1220 - OOB client fails to support the binding of
SQL_C_WCHAR columns.

6-Nov-2001
Add Windows installation option to allow the OOB Server to be
installed secure instead of open i.e. the server is installed with
client access control set to disallow all clients access. Use the HTTP
admin interface to derestrict access control after installation.

5-Nov-2001
Fixed internal bug ID 1218. If ArraySize is set to more than 1 (the
default) and input bound columns are used (e.g. with
SQLBulkOperations) then only the first row is passed to the server
properly. Also, the bookmark column in omitted. To our knowledge no
applications other than home-grown code do this.

Fixed internal bug ID 1216. Row-bound bookmarks are not retrieved from
the server properly. To our knowledge no applications other than
home-grown code use SQLBulkOperations.

Fixed internal bug ID 1217. SQLBulkOperations does not work correctly
when updating rows. Both the OOB client and the OOB Server need to be
upgraded to get the full fix for this problem.

29-Oct-2001
Fixed internal bug ID 1213. OOB Server does not handle failing call to
SQLGetCursorName properly leading to client hanging. Any app calling
SQLGetCursorName where the driver returns an error for the call is
affected.

24-Oct-2001
Fixed bug ID 1199 - follow on from bug ID 1198.
SQLSetDescField(app_desc_rec, SQL_DESC_OCTETLENGTH_PTR) and
SQLSetDescField(app_desc_rec, SQL_DESC_OCTETLENGTH_PTR) do not work.
If you change the DataPtr for a bound parameter by calling
SQLSetDescField the OOB client fails to update this correctly in its
own structures.  Found through internal testing - no known
applications do this.

23-Oct-2001
Fix internal bug ID 1205. If UseOOBDBAuth checked in a DSN and a
UID/PWD is passed in the connection string the connection will fail if
a database login is required.

19-Oct-2001
Added last URL accessed to OOB HTTP exception log - useful debugging
aid.

16-Oct-2001
Fixed internal bug ID 1200 - disabling auditing from the web interface
in a WIN32 OOB Server after one or more connections have been accepted
can cause an exception in fclose().

15-Oct-2001
Fixed internal bug ID 1197 - Binding an input parameter as
SQL_C_DEFAULT and data at exec will cause SQLPutData to fail
when transferring the data. Found through internal testing - no known
applications do this.

Fixed internal bug ID 1198 - SQLSetDescField(app_desc_rec,
SQL_DESC_DATA_PTR) does not work.  If you change the DataPtr for a
bound parameter by calling SQLSetDescField the OOB client fails to
update this correctly in its own structures.  Found through internal
testing - no known applications do this.

5-Oct-2001
Fixed internal bug ID 1191. Date/times shown in the audit trail file
are marked as GMT when in fact they are local time. Fixed by changing
the "GMT" to the name of the current time zone. If no time zone is
defined GMT is shown.

Fixed internal bug ID 1192 - Authorisation denied due to incorrect OS
username/password not reported to stderr or the event log.

2-Oct-2001
New licensing application for Windows which now shows the connections
you are licensed for (version 1.13). New help file too.

21-Sep-2001
Fixed internal bug ID 1187 - error/warning messages sent to the event
log or stderr by the OOB Server are held back if the message is
repeated until there are at least 50 consecutive repeats or a
different message is logged. This can lead to an error/warning event
not being reported until days after it happened. There is now a limit
of 5 minutes of holding back repeated messages.

Fixed internal bug ID 1187 - OOB client for OpenVMS incorrectly
attempts to locate USER DSNs in sys$login:.odbc.ini which cannot exist
in OpenVMS filesystem.

20-Sep-2001
Fixed internal bug ID 1172 - If logging turned on and % appears in any
of the strings passed to SQLTables/SQLColumns the OOB client can
crash.

17-Sep-2001
Internal bug ID 1181 - small memory leak on OOB admin web pages which
use the get data method (i.e. page?x=y).

14-Sep-2001
Added support for looking for USER DSNs in sys$login:odbc.ini for
OpenVMS.

4-Sep-2001
Fixed internal bug 1176 - setting SQL_ROWSET_SIZE through
SQLSetConnectOption can cause a segfault. This probably applies to the
setting of any ODBC 2 statement options through SQLSetConnectOption.

Changes since 1.0.0.32
======================

3-Sep-2001
Fixed bug ID 1174 - UID/PWD missing from OutConnectionString if they
were prompted for (Windows-only).

Fixed internal bug ID 1175 - second prompt for UID/PWD - values
entered are not used. The OOB client should not prompt twice, it
should try the initial connection attributes and if they fail prompt
and retry.

Changes since 1.0.0.31
======================

14-Aug-2001
Fixed internal bug ID 1171 - MetaData block-fetch-mode can turn off
normal block-fetch-mode. If BlockFetchMode is enabled in your DSN and
you called a metadata function but retrieved < 60% of the columns of a
row with SQLGetData, BlockFetchMode would be turned off for all other
queries on using that statement handle.

8-Aug-2001
Fixed internal bug ID 1169 - UNIX install fails to offer OOB driver or
demo DSN installation under unixODBC if unixODBC is already installed
and the included unixODBC is not installed.

6-Aug-2001
Fixed internal bug ID 1155 - only the first 8 bytes of the
authentication or connection strings are encrypted. To get the full
fix client and server need to be upgraded.

Fixed internal bug ID 1154 - certain combinations of password or
connection string can be encrypted incorrectly and hence are decrypted
into the wrong strings at the server end. If you have hit this you
will know. To get the full fix client and server need to be upgraded.

3-Aug-2001
OOB Server inactivity Timeout implemented in inet/standalone OOB
Server for UNIX.

Fixed bug ID 1168 - temp files not deleted. Reported for OOB/AIX but
affect a small number of other platforms (basically ones without
vsnprintf - Solaris 2.4, HP-UX). Bug in vsnprintf implementation in
libesextra which failed to delete a temporary file named by tmpnam().

Changes since 1.0.0.30
======================

20-Jul-2001
Fixed internal bug ID 1157 (UNIX-specific). If the application uses
SQLBrowseConnect to retrieve a list of DSNs on the server it only
returns DSNs in the odbc.ini in it's current working directory. This
is a hang over from pre-unixODBC days. Changed to call SQLDataSources
so all data sources known by the unixODBC driver manager are now
reported.

Fixed internal bug ID 1158 - SQLBrowseConnect fails to connect if all
the required attributes are passed in on the first or second stage
calls.

19-Jul-2001
Fixed internal bug ID 1156 - calling SQLBrowseConnect with sufficient
information to cause a connection to the OOB Server (UNIX) when there
are no data sources at the server end can cause a segfault in the OOB
Server (UNIX).

14-Jul-2001
Stop setting S_RCVLOWAT on AIX. Sometimes it appears to cause a
network hang.

13-Jul-2001
OOB Server now calls SQLSetConnectAttr to set
SQL_ATTR_QUIET_MODE. This asks the driver to refrain from displayind
dialogues outside the connection phase.

Changes since 1.0.0.29
======================

12-Jul-2001
Changes to support Solaris Sparcv9 (64 bit Solaris)

2-Jul-2001
Failed authentication attempts are now audited.

Fixed bug in SQLBrowseConnect where the socket SNDBUF option size is
set if the NETRCVBUF is defined in the ini file.

New command line argument of "version" to esoobserver executable to
output the version and build date.

Changes since 1.0.0.28
----------------------

1.0.0.28 was a one-off distribution for Solaris-Intel.

Changes since 1.0.0.27
----------------------

26-June-2001
Failed HTTP authentication attempts are now logged to the event log or
stderr by the OOB Server.

25-June-2001
Fixed internal bug ID 1147 "HTTPAdmin user set to empty string on
reinstall with 'keep existing configuration' checked in Windows
installation.  Similarly for HTTPPort, Port and Timeout - they were
reset to the defaults.

21-June-2001
InstallShield installation now detects c:\temp not existing and throws
a prompt for the path to where log/audit files should go. If the
entered directory does not exist it will be created if the "Create
Log/Audit directory" option is checked (the default).

The Services link in the Easysoft ODBC-ODBC Bridge start menu folder
now correctly handles installation of Windows 2000.

17-May-2001
Added full support for cache control HTTP header fields, Last-Modified
and If-Modified-Since HTTP for gifs in the OOB HTTP admin pages.

16-May-2001
Fixed bug ID 1139 - OOB HTTP Server on HP-UX fails to return gifs
properly.  This was an optimiser bug.

14-May-2001
Fixed internal bug ID 1136 - time stamps in the audit trail file are
GMT instead of local time.

8-May-2001

Fixed internal bug ID 1119 - turning MetaDataBlockFetch off in the
connection string does not work.

Fixed bug ID 1131 - audit trail file in UNIX created root-only-writable
so audit messages logged after the server becomes the LogonUser are
not logged to the audit file.

Changes since 1.0.0.26
----------------------
1-May-2001
Various minor changes to the OOB HTTP Server pages to ensure all
images had alt tags and images which were not links or buttons had a
space as the alt tag to make it more lynx friendly.

30-Apr-2001
Fixed internal bug ID 1126. OOB HTTP Server for Win32 outputs the text
"(unix)" in errors sent back to the browser.

26-Apr-2001
Fixed bug ID 1123.
Column-bound C doubles where ROW_ARRAY_SIZE > 1, element 2 to
ROW_ARRAY_SIZE are not transferred to the server properly.
No known applications (other than inhouse C code) affected to our
knowledge.

Detect during installation broken 'head' commands.

23-Apr-2001
Further problems with row-bound parameters. Fixed internal bug IDs:

1021
row-bound parameters where the parameter is a structure (e.g.
SQL_TIMESTAMP_STRUCT) and PARAMSET_SIZE > 1 only pass the first
element in the array to the server.

1022
row-bound parameters where the parameter is a SQL_C_FLOAT or
SQL_C_DOUBLE and PARAMSET_SIZE > 1 only pass the first element in the
array to the server.

20-Apr-2001
Fixed internal bug ID 1120. If row bound parameters used and a
parameter is bound with a NULL StrLen_or_IndPtr the OOB client will
dereference it leading to an access violation. We are not aware of any
applications that do this so it will only possibly affect home grown
applications.

New script (essupportinfo.sh) installed in the easysoft/bin directory
which can be used to gather information prior to making a support
request.

19-Apr-2001
Changes to SQLDriverConnect() in Windows so that if the remote ODBC
driver returns state 28000 (authentication denied) the OOB client
throws a database login dialogue to give the user another attempt at
entering the database username and password.

18-Apr-2001
Fixed internal bug ID 1113 - row-wise column binding causes unaligned
access in Tru64.

Fixed bug ID 1005 "MS Access caching database username and password
even when save password not ticked". The OOB client now returns the
database username/password in the out connection string as UID/PWD
instead of TargetUser/TargetAuth so the application can decide what to
do.

17-Apr-2001
Fixed internal bug ID 1114 - Wrong ColumnSize/DecimalDigits passed to
SQLBindParameter on resized SQL_NUMERIC/SQL_DECIMAL. If binding a
SQL_NUMERIC or SQL_DECIMAL input parameter AND using
SQL_ATTR_PARAMSET_SIZE to increase the array size AFTER binding the
parameter SQLBindParameter in the ODBC driver is called with the
ColumnSize value passed in to the DecimalDigits parameter. No known
ODBC interfaces or applications do this so this fix will only affect
those writing their own ODBC application and they should know if this
affects them.

12-Apr-2001
Fixed internal bug ID 1077 - OutConnectionString from the ODBC driver
is transmitted over the net in an easily visible form. The
OutConnectionString is no longer transmitted full stop.

10-Apr-2001
Fixed internal bug ID 1111. OOB client returns SQL_ERROR if
SQLSetConnectAttr called to set SQL_ATTR_TRACE or SQL_ATTR_TRACEFILE
and the ConnectionHandle is NULL. This is contrary to the
specification which says the ConnectionHandle may be NULL when setting
these attributes.  The SQL_ERROR should also have been
SQL_INVALID_HANDLE. No known ODBC applications/interfaces affected.

Fixed internal bug ID ID 1110. ODBC Trace keyword in ODBC section of
registry/ini not acted on.

9-Apr-2001
Fix minor bug in OOB client's SQLDriverConnect which returned HY000
general error instead of IM007 if DriverCompletion =
SQL_DRIVER_NOPROMPT and there are insufficient attributes to connect.

Enhancement 1107. If the LogonUser/LogonAuth attributes are invalid
and DriverCompletion is not SQL_DRIVER_NOPROMPT and WindowHandle is
valid then throw a username/password dialogue giving the user one
chance to try correcting. This satisfies an enhancement request where
the passwords on the server system are regularly changed and it is a
pain to run round all the DSNs changing them.

6-Apr-2001
Fixed internal bug ID 1106 - OOB does not act on SQL_OPT_TRACE_ON
being set although it is passed on to the ODBC driver. You can now use
SQLSetConnectAttr(SQL_ATTR_TRACE, SQL_OPT_TRACE_ON) and
SQL_OPT_TRACE_OFF to turn tracing on and off in OOB. The OOB client
now also uses SQLSetConnectAttr(SQL_ATTR_TRACEFILE) value in
preference to its usual log file name (if set). The OOB client will
also look up TraceFile in the [ODBC] section of the ini/registry.

4-Apr-2001
Fixed bug ID 1102 - OOB client does not support SQL_COLUMN_IGNORE in
the StrLen_or_IndPtr of a bound columns when calling
SQLSetPos/SQLBulkOperations.

Fixed bug ID 1103 - LogonUser should be a required OOB connection
attribute but if it is missing "" is assumed. This leads to sometimes
confusing authorisation error 87 (invalid parameter) on NT. Made
LogonUser a required attribute. This may affect anyone who has
disabled authentication in the OOB Server and hence does not have
LogonUser - in this case add the LogonUser attribute with any value.

30-Mar-2001

Fixed bug ID 1098 - entering more than 4 characters for a TargetDSN
into option 7 of the OOB demo program corrupts the connection string
and the connection will probably fail.
Fix posted to OOB news group

29-Mar-2001
Any exceptions occurring in the child process of a MultiProcess OOB
Server on Windows were not being caught and reported so they would
generate a Dr Watson. Exceptions now caught and written to
LOGDIR\esoob.exception.

Changes since 1.0.0.25
----------------------
28-Mar-2001
Fixed bug ID 1095 - invalid handle returned from any ODBC function in
the OOB client for Tru64 after using 10+ handles. This fix applies to
any client connecting to a server platform where pointer size differs
and the client has the larger pointer size i.e. Tru64 OOB client to
Win NT (Intel) OOB Server.

27-Mar-2001
Minor change to UNIX install script which looks for Easysoft SQIs and
issues a warning about possible incompatibilities between older OOBs
and SQIs.

26-Mar-2001
Fixed internal bug ID 1092. If auditing or logging is turned on and
then turned off the audit/log file(s) are not closed. This is
particularly annoying in WIN32 as the files cannot be renamed or
deleted until the OOB Server is closed down.

Fixed internal bug ID 1093. The MSG_REPEATS event is logged when the
same message would have been output 50 times in a row. After that each
50 also cause a MSG_REPEAT but the context of the message being
repeated is lost i.e. it is not as the MSG_REPEAT message says "last
message repeated n times".

21-Mar-2001
Fixed bug ID 1091. If an install path is chosen which is different
from the default and /usr/local/easysoft does not already exist the
install script incorrectly attempts to rename
/usr/local/easysoft. This is harmless but results in some error text
appearing during the install.

Fixed bug ID 1090. If tee missing from target install machine then the
install_check_tools scripts spots this but fails to terminate the
installation.

20-Mar-2001
Fixed internal bug ID 1088. The diagnostic the OOB Server adds when
allocating a connection handle and running on a free/single connection
license is posted as HY000 (general error) instead of 01000 (general
warning).

Fixed internal bug ID 1089. The OOB test dialogue on Windows displays
SQL_SUCCESS_WITH_INFO diagnostics as "error:sqlstate:message text"
instead of "warning:sqlstate:message text".

15-Mar-2001
Internal enhancement 982 to OOB Server for UNIX. Catch SIGSEGV, report
useful information to /tmp/esoob.exception and then dump core.

Added keyboard accelerators to the OOB dialogs in Windows.

13-Mar-2001
Fixed internal bug ID 1084 (Server). The connect audit message
contains the host name if ReverseLookup is on but the disconnect audit
message always contains "unknown".

8-Mar-2001
Fixed bug in HP/AIX OOB clients which attempt to load libodbc.so and
libodbcinst.so shared objects instead of using .sl and .a.

Enhancement 1087 - OOB install for FreeBSD could update the dynamic
linker search paths using ldconfig and changing /etc/defaults/rc.conf.

Fixed internal bug ID 1080. Error messages posted by the OOB Server
during SQLDriverConnect are retrieved at the client end with a double
"[Easysoft ODBC (Server)]" in the message text.

6-MAR-2001
Enhancement 1078 - issue warnings in Windows (message boxes etc) if
someone attempts to set the OOB Server Port to 1433 or create a DSN
with the port specified as 1433. Port 1433 is generally used by MS SQL
Server and it is unlikely anyone would need to do this but it causes
an unnecessary support load when they do.

1-MAR-2001
Fixed memory leak in SQLDriverConnect in OOB client if called and the
connection fails to find the DSN.

Changes since 1.0.0.23
----------------------
20-Feb-2001
Fixed internal bug ID 1067 - when installing the OOB Server on a
platform using inetd it is possible for a SIGHUP to be sent to more
than just the inetd process.

Fixed internal bug ID 1068 - tar on some SCO systems does not return
an error code when an error occurs. It does however write error text
to stderr so capture errors this way as well.

19-Feb-2001
Free one connection license changed so it no longer expires.

16-Feb-2001
Fixed internal bug ID 938. Hitting back button in Windows installation
PostInstall dialogue does not go back. Disabled the back button as it
is too late to go back.

31-Jan-2001
Fixed bug ID 1061. Rows can be left locked in a table if the client
terminates abnormally when autocommit is turned off and row updates
have been performed. SQLDisconnect returning 25000 and failing but OOB
Server not canceling the transaction.

23-Jan-2001
Fixed internal bug ID 1059 - connection timeout at network level not
canceled once connected.

15-Jan-2001
Fix internal bug ID 1057. The OOB client did not allow ODBC 2.0
statement options to be set via SQLSetConnectAttr().

11-Jan-2001
Fixed internal bug ID 1054. BlockFetchMode can delete application
bound columns. This can happen if blockfetchmode is enabled in the DSN
in the registry/ini, a result-set is retrieved using
SQLFetch/SQLGetData and a column is bound before the next result-set
is generated with a metadata function (e.g. SQLColumns etc) or
SQLExecDirect/SQLExecute. It is very unlikely any applications will do
this as it is mixing SQLGetData calls and column binding and most
applications do one or the other - the only time we have seen both is
if a table contains a column too big to bind (e.g. SQL_LONGVARBINARY)
in which case the other columns are usually bound and OOB would never
start its blockfetchmode in the first place.

10-Jan-2001
Fixed internal bug ID 1047. If a SQL_C_NUMERIC column is retrieved
using SQL_C_DEFAULT in the call to SQLGetData a numeric structure is
returned instead of a SQL_C_CHAR.

9-Jan-2001
IP address added to DISCONNECT audit message.

4-Jan-2001
Fixed internal bug ID 1051. A rare race condition in the main Windows
OOB Server which can cause the OOB HTTP Server to get an exception
when starting up.

3-Jan-2001
Fixed internal bug ID 1049 - In SQLDriverConnect the out connection
string is supposed to be a copy of the in connection string if the
application uses SQL_DRIVER_NOPROMPT. It was an exact copy but the
returned length was 1 too many. This leads recent versions of the MS
Driver Manager to return HY090 - Invalid string or buffer length, to
the application even though the OOB client's SQLDriverConnect works.

2-Jan-2001
If any application connects to the port where the OOB Server is
running and disconnects without sending the correct negotiation data
the OOB server will report this as a "Failed connect - connection
closed by client prematurely". This may be reported when port scanned.

19-Dec-2000
Minor fix to OOB Server reported error when resources are so tight
that a new thread cannot be created for an incoming connection. The
system error number is now converted into a system error string before
being logged in the event log.

Server uptime on HTTP statistics page tidied up.

Posted URLs were not HTTP authenticated.

15-Dec-2000
A few remaining calls to strerror were replaced with strerror_r for
the threads-safe EasyRPC shared object. I doubt this is causing anyone
a real problem but it is now fixed.

14-Dec-2000
Fix bug ID 1045 - OOB HTTP Server fails to send Content-Type header
field for gifs. Most browsers manage to work this out for themselves
but some don't.

12-Dec-2000
Current time added to logging started message.

11-Dec-2000
The newly added Info web page and link in the OOB HTTP Server was
missing from a few pages.

7-Dec-2000
Changed the OOB HTTP Server to stop sending Continue responses to HTTP
1.1 browsers sending POST data as multiple versions of Internet
Explorer seem to get confused by them and either show the Continue
response or say "page cannot be displayed".

Add support in UNIX install for xinetd.

6-Dec-2000
Updated Apache_PHP document - simplified, instructions for non-Linux
but UNIX builds, PHP versions supported etc.

4-Dec-2000
Changed Makefile.linux_r to use -pthread instead of -lpthreads as
-pthread is now the correct way to build threaded/thread-safe code in
Linux.

24-Nov-2000
Fixed internal bug ID 595 - cannot pause/continue the OOB Server on
Windows NT. The Pause/Continue buttons on the service manager were
always greyed out even though the OOB Server contains code to handle
Pause/Continue.

23-Nov-2000
Fix internal bug ID 985 - OOB HTTP Server in UNIX inherits file
descriptors it does not need. - close them.

Enhancement 987 - post a ODBC diagnostic message and return
SQL_SUCCESS_WITH_INFO if the OOB Server is running Multi-threaded and
a client connects to the MS Access driver which is not thread-safe.

22-Nov-2000
Enhancement 996 - identical messages can be sent to the
eventlog/stderr by the OOB server (e.g. access denied). Instead of
reporting identical events repeatedly count them and output "last
message repeated n times" - like syslog.

Access denied events now log the client denied access.

19-Nov-2000
Fixed internal bug ID 1020 - add support for setting
SQL_ATTR_CONNECTION_POOLING with a NULL environment.

Fixed internal bug ID 1022 - return HY110 if connection pooling
enabled but SQLDriverConnect called with DriverCompletion !=
SQL_DRIVER_NOPROMPT.

16-Nov-2000
Change the default answer when asking whether to install OOB client
under unixODBC to depend on whether unixODBC was installed or not.
i.e. yes if unixODBC installed and no otherwise.

Fix internal bug ID 1025 - where OOB client can write 1 byte off the
end of the application buffer if the OutConnectionString buffer passed
to SQLDriverConnect is too small for the out connection string.

15-Nov-2000
Fixed internal bug ID 1023 - When SQL_DRIVER_NOPROMPT specified in
call to SQLDriverConnect the OutConnectionString should be a copy of
the InConnectionString. Previously, OOB was returning its own
connection string.

Minor compilation warnings on some UNIX platforms removed from demo.c

Changes since 1.0.0.22
----------------------
14-Nov-2000
Fixed bug ID 1013 - HY003 state from SQLGetData(SQL_C_DEFAULT) for
SQLProcedures result-set. This is a bug in the client AND server which
both don't realise SQLProcedures generates a result-set. You will need
to upgrade both client and server for the fix.

10-Nov-2000
Added an informational page to the OOB HTTP server with links to the
latest FAQ and Changes, the OOB manual in PDF and online HTML and a
mailto support.

Enhancement 1004. OOB insists on the Transport attribute being
specified in a DSN (or connection string) even though it currently
only supports TCPIP.  If Transport is missing default to TCPIP.

9-Nov-2000
Fixed minor issue in SQLGetDiagRec which writes to the application
SqlState buffer even when SQLGetDiagRec returns a status of
SQL_NO_DATA or SQL_ERROR.

Changes since 1.0.0.21
----------------------

1.0.0.22 was a MT-safe release for Linux and only distributed to a few
customers.

Changes since 1.0.0.20
----------------------
7-Oct-2000
Fix bug ID 1001 - Once MaxThreadCount limit is reached all other
connections are refused even if some connections are dropped so long
as the new connections arrive in less than 5 second intervals.  The
server was not correctly checking for exited threads/processes once
MaxThreadCount was reached.

6-Oct-2000
Fix bug ID 995 - the message output (to stderr, event log etc) when
MaxClientConnect is reached did not name the client so you could not
identify who was responsible.

Fixed bug ID 988 - some security events like hitting MaxThreadCount or
MaxClientConnect are not logged in the NT event log properly. They are
now logged as warnings.

Fix bug ID 998 - stop using SOMAXCONN for listen queue - can increase
severity of SYN attacks. backlog now set at 20.

5-Oct-2000
Fix bug ID 992 - The process forked by the OOB server in UNIX to
handle an ODBC connection inherited the listening socket and audit
trail file file descriptors.

31-Oct-2000
Fixed internal bug ID 991 - The OOB Server checks files it is about to
create in /tmp to make sure they are not symbolically linked
elsewhere.  If they are symbolically linked the server refuses to
create the file.  Otherwise, if the server is running as root a normal
user could symbolically link any file it knows the OOB Server is going
to create to another file the user does not have access to. The test
for a symbolic link was not correct.
Although this is a serious bug the OOB Server only creates files in
/tmp for logging or if you run the server standalone and ask for an
HTTPD server.

Fixed internal bug ID 992 - OOB standalone server for UNIX forked
children that inherited the access audit file and listening socket
file handles.

30-Oct-2000
Fix bug ID 989 - OOB Server install fails to get inetd to re-read
configuration.

25-Oct-2000
Fixed bug ID 986 - standalone OOB Server on UNIX can be overwhelmed by
incoming connections to a point where child processes are not reaped.

Process times displayed by the UNIX standalone OOB HTTP Server not
being updated.

20-Oct-2000
Changed the default for AIX in EasyRPC to NOT set the SO_RCVBUF socket
option at all as the previous default of 16K appears to cause hangs on
some AIX 4.3 machines. You may re-enable it by adding NetRCVBUF=16384
to the {Settings} section of the odbc.ini.

Changed the default for FreeBSD in EasyRPC to NOT set the SO_RCVLOWAT
socket option at all as the previous default of 8K appears to cause
hangs on FreeBSD when built with threads. You may re-enable it by
adding NetRCVLOWAT=8192 to the {Settings} section of the odbc.ini.

Changes since 1.0.0.19
----------------------

19-Oct-2000
Fixed bug ID 972 - SIGBUS in OOB Server (reported for Solaris). The
actual problem may be seen when client and server are on different
endian platforms and block-fetch-mode is used on a table with alot
(more than ~125) columns.

18-Oct-2000
Rename libsupport.xx and libextra.xx shared objects to libessupp.xx
and libesextra.xx to avoid clashes with other software (namely iPlanet
in this particular instance).

Various changes to improve the exception report in the OOB Server for
Windows:
 [1] Report the current thread ID.
 [2] Report the last RPC name and ordinal.

Fixed bug ID 975 - ldconfig only run in Linux install if new paths
were added to ld.so.conf. This is OK so long as new shared objects are
not added to an existing path - ldconfig needs to be run then too.

17-Oct-2000
Fixed problems with MT-Safe OOB client in FreeBSD where a failed call
to connect appears to render the socket unusable in future calls to
connect - socket now closed and reopened each connection attempt.

Fixed bug where S_RCVLOWAT set to default value instead of value
specified in odbc.ini/registry Settings section.

16-Oct-2000
Fixed bug 970 in SQLPrepare/SQLExecDirect when logging enabled and
query contains a %.

4-Oct-2000
Added code to disallow use of port 1433 as the OOB Server port. Port
1433 is commonly used by MS SQLServer and people often specify it by
accident instead of port 8888. The code now traps this.

Changes since 1.0.0.18
----------------------

3-Oct-2000
Added full support for SQL_ATTR_CONNECTION_TIMEOUT in the OOB client.
Previously the OOB client always acted as if this attribute had not
been set (i.e. defaulted to 0).

Fix minor bug in the generated statistics HTML which has 2 closing trs
which are missing the >.

2-Oct-2000
Changed the default for the OOB Server configuration ReverseLookup
from on to off. Often customer networks do not have reverse lookups
working and it adds to the connection time. This change only affects
the statistics page where connecting clients IP addresses and names
are shown. With ReverseLookup off the machine names are shown as
"unknown".

Fixed bug ID 941. -1 was showing in the NetRCVBUF OOB client ODBC
datasource settings instead of "Default".

Minor change to the Linux testlib installation test program which is
now linked with libm and uses a maths function to check that the
correct maths library exists as well as the correct c library.

5-Sep-2000
Fixed HTML in config_change_f.html which had closing ordered list tag
and opening unordered list tag (Internet Explorer did not like this).

31-Aug-2000
Fixed problem with recent {Settings} attributes NetRCVLOWAT, NetRCVBUF
and NetSNDBUF. Only the last one specified in the odbc.ini file is
used.

21-Aug-2000
Add support for SQL_ATTR_CONNECTION_DEAD.

19-Aug-2000
Relax the return of HY090 (invalid string or buffer length) from
SQLTables as some old versions of Excel/MSQuery appear to pass
uninitialised NameLength<n> values in to SQLTables when the pointer is
NULL.

15-Aug-2000
Fix for supporting ODBC 1 or 2 applications (like Excel/MSQuery) using
SQLExecDirect after turning asynchronous mode on. If SQLExecute
returns SQL_STILL_EXECUTING the OOB can cause a function sequence
error.

14-Aug-2000
In Windows, the main OOB Server keeps a handle to the HTTP Server
thread open - it does not need to so now it closes it.

Changes since 1.0.0.17
----------------------

10-Aug-2000
Fixed problem in the Windows OOB dialogue that pops up when the
application calls SQLDriverConnect with only a DRIVER attribute. When
the ... button was hit to enumerate the OOB DSNs the first DSN is
chosen and the fields are filled in with the attribute
values. Sometimes, not all of the fields were filled in.

9-Aug-2000
Fixed bug IDs 930 and 931. OOB standalone server (i.e. not inetd) on
UNIX fails to stop the forked HTTPD server if the main server receives
a SIGINT or SIGTERM.  Main OOB Server also fails to close the
listening socket down nicely.

8-Aug-2000
Fixed bug ID 934 - OOB client on Windows can mistakenly think it is
running as an OEM version when it is not due to failure to do a
case-insensitive match on the OOB client DLL name.

Changes since 1.0.0.16
----------------------

4-Aug-2000
Added configurable option NetConnectRetryCount which defines the
number of times the OOB client calls connect when it gets ECONREFUSED
(connection refused). NetConnectRetryCount should be specified in the
Settings section of the odbc.ini file. The defaults to 3.

3-Aug-2000
Changes to the demo program to add menu options to display odbc.ini
file, test all DSNs in the odbc.ini file, and allow a the attributes
defining a new DSN to be entered and tested.

FAQ.txt additions.

2-Aug-2000
Fix bug ID 910. The EasyRPC shared object sets the receive low
watermark, receive buffer size and send buffer size at TCP level. On
some AIX machines the setting of the receive buffer causes OOB to hang
later with data apparently not received. Added configurable options
for the low level networking called NetRCVLOWAT, NetRCVBUF and
NetSNDBUF. These go in the Settings section of the odbc.ini file.  See
example_dsn.txt.

Fix to libsupport which on failing to find a requested attribute in
the first matching DSN in the odbc.ini file continued looking for
other occurrences of the same DSN and would pick up the previously
missing attribute from the second or subsequent matching DSN.

31-Jul-2000
Fixed bug ID 899 - OOB Server fails to send the NUL termination
character to the client at the end of error messages generated before
ODBC is entered e.g. "Client denied access due to access control
rule". This can cause a crash in some applications or the unixODBC
driver manager.

Fixed bug ID 897 - OOB allows MultiProcess to be set for Windows 9x
even though it is not supported.

Fixed bug ID 897 - OOB install for Windows 9x fails to set HTTPAdmin
to disabled, preventing changes to the OOB Server configuration being
made via the HTTP interface until something is entered in this field.

28-Jul-2000
Fixed bug ID 867 - OOB client needs to be able to retry calls to
connect() for those cases where the maximum listen queue length is
hit.

25-Jul-2000
A number of problems arising from importing data into MS SQLServer:

Bug ID 891.
An internal function handling bound columns was missing a case
statement for SQL_C_UTINYINT. This gives rise to an error in
fetch_bound_columns() for unsupported data type -28 if a table
contains an SQL_C_UTINYINT.

Bug ID 892.
OOB fails to automatically expand the descriptor records when
SQLSetDescField is called with a RecNumber greater than the number of
existing descriptor records.

Bug ID 893.
OOB specifically disallows calls to SQLSetDescField and
SQLGetDescField when asked for ODBC 2.0 behavior. This is not required
and breaks importing data in to MS SQLServer.

New sqltypes.h and sqlext.h header files that fixes problems building
PHP 4.0.1pl2 with OOB.

Changes since 1.0.0.15
----------------------

24-Jul-2000
Bug ID 885. Fix to sqlext.h distributed in OOB 1.0.0.15 which gives a
compilation warning when built with PHP due to the definition of
SQLAllocHandleStd using SQLHANDLE which is an ODBC 3.0 type.

Bug ID 888. Fix to sqlext.h to make sure HSTMT, HDBC and HENV are
typedefed correctly.

Bug ID 883 - SQLDataSources and SQLDrivers are not exported in the OOB
client shared object for AIX.

Changes since 1.0.0.14
----------------------
6-Jul-2000
Added two new flags to the OOB Server configuration.

o ShowProcessTime if checked causes the OOB Server to record the
  kernel and user CPU times ever time 5 seconds elapses when there are
  no incoming connections.  If checked, you can see the CPU times on
  the OOB HTTP Server's statistics page. The default is checked.

o AutoUpdateConfiguration if checked causes the OOB to re-read certain
  configuration settings every time 5 seconds elapses where there were
  no incoming connections. The settings re-read are AllowList/DenyList
  for access control, MaxThreadCount, MaxClientConnect, Flags, The
  default is unchecked.

5-Jul-2000
Fixed bug ID 864 - OOB registry entries defining the OOB Server
configuration are overwritten by a reinstall. If this happens access
control rules etc can be lost.
Added an AskOptions dialogue to the Windows installation (see below)
which has a check box for "Keep the existing configuration" - this
defaults to checked. If the installation finds this checkbox unchecked
or it cannot find the OOB registry settings from a previous install
then the configuration registry entries are created.

4-Jul-2000
Added OOB manual as a Windows help file to the Windows distribution of
OOB.

Added an options dialogue to the Windows installation which allows the
installer to choose whether to:

o create the demo DSN.
o launch help after the install.
o Run the License Administrator during the install to get/check licenses.
o Keep the existing configuration.

30-Jun-2000
Changes to the licensing now mean that the OOB Server for some
platforms (namely Solaris/X86, Linux/X86, FreeBSD/X86 and Windows/X86)
works out of the box for 1 connection without the installer applying
for a license key. The free 1 connection license is time limited
although no one is prevented from down loading a new time limited 1
free connection version at a later date.

29-Jun-2000
Internal Bug ID 860 - calling SQLGetInfo for a string type with
BufferLength > 0 and InfoValuePtr = NULL causes an access violation.

Changes since 1.0.0.13
----------------------
27-Jun-2000
Fixed bug ID 857 - OOB does not handle SQLServer's uniqueidentifier
column which is an SQL_GUID.

26-Jun-2000
Fixed internal bug ID 854. Memory leak of the URI in the OOB HTTP
Server.  i.e. each time a page it hit the URI is leaked.

Fixed internal bug ID 855. Memory leak of two bytes in
SQLExtendedFetch in the OOB Server.  This may affect anyone using
SQLExtendedFetch (note PHP uses SQLExtendedFetch alot).

22-Jun-2000
Added PostInstall dialogue to end of Windows installation.

20-Jun-2000
Fixed bug ID 850 - OOB client failed to display date fields correctly
in Impromptu 6.0 from a Tetra/CS3 datasource. This was actually a bug in
OOB's row-bound column handling.

19-Jun-2000
Fixed bug ID 842 - Connection Name in use error when trying to use a
DBC on which a previous connection attempt failed.

Fixed bug ID 846 - ODBC diagnostics lost when SQLExecDirect called
from an ODBC 2.0 application and SQLExecDirect returns
SQL_SUCCESS_WITH_INFO.

14-Jun-2000
Added kernel and user CPU times to the OOB HTTP Server statistics
page.

Added a description of all the values on the statistics page.

Changes since 1.0.0.12
----------------------

7-Jun-2000
Fixed bug ID 838 - Disconnect events audited even though auditing not
turned on. If you have not got ODBC auditing turned on look for a file
called c:\temp\esoob_access.log and delete it. Depending on the number
of connections to your OOB Server this file could be quite large.

Fixed bug ID 837 - MaxThreadCount not always limiting maximum threads.

5-Jun-2000
Fixed bug ID 831 - OOB HTTP Server for UNIX does not show DSNs on the
data sources page.

1-Jun-2000
Bug ID 819
Cannot request a column as SQL_C_WCHAR.

Bug ID 796 - potential customer submitted code which uses descriptors to
copy one table to another. A few problems were identified:

SQLGetDescField for SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR and
SQL_DESC_INDICATOR_PTR were returning the wrong address.

When SQL_ATTR_APP_PARAM_DESC or SQL_ATTR_APP_ROW_DESC are set with
SQLSetStmtAttr the OOB did not make sure the same number of descriptor
records exist in the IPD and IRD.

26-May-2000
Bug ID 818.
Added new connection attribute DisguiseWide=n where n=0 (disabled) and
n=1 (enabled). This causes OOB to disguise the SQL_Wxyz data types
that can be returned by an ODBC driver. This currently needs to be
turned on in a DSN when accessing MS SQLServer from StarOffice.

25-May-2000

Fixed bug ID 821 - can't use OOB under unixODBC on Solaris due to
missing symbol __nss2herrno. libesrpc shared object should have
-lsocket -lnsl dependencies and nss_files.so is required early in the
dependencies to fix the undefined symbol - I still do know where
nss_files is defined in OOB or unixODBC where -lnsl doesn't follow it
but this works.

Enhancement ID 808.
Added MetaDataBlockFetch connection attribute which may be set to 1
(enabled) or 0 (disabled). By default this is set to 1.
MetaDataBlockFetch causes the OOB to analyse how many columns are
retrieved with SQLGetData from the first row in a result-set generated
from a metadata call (e.g. SQLTables). If more than 20% of the columns
were retrieved and the application is not using bound columns, the OOB
binds all the columns and sets the row array size to 10 allowing the
retrieval of 10 rows at a time which is alot faster.  Some ODBC
drivers do not support bound columns with row arrays sizes greater
than 1 correctly (e.g. the ticket.com driver) and need
MetaDataBlockFetch setting to 0 to disable it.

24-May-2000
Bug ID 817 - possible null pointer dereference when using MSQuery,
choosing OOB as the ODBC driver and then clicking on the ... to expand
the DSN names.

23-May-2000
Bug ID 813 - OOB client incorrectly maps SQL_ROWSET_SIZE in calls to
SQLSetStmtOption to SQL_ATTR_ROW_ARRAY_SIZE.

Bug ID 815 - OOB Server allocates insufficient memory for bound
columns which are then used with SQLExtendedFetch when the
SQL_ROWSET_SIZE is greater than 1.

18-May-2000
Fixed bug ID 806 - memory leak in OOB Server for Windows. A memory
leak occurs if a non-OOB client connects to the port the server is
listening on and then closes the socket.

12-May-2000
Installation of unixODBC DM mentions the version included with OOB.

Bug ID 719 - small optimisation in calls to
SQLExecute/SQLExecDirect/SQLMoreResults if there are no output bound
parameters.

Changes since 1.0.0.11
----------------------

5-May-2000
Fixed bug ID 788 - the OOB Server relies on StrLen_or_IndPtr being set
to a valid address in calls to SQLBindCol when the columns are
fetched.

Fixed bug ID 789 - the OOB Server can return 1 character too many for
bound character columns if the buffer supplied to SQLBindCol is one
byte too short for the data.

Changes since 1.0.0.10
----------------------

20-Apr-2000
Fixed bug ID 779 - blockfetchmode does not work properly for floats
and doubles between platforms with different endianess. Client and
Server must both be at 1.0.0.11 or above for this fix.

Changes since 1.0.0.9
---------------------

13-Apr-2000
Fixed bug ID 775 in Windows installation which can attempt to install
the OOB demo datasource even if the OOB client was not selected for
installation. The install would fail with "COMPONENT NOT FOUND IN THE
REGISTRY DEMO".

12-Apr-2000
Changes for VMS client port - should not affect any other platforms.
However, the latest OOB Server is required for the OOB VMS client.

5-Apr-2000
Fixed bug in OOB Server for HP-UX where if the LogonAuth password was
longer than 8 characters the client is never authenticated.

3-Apr-2000
Fixed bug ID 767 - output bound character/binary parameters fail to
return output data. New client and server required for entire fix. The
client fails to request the output character data and the server fails
to return the output length.

Changes since 1.0.0.8
---------------------

20-Mar-2000
Fix bug ID 762 - mixed output and input bound parameters for a
procedure call are not passed and retrieved correctly. e.g.
Binding one output parameter and and one input parameter for a
procedure which takes an integer and returns an integer will result in
the input parameter not being passed to the server correctly and the
output parameter will not be retrieved at all.

Fix bug ID 763 - Calls to SQLExecDirect with SQL_NTS as the string
length result in SQLExecDirect being called at the server with the
TextLength set to 1 too many. This only appears to affect certain
calls to MS SQLServer e.g. calls to procedures.

Changes since 1.0.0.7
----------------------

20-Mar-2000
OOB Server inetd startup script on UNIX now pulls the LD_LIBRARY_PATH
from <install_path>/easysoft/etc/es.ld.so.conf. Each Easysoft product
can add new paths to this file.

18-Mar-2000
UNIX installation rewritten to use generic scripts that other Easysoft
products can use. We now create an etc directory under easysoft
install dir.

14-Mar-2000
Added a new flag parameter to OOB Server which causes it to close all
existing statement handles when SQLDisconnect is called. Without this
flag Navision's ODBC driver crashes when SQLDisconnect is called.

9-Mar-2000
Add the Perl FTP_Downloads example to the OOB examples directory.

6-Mar-2000
Added support for unxiODBC's libodbcinst to OOB client. If the DSN is
not found in the standard places OOB looks, it attempts to load
libodbcinst and if successful uses SQLGetProvateProfileString() to
retrieve DSN information. This means unixODBC can be installed with
sysconfdir set to anywhere and the OOB client can still locate
unixODBC's odbc.ini file.

Changes since 1.0.0.6
---------------------

28-Feb-2000
  Fixed internal bug ID 727 - when flicking through the DSNs on the
  DSN combo box (only available when completing connection
  information) undefined fields are not cleared.

Changes since 1.0.0.5
---------------------

25-Feb-2000
  Fixed bug ID 732 - Cannot insert new records or alter existing ones
  in MSQuery through OOB to MS SQLServer. OOB Server needs to use
  SQLSetParam. As a result, you must be an ODBC Driver Manager after
  the OOB Server. In Windows this happens automatically for you.

  HTTP authentication can now be disabled by setting the HTTPAdmin
  user to "disabled".

24-Feb-2000
  Fixed bug ID 728 - general error "Implied ArraySize 0, expected 1
  (fetch_bound_param_smallint)". Caused when application binds CHAR
  parameters as input and output.

  Partial fix for bug ID 729 - Function Sequence Error from
  Excel/MSQuery when editing columns. The problem is that MSQuery
  turns synchronous mode on and OOB does not handle
  SQL_STILL_EXECUTING properly from all ODBC APIs called
  internally. The problem areas hit when using MSQuery are fixed and
  the remaining ones will be fixed shortly.

  Fixed bug ID 731 - OOB Server on NT writing a debug/trace message to
  the Event Log when the service is queried for its state.

  First pass at auditing ODBC connections added to the OOB
  Server. When the audit flag is set in the Flags parameter (via the
  HTTP interface or directly in the registry/esoobserver.ini file) the
  OOB Server audits ODBC connections to the esoob_access.log file in
  LOGDIR.

22-Feb-2000
  Changed installation for UNIX to give the installer the option of
  installing a demo datasource for unixODBC/OOB. This only happens if
  OOB installed under unixODBC driver manager.

  Put a shell wrapper (licshell) around the UNIX licensing program
  (licclient) which sets up dynamic linker run paths and appends any
  retrieved licenses to the licenses file.

15-Feb-2000
  Fixed bug ID 699 - SQLConnect only allows SQL_MAX_DSN_LENGTH (32)
  characters for ServerName. This is actually correct behavior but it
  prevents users of Perl/PHP (other ODBC applications) from passing
  all the OOB attributes in to SQLConnect (dbi->connect etc). Removed
  this restriction.

14-Feb-2000
  Fixed internal bug ID 698 - ConfigDSN() ignores all but first
  attribute.

  Fixed internal bug ID 697 - can disable the OOB ODBC Server from the
  HTTP interface, by clearing the MultiProcess Flag on the
  configuration page.

11-Feb-2000
  Fixed bug in the handling of CHAR type output bound parameters which
  were not being returned.

Changes since 1.0.0.4
---------------------

8-Feb-2000
  Fixed bug ID 689 - OOB Server leaks one handle per connection that
  requires authentication.

  Fixed internal bug ID 690 - output bound CHAR parameters do not work.

Changes since 1.0.0.3
---------------------

3-Feb-2000
  Fixed security issue with file created in /tmp for shared memory. If
  file already exists and is a symbolic link a user can obtain root
  privilege to truncate a file.

  Fixed bug in Windows License Administrator that can cause a
  purchased license to fail.

  Fixed the Windows distribution which mistakenly contained a version
  of the MS Access ODBC driver which can lead to error 126 being
  returned when the driver is loaded. The solution is to install the
  latest MDAC from http://www.microsoft.com/data.

2-Feb-2000
  Fixed bug in logging of string types in SQLGetInfo() where the OOB
  client could corrupt the stack if the returned string was very long.

  Fixed bug 684. The OOB Server did not pass to SQLPrimaryKeys in the
  driver exactly the same arguments as was passed to the OOB client by
  the application. NameLength1 was passed for NameLength2 and
  NameLength3.

1-Feb-2000
  Fixed bug ID 681 - memory leaks in the OOB client. When using
  block-fetch-mode, a small amount of memory may be leaked for each
  column which is a structure type (e.g. SQL_C_DATE). There is also a
  small leak when using bound parameters with structure types.

31-Jan-2000
  Fixed bug ID 676. Fixed possible array bounds write when retrieving
  columns in block-fetch-mode. This is unlikely to affect anyone other
  than those people using the OOB with Easysoft Tetra/CS3 customers.

28-Jan-2000
  Fixed bug ID 666 - install on NT can hang if a previous installation
  of OOB still has the OOB Service running. Tracked down to a bug in
  the InstallShield supplied service.rul template.

Changes since 1.0.0.0
---------------------
25-Jan-2000
  Fixed bug ID 667 - init_license() fails on the second connection if
  the first connection used a local NT username/password and the
  second connection uses an NT Domain username/password.

  Fixed bug ID 669 - OOB client returns "22003, Numeric value out of
  range" for bit fields when BlockFetchMode in use.

24-Jan-2000
  Fixed bug ID 665 - install can fail if machine has broken tr
  command.  Installation now tests tr and uses dd or sed as
  alternatives.

18-Jan-2000
  Fixed bug ID 664 - SQLConnect/SQLDriverConnect sometimes report
  garbage error text for network errors.

17-Jan-2000
  Made hostname reverse lookups in the Server conditional on new Flag
  so that if a machine does not have DNS set up properly, the server
  still functions properly. bit 6 (value 0x20) of flags enables
  reverse lookups is set (the default).

14-Jan-2000
  Two new OOB Server parameters added (enhancement
  647). MaxThreadCount limits the number of threads/processes the OOB
  Server will create to handle client connections (there is one
  thread/process per ODBC connection).  MaxClientConnect is similar
  except it limits the number of concurrent connections from a
  particular client (where a client is defined by the IP address of
  the machine it is running on).  If MaxThreadCount or
  MaxClientConnect are set to 0 (the default), no limit is imposed.
  These parameters may be changed via the OOB HTTP interface of by
  editing the registry/esoobserver.ini file.

13-Jan-2000
  Addition to UNIX OOB Server licensing to allow invalid licenses to
  be ignored. Normally any invalid licenses in the licenses file
  prevent and clients from connecting to the OOB Server until the
  problem is resolved. However, if someone installs the OOB in a NFS
  shared directory licenses for multiple servers may exist in the same
  file. If a line is added to the top of the licenses file containing
  "IgnoreInvalid" then invalid (or licenses for another server) are
  ignored.

11-Jan-2000
  Added a small document describing use of OOB under Cold Fusion.

  Fixed bug ID 656 - OOB Server can get an exception when
  SQLGetDiagField is called for a string type, DiagInfoPtr is set to
  NULL and there is a string to return.

10-Jan-2000

  Fixed bug ID 652 gethostbyname() failing in OOB client when IP
  address specified for Server machine but no reverse lookup possible
  due to missing DNS configuration. Strictly speaking this code only
  needs to call inet_addr() if an IP address specified and
  gethostbyname() if a name specified so this is how it is now.

  Fixed bug ID 654 - Cannot connect more than once every 5
  seconds. This was a bug in the access control rules and so only
  affected users who were using access control.

7-Jan-2000
  Fixed internal bug ID 583. When using the Test button on the OOB DSN
  Setup dialogue in Windows 95, it fails if you do not have WinSock2.
  Pop up a message box explaining this as it is a common problem.

6-Jan-2000
  Fixed internal bug ID 643 - you can enter the same IP address
  multiple times in to the Allow and Deny lists used for access
  control from a browser.

  Changed the Configurable parameters web page to show the Flags
  parameter bit mask as multiple check boxes instead of a single
  number.  This makes it easier to see what bit masks are set and
  change them.

  Fixed bug in OOB HTTP Server authentication which leaked a handle in
  Windows.

4-Jan-2000

  Fixed internal bug ID 615 - when modifying access control or server
  configurable parameters via a web browser there is no button to go
  back to the previous page. Changed these pages to automatically
  return to the previous page after 10 seconds of displaying the
  message saying whether the parameter or access control was added
  OK. Also changed the button bar to allow a user to press select any
  page.

  Internal bug ID 580. Add a warning during the Windows install saying
  that the previous version of OOB must be removed before reinstalling
  or installing a new version.

23-Dec-1999
  Fixed bug in OOB HTTP server that disallowed hex values for Logging
  to be entered in the configurable parameters screen.

20-Dec-1999
  Fixed internal bug ID 637 - changing access control (adding or
  removing an allowed/denied IP address) from a HTTP 1.0 browser can
  result in a blank page being displayed instead of the message
  "Access Update Successful".

17-Dec-1999
  Various changes to the OOB HTTP on Windows which makes it more
  robust and more helpful if something does go wrong. Firstly, the
  HTTP Server thread should no longer be able to bring the whole OOB
  Server down. Secondly, an access violation or other exception should
  cause an entry to be added to the EventLog (or the terminal if not
  NT) followed by the creation of the file
  c:\temp\esoob.exception (c:\temp is the default and is
  governed by the LogDir Server parameter). Any getting an exception
  should email the esoobserver.exception file to support@easysoft.com
  along with details of what you were doing when the exception
  occurred and we will identify the problem.

16-Dec-1999
  Fixed internal bug ID 635. Entering space separated values in the
  forms on the OOB HTTP Server configuration page can cause an access
  violation in the HTTP Server.

1-Dec-1999 to 10-Dec-1999
  Licensing finalised for UNIX OOB Servers.
  OOB install now creates a license directory and installs a licences
  template file if either do not already exist.  Added the siteinfo
  binary to the UNIX distribution (server directory). You can run this
  to output a string which Easysoft need to provide trial and full
  licenses.  Added licclient binary to the OOB UNIX distribution in
  the license directory. This program may be used to view, add and
  apply for licenses for Easysoft products. It is also started
  automatically at the end of an installation which installs the OOB
  Server. Further details may be found in the INSTALL text file in the
  tar distribution.

Changes since 0.8.0.0
---------------------

1-Dec-1999
  Fixed bug ID 626 - . is included in the tar archives which lead to
  "operation not permitted" problems for one customer.

30-Nov-1999
  Minor change to SQLDisconnect in the OOB client driver. If an
  application calls SQLDisconnect and the remote call to SQLDisconnect
  fails the client assumes the server timed out the connection (the
  OOB Server has an inactivity timeout value). The client then clears
  all remote information and returns to the unconnected state where
  the application can reconnect through SQLConnect or
  SQLDriverConnect. This is part of a fix to solve the problem of
  persistent connections timing out (PHP in particular had code which
  always assumed a connection lasted forever). Nick Gorham made the
  necessary changes to ODBC in the CVS tree post PHP 4beta3.

29-Nov-1999
  Fixed bug ID 623 - Domain/username login not accepted by OOB HTTP
  Server.

25-Nov-1999
  Added licensing to UNIX server.

  Fixed problem in the example Makefile where the warning was not
  issued before anything was compiled.

24-Nov-1999
  New examples SQLGetFunctions.c and version.c added.

  Fixed bug ID 614. In Windows, the LogonAuth and TargetAuth are
  stored encrypted in the registry. Some passwords however, become
  truncated when the DSN is saved and then retrieved. This required an
  extensive change to the way passwords are stored in the registry and
  so any passwords in existing DSNs will need to be retyped.

  Fixed bug ID 618 - registry entries for file association between
  .esl files and the Easysoft License Administrator in Windows are
  wrong.

23-Nov-1999
  Minor change to the OOB HTTP Server to display "None" instead of a
  time in 1970 if there have been no connections.

Changes since 0.6.0.0
---------------------
17-Nov-1999

  Fixed internal bug ID 608 - Hitting the test button on the OOB
  client DSN Setup dialogue in Windows 9x does nothing.

  Fix minor bug in the Windows OOB client dialogue popped up when not
  enough connection attributes are specified. Call to SQLFreeHandle in
  the OOB which should have gone to the DM when the [...] button
  pressed.

15-Nov-1999

  Fixed Internal bug ID 600 - DSN names in odbc.ini files have become
  case sensitive in some circumstances.

  Fixed internal bug ID 597 - OOB Server on Solaris shows
  "undetermined" for platform and operating system. This does not
  really matter but needed fixing.

  Fixed memory leak in SQLConnect where if the ServerName, UserName or
  Authentication are not passed in as NULL strings memory allocated
  for them is leaked. This was hopefully the last leak responsible for
  external bug ID 28.

  Fixed memory leak in OOB Server when run from Perl client. One
  statement and 4 descriptors leaked per connection.

12-Nov-1999

  Changed C++ comments in the header files to C comments as requested
  by a beta tester.

  Fixed internal bug ID - Possible bug in input bound floats and
  doubles. Input bound columns of floats and doubles would not have
  worked correctly.

  Fixed internal bug ID 598 - EasyRPC frees memory not allocated in
  integer arrays when going between different endian platforms and the
  data is in the compression window.

10-Nov-1999
  External enhancement request 24 implemented. This allows the OOB
  Server administrator to define access control to the server based on
  IP addresses. The OOB HTTP Server now has an Access Control web page
  where the current configuration may be examined and changed. By
  default the OOB Server installs with access for everyone.

9-Nov-1999
  Added HTTP authentication to some of the OOB Server web pages. To
  make changes to the server you now need to supply the username and
  password for the OOB administrator entered during installation.

8-Nov-1999
  Added a new bitmask value to the Server's configurable parameter
  Flags.  Bit 5 (value 0x10) specifies whether the OOB HTTP Server's
  web page for configurable parameters shows the administrators name
  or not. The default is set.

7-Nov-1999
  Fixed memory leak in underlying network layer reported in external
  bug ID 28 "DBI/DBD::ODBC with esoob: memory leak". This memory leak
  in the OOB client affected people running programs for long periods
  of time that repeatedly open and closed connections to the server.

  Allow the Flags and Logging configurable parameters to be specified
  as hex strings as well as decimal. When specified as a hex string
  the hex digits must be preceded with "0x".

  Fixed minor bug in SQLDriverConnect/SQLConnect where if the client
  fails to connect to the server and the application calls these
  functions again the client OOB returns "connection name is use" when
  it is not.


6-Nov-1999
  Fixed internal bug ID 582 - OOB HTTP Server sometimes fails to read
  all posted form data.

  Fixed bug where if the in connection string to SQLDriverConnect
  contains "dsn=xyz" where is in lowercase then the OOB client adds
  DSN=DEFAULT to the out connection string.

  Fixed external bug ID 29 where binding a parameter with a NULL
  DataPtr (i.e. passing undef in Perl or SQL_NULL_PARAM in C) causes
  the server to fall over in SQLExecute.

5-Nov-1999
  Added licensing code to the OOB Server and modified the Windows
  InstallShield installation to run the License Administrator if the
  OOB Server is installed. Trail licenses may be obtained over the
  net.

4-Nov-1999
  Changed the InstallShield installation to show the license agreement
  after the component selection is made is the client-only and
  client-server licenses differ, show the relevant one.

2-Nov-1999
  Added new server configurable parameters RetryCount and RetryPause
  which define the number of attempts the server makes at creating a
  new thread to handle a connection and the time between attempts.
  The same numbers are used for attempts to obtain a license slot.

1-Nov-1999
  Output bound parameters are now fully supported.

Changes since 0.4.0.0
---------------------

13-Oct-1999
  Part fixed internal bug ID 541 - the OOB client does not support the
  setting of statement options via SQLSetConnectOption (yes
  SQLSetConnectOption). A little known ODBC 2.0 fact is that if you
  set a statement option via SQLSetConnectOption, it is propagated to
  all current statements (fixed) and used as a default for all new
  statements (not fixed yet).

12-Oct-1999
  Fixed internal bug ID 494 - configurable parameters changed through
  web interface not validated.

8-Oct-1999
  Fixed bug in HTTP server which fails to tell you if files it expects
  to find are missing or unreadable.

  Fixed internal bug ID 495. In 0.4.0.0, the OOB client requires
  SQLNumParams but some ODBC drivers don't have it (they should as it
  is a base function).  Changed the OOB client so that if SQLNumParams
  is not supported all bound parameters are sent instead of just the
  required ones.

7-Oct-1999
  Changed the OOB HTTP server to show the OOB version number at the
  top of each page.

  Fixed a partial "<BR>" (was "BR>") in the web page showing the
  configurable parameters have been changed.
 
1-Oct-1999
  Fixed bug in SQLExtendedFetch when the RowSetSize is set to anything
  greater than 1. The server was using the RowArraySize instead of the
  RowSetSize.

  Speeded up Block-Fetch-Mode by vastly reducing the description of
  the data the client requires. As block-fetch-mode does not specify
  the Indicator and StrLen parameters as different pointers the client
  is wasting bandwidth asking for both. Also made a minor change to the
  underlying EasyRPC protocol which reduces the data in the protocol.

30-Sep-1999
  Internal Bug ID 523. Fixed bug in SQLExecDirect where you can
  occasionally get "out of memory" errors if there are no bound
  parameters.

  Fixed internal Bug ID 522 - an idle UNIX server can consume a great
  deal of CPU time. Problem in select code where the timeout was
  getting reset to 0.

28-Sep-1999
  Enhancement 513. The Windows OOB DSN Setup dialogue now contains a
  combo box for the Server field which contains a list of all server
  names previously used for this field in any other OOB DSN.

  Bug ID 512. The OOB client in UNIX returns answers for the DM
  SQLGetInfo() calls (SQL_DM_VER and SQL_ODBC_VER) assuming there is
  no driver manager at the server end. Changed the client to attempt
  the calls at the server first, and only if they fail return OOB
  client values.

27-Sep-1999
  Bug ID 517. Change the Test button in the Windows DSN setup dialogue
  to display the driver name and version and more informative
  connection messages instead of just showing the result of every
  SQLGetInfo() call.

25-Sep-1999
  Changed the UNIX installer to offer to install the unixODBC driver
  manager.  Changed the way the client/server etc are packaged in the
  distribution to separate the files associated with each.

24-Sep-1999
  Included a built copy of the demo program in the Windows install.

  The UNIX version of the OOB Server is now capable of starting
  standalone (without inetd). In this configuration it forks children
  to handle each connection and a child to run as an HTTP server. As a
  result there is now a new "template" directory off the server
  containing all the html/gif files.

22-Sep-1999
  Fixed a problem in the NT server where if it failed to start a new
  thread for a connection the retry code did not work properly and a
  message was not logged to the event log.

21-Sep-1999
  Added enhancement ID 25. The OOB HTTPD server now returns the
  statistics page to the browser with a metatag asking for a refresh
  in 60 seconds.

  Fixed internal bug ID 507. Third test in MSBench32 fails if
  BlockFetchSize=1 with an access violation. The problem was
  was an uninitialised memory read.

Changes since 0.2.4.0
---------------------

15-Sep-1999
  For Windows, the InstallShield installation has been changed in the
  following ways:

  [1] Internal bug ID 497. An InstallShield summary screen problem. If
      you get to the final summary screen before installing, it shows
      installation type, company name, username, install path etc. If
      you back up at this point and change some of the information,
      the next time you get to the summary screen the new information
      is appended to the existing summary instead of replacing it.

  [2] The Compact setup type now installs the client and server but no
      documentation or examples.

  [3] The summary screen now shows the ports and timeout values
      selected during the install.

  [4] Fixed bug ID 498 where you could fail to uninstall the OOB if:
      [a] you install all of OOB (typical or custom with everything)
      [b] uninstall OOB
      [c] install client-only OOB
      [d] uninstall OOB. Fails with error dialogue containing loads of
          zeros.
      Problem due to leaving the service.ini file in the OOB install
      directory after an uninstall.

  Fixed bug ID 501 - where second press of the test button in the Windows
  OOB DSN setup dialogue would crash the ODBC administrator.


14-Sep-1999
  Internal bug ID 481 - passwords are nolonger sent as clear text over
  the network.

13-Sep-1999
  Enhancement. Currently, the NT OOB Server is multi-threaded and
  starts a new thread for each connection (this is the default). Add a
  flag that configures the server to start a new process to handle
  each connection so that the OOB Server can work with non-thread-safe
  ODBC drivers (Set bit 2 (value 4) in Flags via the HTTP server or the
  registry).

  Fixed internal bug ID 493. When bridging windows->windows there is a
  DM at both ends. When ODBC 2.0 applications call SQLGetTypeInfo for
  the SQL_TIMESTAMP type the DM at the client end converts this to
  SQL_TYPE_TIMESTAMP and then the DM at the server end returns an
  error for unrecognised type. I think this may be a possible bug in
  the DM which is not expecting there to be 2 driver managers in the
  chain. The OOB server now spots the ODBC 2.0 application and
  converts the ODBC 3.0 types back to ODBC 2.0 types for
  (SQL_TIMESTAMP, SQL_DATE and SQL_TIME).

10-Sep-1999

  Fixed internal bug ID 491. The OOB client failed to send the NUL character
  at the end of a bound SQL_C_CHAR parameter where the application failed
  to set the *IndicatorPtr.

9-Sep-1999
  Add BlockFetchSize field to the Win32 OOB DSN Setup dialogue.

6-Sep-1999
  Added support for the Description DSN attribute used in SQLDataSources
  and unixODBC.

4-Sep-1999

  Added support for Perl DBD::ODBC 0.21 which now expects a Driver
  Manager below it and so SQLDataSources/SQLDrivers APIs had to be
  added to OOB. For SQLDataSources System DSNs in non-Windows are
  currently those defined in /etc/odbc.ini.

3-Sep-1999
  Fixed bug in Sun examples Makefile where the library path to libesrpc.so
  was not included (external bug ID 13).

  Completed the second pass at an HTTP server for the Windows version
  of the OOB Server. This can be used to view statistics, current
  configuration and get a list of DSNs. You can now also change OOB
  Server configurable parameters via the web browser. By default, the
  OOB Server listens on port 8890 for HTTP requests from your browser
  although the port may be changed.  Use the URL
  http://machine_where_OOB_Server_installed:8890/. Currently changes
  to some of the configurable parameters are picked up on the next
  connection but some like the port numbers require the OOB Server to
  be restarted (this cannot currently be achieved from a browser but
  will be in a future release).

31-Aug-1999

  Fixed bug ID 454 where some system calls in the network socket layer
  were not handling EINTR correctly. This was brought to our attention
  by a beta tester on Linux who was using a thread library that made use
  of SIGALRM. At the same time added checks for exceptions on Windows sockets
  as an aid to seeing if the OOB client has gone away unexpectedly.

  Fixed external bug ID 21 - problems when application linked with OOB
  uses syslog. Removed the openlog(8) call from the network layer and
  fell back on simple file based logging/tracing.

19-Aug-1999

  Added a new DSN attribute call "MetaData_ID_Identifier" for
  applications that assume SQL_ATTR_METADATA_ID is set to SQL_TRUE by
  default (it is not).  Without this such applications going to ODBC
  3.0 drivers will not quote special characters in the metadata call
  (e.g. _) and they will fail. Applixware's AXData does this. If
  "MetaData_ID_Identifier" is set to 1 in the DSN then the OOB client
  will ensure that SQLSetStmtAttr get calls with SQL_ATTR_METADATA_ID
  to set it to SQL_TRUE and then strings in metadata calls are treated
  as literals.

  Changed the algorithm for bound parameters to send them all to the
  server in one go. This really speeds up applications making alot of
  use of bound parameters like MS Access which binds 10 parameters for
  each key.

12-Aug-1999
  Change the low level network layer to bump up the size of socket
  buffers if they are very small.

  If an OS defines MSG_WAITALL then use it in some socket receives as it
  calling recv multiple times.

  Added missing support for SQL_C_BINARY in Block-Fetch-mode.

11-Aug-1999
  Add support for the SQL type SQL_UNKNOWN_TYPE.

10-Aug-1999
  Speeded up Metadata functions in many cases where the application
  retrieves more than 60% of the columns in the result set by automatically
  turning on block-fetch-mode internally.

9-Aug-1999
  Fixed internal bug ID 426 where in Block-Fetch-Mode the returned
  StrLen_or_IndPtr value for for dates, times and timestamps was not
  set.

6-Aug-1999
  Changed the arguments to LogonUser in Windows from
  LOGON32_LOGON_INTERACTIVE to use LOGON32_LOGON_BATCH which does not
  cache credentials and is generally faster and more appropriate for a
  client/server system.

4-Aug-1999
  Changed the UNIX installation to add specific support for unixODBC.
  You can now add the OOB driver into unixODBC as a registered driver
  during the install.

2-Aug-1999
  Changed the installation for Linux so that:

  [1] it checks the version of OOB being installed is compatible with the
      version of libc on the machine.
  [2] Checks that the minimum libc requirement for the current kernel
      is installed.
  [3] Outputs warnings for some older and development kernels.

27-Jul-1999
  Added very basic context-sensitive help to the OOB client setup DLL.

  Made the Transport and Port fields in the ODBC Administrator, OOB
  client DSN setup DLL start with "TCP/IP" and "8888".

  Completed the first pass at an HTTP server for the Windows version
  of the OOB Server. This can be used to view statistics, current
  configuration and get a list of DSNs.

26-Jul-1999
  Tested Rexx/SQL out through OOB. Rexx/SQL 2.4beta gets configuration
  support for OOB.

  Fixed internal bug ID 361. OOB client attempts to avoid passing
  bound parameters if there are no parameters in the statement by
  checking with the driver how many parameters there are in the
  statement. This is OK for SQLPrepare/SQLExecute but doesn't work
  for SQLExecDirect.

  Fixed internal bug ID 384. Dynamic linker configuration for Linux is
  done at the end of the install which is too late if the installer
  opts to not install the inetd and service configuration.

23-July-1999
  New splash screen in Windows install.

  Added "Path" registry entry which is the installation path on Windows.

21-July-1999
  Fixed internal bug ID 374 where reinstalling OOB on Linux adds
  entries to ld.so.conf which already exist.

19-July-1999
  Sent the Makefile.PL.patch patch to Jeff Urlwin for inclusion in the
  next Perl DBD::ODBC.

  Added code to the Windows OOB Server to gather connection
  statistics.

16-July-1999
  OOB now fully supports ODBC 3.0 (and 2.0) fixed length and variable
  length bookmarks. There is also a configurable parameter which may
  is DSN specific called MaxBookmarkSize (default is 32 bytes)
  although I doubt anyone will need it.

  Added support for SQLSetScrollOptions and SQLGetStmtOption.

15-July-1999
  Fixed internal bug ID 379 - OOB returns one character too many for
  SQL_C_BINARY columns although the length returned is OK.

14-July-1999
  Fixed internal bug ID 377 - bound columns in multiple active statements
  can fail to return data.

13-July-1999
  Fixed internal bug IDs 373 and 375 - the install script was broken in the
  last the release in terms of detecting a service name already in use and
  the server startup script was created containing an incorrect cd command.
 
7-July-1999
  Added new DSN attribute MaxBookMarkSize. This may be specified per DSN
  and defines the largest bookmark (in bytes) that OOB can support.
  In ODBC 2.0 bookmarks were fixed length at 4 bytes but in ODBC 3.0
  all bookmarks are variable length. This currently defaults to 32 which
  should be large enough for all the drivers I've come across so far.

1-July-1999
  Added the missing ODBC API, SQLAllocHandleStd. If an ODBC application
  is compiled with ODBC_STD defined then SQLAllocEnv and SQLAllocHandle
  are defined in terms of SQLAllocHandleStd.

30-June-1999
  Changed the shortcut to the OOB server in Windows 95 to start the server
  minimised.

  Fixed internal bug ID 347 - problem in supporting ODBC 2.0 applications
  going to an ODBC 3.0 driver.  ODBC states changed from 2 -> 3. In 2 you
  could call SQLDescribeParam AFTER SQLExecute/SQLExecDirect but in ODBC 3.0
  you cannot. As a result we have to turn SQLExecDirect into a SQLPrepare,
  retrieve and cache the parameter info, and then a SQLExecute. The problem
  was that a call send the parameters came before all this ODBC 2.0 stuff
  when not even the SQLPrepare had been called.

Changes since 0.2.2.0
---------------------

18-June-1999
  Completed code in NT/Win95 server which ensures that if clients unexpectedly
  disconnect (e.g. if they are killed) the thread in the server is destroyed
  and memory/handles etc are cleaned up.

16-June-1999
  Added support for inactivity timeout in NT/Win95 Server. Currently the
  timeout value is held in the registry but there will be a little GUI
  application to allow server settings to be changed.

13-June-1999
  Solaris version of the OOB now available.

10-June-1999
  Added /etc/odbc.ini to the list of files searched for DSNs. This
  file is only examined if none of the other sources for DSNs is
  found. The search now becomes:

  ODBCINI->./odbc.ini->./.odbc.ini->~/odbc.ini->~/.odbc.ini->/etc/odbc.ini

3-June-1999
  Updated the Windows network layer to output slightly more helpful text
  for errors instead of just the error number.

1-June-1999

  The Windows OOB server startup mechanism has been substantially
  rewritten.  Previously, installing the OOB server on NT would add a
  service (the Easysoft SuperServer) which listened on a port and when
  a client process connected the service would fire off the
  esoobserver process to handle the client. This had a number of
  disadvantages the worst being the terrible process creation times in
  NT which lead to slow connection times and the fact that this method
  won't work in Windows 95. This was particularly noticeable when
  running the OOB from a web server which may make hundreds of
  connections per hour.

  We have removed the Easysoft SuperServer altogether and made the OOB
  server multi-threaded. In this way, when a client connects to the
  server the server simply starts a new thread which is much
  quicker. On NT the OOB server is still a service run from the
  Service Manager. An additional advantage is that the OOB Server now
  also works on Windows 95 and so this is the first beta supporting
  Windows 95. You should however note that Easysoft do not see Windows
  95 as a server platform and it is supported so that users can get
  occasional access to MS Access databases (and others).

25-May-1999
  Allow a service name to be specified for the Port number in the odbc.ini
  file. e.g. Port = esoobserver instead of Port = 8888.

10-May-1999
  Fixed internal bug IDs 284 and 285. Can't use SQL_INTERVAL and
  SQL_NUMERIC bound parameters.

6-May-1999
  test_ini_dsns example updated to include BlockFetchSize attribute.

5-May-1999
  Internal bug ID 279 fixed - bug in AIX version of OOB which failed
  to export get_next_dsn.

  Internal bug ID 280 fixed - bug in get_next_dsn() which caused it to
  ignore the first DSN in the odbc.ini file.

  Incorrect odbc.ini in the examples directory - change TargetDSN from
  "demo" to "pubs".

4-May-1999
  Some speed enhancements to the underlying RPC layer.

29-April-1999
  Added a very basic FAQ to the docs directory.

28-April-1999

  Changed the client so that it is composed of libesoobclient, libesrpc,
  libessupport and libesdate shared objects which were previously built
  in to the OOB client. This is preparation for other Easysoft products
  which use these shared objects.

nn-April-1999

  Added an alpha block-fetch mode enabled from the odbc.ini by adding
  BlockFetchSize=n where 0<=n<=100 and n=0 means block-fetch mode turned
  off. Block-fetch mode binds buffers to all the columns in a result-set
  and sets the RowArraySize (RowSetSize) to BlockFetchSize. In this way
  n rows of data may be retrieved at a time and you see a massive speed
  increase if the application just retrieves data using looping
  SQLFetch/SQLGetData calls. However this is only achieved by doing the
  data conversion at the client end and obviously will not work if the
  application does positioned updates/deletes, uses cursors to has bound
  columns itself. Once we are happier with block-fetch mode there will
  be some further documentation on the caveats but until then the
  default is BlockFetchSize = 0. Note that this currently does NOT work
  with MS SQLServer due to the MS SQLServer ODBC driver not returning the
  RowsFetched unless in ODBC 3.0 mode.

  OOB now works with mxODBC, the Python ODBC interface.

  The default installation directory is now /usr/local/easysoft/oob
  and if a different path is specified the OOB is installed in
  the "oob" subdirectory beneath that.

21-April-1999

  Introduced some compression of data sent between the OOB client and
  server. Although this does not make this version incompatible with
  previous versions other changes since 0.2.2.0 do.

19-April-1999
  Fixed internal bug ID 255 in OOB Server where calls to SQLFetchScroll
  by the application were turned into calls to SQLFetch with the
  remainder of the arguments ignored.

15-April-1999
  Enhancement 251. Added ~ to the list of paths now searched for the
  odbc.ini and .odbc.ini file.

  Fixed internal bug ID 250 where OOB caused a function sequence error
  to occur in the driver if a call to SQLExecute/SQLExecDirect returned
  SQL_NEED_DATA. This was caused by calling SQLDescribeCol in the OOB
  server too soon (i.e. not after SQLParamData returns successfully).

14-April-1999

  Fixed internal bug ID 249 where OOB may attempt to send bound
  parameter data if there are bound parameters even if there are no
  parameters in the SQL.

12-April-1999

  Fixed internal bug ID 245 where OOB can return SQL_NO_DATA from
  SQLError even if there are diagnostics available. This only happened
  when SQLError was previously called but not repeatedly called until
  returning SQL_NO_DATA. This bug was shown up by mxODBC - the python
  interface to ODBC which only calls SQLError once for each error
  return.

2-April-1999

  Fixed internal bug ID 238 where OOB incorrectly treats RowSetSize
  (SQL_ROWSET_SIZE) as a synonym for SQL_ATTR_ROW_ARRAY_SIZE. This only
  applies to SQLExtendedFetch.

1-April-1999
  Fixed internal report 237. Passing NULL for RowCountPtr or
  RowStatusArray in SQLExtendedFetch may cause a core dump.

25-Mar-1999
  Fixed internal bug ID 221 where the second call to SQLFetch(xyz) may
  fail if there are bound columns and SQLFreeStmt(SQL_UNBIND) called
  after each SQLExecute.

  Fixed internal bug ID 219 where errors were posted twice if the OOB
  server is linked with the OOB client.

24-Mar-1999

  Fixed internal bug ID 218 where SQLGetDiagRec failed to set the
  internal MessageText length for diagnostics held in server diagnostic
  records and could therefore return rubbish for string fields.

  Fixed internal bug ID 217 where SQLPrepare in the OOB client may fail
  to add one to the RPC length if the TextLength argument is SQL_NTS.
  This required a change to the RPC definitions which makes the new OOB
  client and server incompatible with previous betas.

19-Mar-1999
  Fixed internal bug IDs 193 and 199 where arguments to SQLTables and
  SQLColumns may not be replicated at the OOB server correctly. e.g.
  SQLTables("%", 1, "", 0, "", 0, "", 0) became
  SQLTables("%",1, NULL,0, NULL,0, NULL,0). i.e. empty strings were
  translated to NULL.

Changes since 0.2.0.0
---------------------

17-March-1999
  Added a workaround for Applixware's AXData program which quotes table
  names with spaces in them for the call to SQLColumns. Add 
  Unquote_Catalog_Fns = 1 to odbc.ini file in the DSN section.

15-March-1999
  Added a simple demo (demo.c in the examples directory) which connects to
  demo.easysoft.com and retrieves data from MS SQLServer running there.

10-March-1999
  Fixed internal bug ID 191. Cannot connect from Impromptu through OOB to
  MS SQLServer due to failure to decrypt password properly.

9-March-1999
  Made the OOB look for .odbc.ini and ODBCINI environment variable as well as
  odbc.ini - order is ODBCINI->odbc.ini->.odbc.ini.

5-March-1999
  Added support for iODBC-2.12 and SuSE's Office Suite 99. see the file
  SuSE_Office_Suite_99.

4-March-1999
  Added support for iODBC-2.50 from the FreeODBC project. Only minor changes
  to avoid name space clashes.
