Please note that not every release is made available for all the
supported platforms.

Changes since 1.0.0.33
======================

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 the 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.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               