File Change History


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.

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.