---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0411290 ---------------------------------------------------------------------- This patch fixes a defect of the Eloquence database client library as released with Eloquence B.07.00. This patch will be integrated in the Eloquence B.07.00 release. Eloquence B.07.00 must be installed before applying this patch. Severity: PE70-0411290: ENHANCEMENT Superseded patches: PE70-0411190: CRITICAL (application aborts) PE70-0406021: BUG FIX PE70-0406010: BUG FIX PE70-0305230: BUG FIX PE70-0305210: BUG FIX Patch PE70-0411290 ------------------ Platforms: All * The eqdb database client library was enhanced to upload process information to the database server when a server connection is established (requires eloqdb6 patch PE70-0411291 or newer). The process information is then output in the session status of the server web status and allows to identify the application. The process information includes the user id (not on Windows), the process id and the command line. In addition, if the environment variable EQ_AUDIT_INFO is set its content is also included. The EQ_AUDIT_INFO environment variable allows to include application specific information in the status output. * The eqdb database client library was enhanced to use additional options to detect if a database resides on an already connected server. Previous library versions simply compared the hostname and the service name as provided with dbopen (or specified in the EQ_DBSERVER environment variable). However this did not work in case different spelling was used (including a different case) or different names could resolve to the same server address. With the EnableIPC=2 server configuration option this could result in warning messages like below: P0: Unable to attach shm segment P0: shmat: Invalid argument (errno 22) P0: establish_ipc_communication: unable to attach shm In this case the the application works correctly but is potentially less efficient as TCP communication was used instead of shared memory to communicate with the server process. The database client library now resolves the IP address and the port number if the comparison on host name or service name does not match against existing connections. In addition it will discover local connections on different IP addresses. * Changed internal library revision to "B.07.00.06" Platforms: HP-UX, Linux * The eqdb database client library was enhanced to check if a process was fork()ed with a database opened. This is unsupported and resulted in undefined behavior with previous library versions. Any attempt to access the database in the forked child process will now abort with an internal error like below: Assertion failed: initial_process_id == current_process_id A fork() is valid if no database is currently opened. * The eqdb database client library was enhanced to improve the reliability of the EnableIPC=2 server configuration option. With this configuration option, a single shared memory segment is used for local server connections. The client library was modified to verify the connection is still active to avoid a possible corner case where the connection was closed by the server and the memory might have been re-used by another application (this check is more effective with eloqdb6 patch PE70-0411291 or newer installed). Patch PE70-0411190 ------------------ Platforms: HP-UX, Linux * This patch fixes a race condition with shared memory communication that could result in applications to abort unexpectedly with status -700:-6. An error message like below is written to the console (#2528). semop(DOWN): Invalid argument (errno 22) Failure during wait on server response semop(DOWN): Identifier removed (errno 36) Failure during wait on server response Unexpected schedule flag value When using a common shared memory segment for communication with the server (EnableIPC=2 is configured on the server) the client library marks the shared memory region as invalid when closing the server connection. However, this was done in the wrong order. This could result in a problem if the shared memory segment was immediately reused by a new connection. * Changed internal library revision to "B.07.00.05" Patch PE70-0406021 ------------------ Platforms: Windows * This patch fixes is required on Windows when the image3k patch PE70-0406020 (or newer) is installed. Otherwise loading of the image3k library fails due to undefined externals. The image3k DBMAINT intrinsic requires that additional functions are exported from the Eloquence client library. Patch PE70-0406010 ------------------ Platforms: All * This patch fixes a compatibility problem with the image3k DBINFO mode 301 (#2300). The image3k library internally makes use of the Eloquence DBINFO mode 303 to implement DBINFO mode 301. However the Eloquence DBINFO mode 303 did not return sort item information when a master set was provided as qualifier. The Eloquence client library was changed to return the sort item in the related detail set when a master set is passed as qualifier. * Changed internal library revision to "B.07.00.04" Patch PE70-0305230 ------------------ Platforms: All * Fixes a regression in idb_logon() * Changed internal library revision to "B.07.00.03" Patch PE70-0305210 ------------------ Platforms: All * The EQ_DBUSER and EQ_DBPASSWORD environment variables did not work as expected with the TurboIMAGE compatibility (#1970). The EQ_DBUSER and EQ_DBPASSWORD environment variables may be used to specify the default user and password to access the database. However they were only considered when the Eloqunce idb_logon() API function was called. With the image3k library the idb_logon() API function is only called when a user and password is specified and consequently the defaults are ignored. The Eloquence database client library has been modified to use the default user and password, independendly if the idb_logon() API function is called. * The idb_logon() function has been modified to recognize empty user and password (zero character string) as no password (#1970). * Eloquence may call malloc to allocate zero bytes (#1918) While this is not a problem it may cause problems with code verification tools, such as Electric Fence. * Changed internal library revision to "B.07.00.02" Installation: ------------- UNIX: In order to install this patch, you need to unpack it with gzip. Gzip is included with HP-UX and Linux. Installation requires root privileges. cd /opt/eloquence6 gzip -dc /path/to/PE70-0411290-hpux.tar.gz | tar xf - Files: Linux: lib/libeqdb.so lib/libeqdb.a share/doc/PE70-0411290-README HP-UX: lib/pa11_32/libeqdb.sl (HP-UX PA-RISC 1.1 32bit) lib/pa11_32/libeqdb.a lib/pa20_32/libeqdb.sl (HP-UX PA-RISC 2.0 32bit) lib/pa20_32/libeqdb.a lib/pa20_64/libeqdb.sl (HP-UX PA-RISC 2.0 64bit) lib/pa20_64/libeqdb.a lib/hpux32/libeqdb.sl (HP-UX Itanium 32bit) lib/hpux32/libeqdb.a lib/hpux64/libeqdb.sl (HP-UX Itanium 64bit) lib/hpux64/libeqdb.a share/doc/PE70-0411290-README Windows: Download the PE70-0411290-win32.zip file and unpack its contents with WinZip or PKUNZIP. Installation requires administrative capabilities. Please copy the .dll files into the WINDOWS SYSTEM DIRECTORY (for example C:\Windows\System32). Please copy the .lib files into the lib subdirectory of your Eloquence installation (for example C:\Programs\Eloquence\lib). Please copy the PE70-0411290-README.txt file into the share\doc subdirectory of your Eloquence installation (for example C:\Programs\Eloquence\share\doc). Files: eloqdb32.dll eloqdb32.lib libeqdb.lib PE70-0411290-README.txt