File Change History


Version 1.12

New Feature: The package now compiles with VC++ 5.0 (due to the new winsock2 include, "windows.h" must be included in rpc.h instead of "winsock.h"). Also, everthing now installs nicer with InstallShield.

Harald Albrecht, Chair of Process Control Engineering, Aachen University of Technology, has adapted the sources to Borland C++ 5.0. The binaries and executables contained in this package have been compiled with BC++ 5.0. The package is based on version 1.11 and is still compilable using VC++ 4.2.

READ_BC.TXT --
This readme file from Harald Albrecht is new.

MAKEBC.BAT --
Compiles everything using BC++. Enjoy!

RPC\SVC.H --
Corrected the line specifying import information when another application includes the ONC/RPC header files: _declspec(dllimport) fd_set svc_fdset; Also added the necessary changes for BC++.

RPC\CLNT.H --
Added some stuff, such that the following variable is now properly exported from the DLL and imported into other applications: struct rpc_createerr rpc_createerr; Also added the necessary changes for BC++.

LIBRPC\ONCRPC.DEF --
Added the line "rpc_createerr DATA" at the end of this .DEF file. Added the line "_null_auth DATA" at the end of this .DEF file.

LIBRPC\MAKEFILE.BC --
TEST\MAKEFILE.BC --
RPCINFO\MAKEFILE.BC --
RPCGEN\MAKEFILE.BC --

SERVICE\MAKEFILE.BC --
New Makefiles suitable for Borland C++. You must edit the BC makro to addapt them to your local BC setup.

SERVICE\INSTALL --
Installs the ONC/RPC package into %SystemRoot%\system32 and copies the "RPC" file into %SystemRoot%\system32\drivers\etc. You only have to start the service using "Control Panel|Services|Portmap".

LIBRPC\ONCBCIMP.DEF --
Necessary to bypass the strange behaviour of MSVC to export the names of C functions in DLLs without the leading underscore! This file is used by IMPLIB to create a import library which maps the real function names containing the underscore to the names exported by the ONCRPC.DLL.

LIBRPC\ONCRPCBC.DEF --
Necessary to be compatible with the MSVC++. This exports the names of the C functions from the DLL without the leading underscore.

LIBRPC\RPC_PROT.C --
Changed to be compliant with BC++, which is behaves much better according to the ANSI C++ spec:

LIBRPC\RPC_COMM.C --
Same as above...

LIBRPC\GETRPCEN.C --
Corrected wrong prototype for "interpret()". It was missing the "char *val"

RPCGEN\RPC_MAIN.C --
Addapted for Borland's CPP Makro Preprocessor.

RPCINFO\GETOPT.C --
Removed strange "extern strlen(), _write();" which caused compilation errors.

Version 1.11

New Feature: In version 1.11 now finally the variable "svc_fdset" is exported by oncrpc.dll. A good news for all of you who want to write their own server loop. While there still is no complete C++ integration, rpcgen now generates header-files with "#ifdef __cplusplus" and allows to call the stubs directly from C++ (with the additional "CLIENT" parameter). The portmapper service now accepts a "-v" flag. If this is not given it will no longer trash the application log with useless messages about (not) found services (Thanks to Martin Johnson). I removed the VC++ Development Studio files as they contained absolute pathnames from my environment, so that were probably useless and confusing for anybody else.

Bugfix 1: I have (8.Apr.97) updated "SRPC111.ZIP" with a bugfix in "svc.h". I changed line 252 from:
_declspec(dllexport) fd_set svc_fdset;
to:
_declspec(dllimport) fd_set svc_fdset;
If you are going to use the variable "svc_fdset" in your application (basically if you want to write your own server loop) you should modify this file accordingly if you downloaded "SRPC111.ZIP" earlier. There is no need for reloading the complete distribution.

Version 1.10

New Feature: You can compile it all in the VC++ Development Studio (The old way of compiling it from a shell still works). The xxxbyname routines now work if you have an "rpc"-file in %SystemRoot%\system32\drivers\etc\.

Bug-fixes: XDR_FLOAT now also knows about ALPHA and PPC (thanks to Wayne Seward and Ray Drueke).

Version 1.09

New Feature: The "rpcinfo" utility is now included.

Version 1.08

New Feature: Version 1.08 now contains some experimental support for NT's multi-threading. The new rpcgen generates server stubs that can operate as multi-threaded servers. The initial thread serves as "master-thread" that does all message receptions and the creation and shutdown of connections. When an incoming request has been processed by the master thread, a new server-thread is created that executes the server-procedure, sends back the answer and that terminates afterwards. This allows to porcess multiple client requests concurrently. To enable this experimental feature you have to define the pre-processor symbol MULTITHREAD when compiling the server stub "*_svc.c". It requires no changes to the oncrpc.dll. But there are some caveats:

Bug-fixes: If there are a number of "old", already closed socket-connections in the TCP-state TIME_WAIT the winsock implementation fails in creating a new connection to the same and still open remote (server) socket (clnt_create). I still don't known why and the UN*X sockets seem to behave differently but now I added some lines in clnt_tcp.c, that force the client sockets to shut down immediatly after "closesocket" (socket-option linger). This seems to work.
In the event log the oncrpc.dll now uses the correct name "oncrpc.dll" instead of the old name "rpc.dll" (thanks to Cyrille Chepelov).
In clnt_per.c I added a check for a winsock errno (instead of a standard errno) before indexing "sys_errlist" (thanks to Don Porges).

Version 1.07

Increased the size of the pipe between rpcgen and the C preprocessor (0x1000 o 0xffff). The small size caused rpcgen to hang when bigger interface definition files were compiled. (Thanks to Heiko Bacher)

Version 1.06

A bug in "rpcgen/rpc_main.c" has been fixed that caused "rpcgen.exe" to hang when invocing the Visual C++ 4.0 preprocessor. (Thanks to Kosma Zygouras)

Version 1.05

The calls clnt_spcreateerror(), clnt_sperror(), and clnt_broadcast() have been added to the dll interface. Broadcast rpc now works, but it does not try to find out the local IP-broadcast addresses (does anybody know how to do that on NT ?), instead it sends out a request to ff.ff.ff.ff. (Thanks to Don Porges and Ray Drueke)

Version 1.04

Fixes a bug in the XDR double coding/encoding. In former version doubles from X86 machines were not swapped completely, thus double transfer fails between little and big endian machines. (Thanks to Bill Wade!)

Version 1.03

Fixes a major bug in version 1.02 that crashed an rpc-application, when a socket-handle > 128 was used by the system. (Thanks to Rene de Vries!) Also RPC.DLL and RPC.LIB were renamed to ONCRPC.DLL and ONCPRC.LIB in order avoid confusion with the MS-RPC stuff.