The libnpfs remove handler was only decerementing the fid refcount when the server's remove operation returned success. Plan 9 remove(5) says it has to drop the fid whether the remove succeeds or fails.
Allow Npconn to store client_id and authuser, and eliminate diod-specific transport and use fdtrans. The client_id then becomes available for logging inside libnpfs, which can't assume a particular transport. Added DEBUG_AUTH flag (diod -d 0x2) to help with debug of auth path. Whenever auth/attach returns an error to the client in libnpfs, log something. In diod_auth.c, log user, aname, and client_id in all error messages, and include any munge errors so we can run down problems like out of sync clocks on specific clients. Tighten up some error handling code in libnpfs, and fix a double call to auth->clunk (fidpool + np_clunk: eliminated the np_clunk one).
Drop ChangeLog content and insert a reference to git log. Update README based on current program options. Add "Client Requirements", and "Support" sections, and add info to "Testing" on setting up I/O forwarding on clusters.
In the 'test/kern' tests, the mount system call was hanging because 'kconjoin', the parent of the client and server in this portion of the test suite, was sloppy about closing duplicate file descriptors. As a result, the kernel did not see an EOF on its connection to the server when the server exited. This addresses issue #27. Also, the server would silently drop connections when deprecated 9P ops were received. The 2.6.35 kernel was an early stage of 9P2000.L development where although 9P2000.L was negotiated, it was still sending a TSTAT instead of a TGETATTR when handling the mount system call. To make debugging this easier, deprecated protocol ops are regognized (though not decoded) in the DEBUG_9P_PROTO output, and a message is logged when one of these, or any other protocol error, is encountered.
Replaced straight AC_CHECK_HEADERS / X_AC_CHECK_CONDLIB calls with Reuben Thomas's ax_lua.m4 (slightly modified) from git://git.sv.gnu.org/autoconf-archive.git Updated README with instructions for building on Debian/Ubuntu. This addresses diod issue #21.
The "ttrans" transport was shared by both tnpsrv and tnpfile so pull it out to a separate file, ttrans.c and make it more useful with an interface for performing rpc's on the transport analagous to the client library. misc/t12 (tnpfile under valgrind) became an expected pass after these changes.
libdiod/diod_upool.[ch] goes away and libnpfs/user.c does all the user lookup functions in a UNIX way. This facilitated some cleanup of error handling (some user lookup errors were fatal in diod_upool.c when they shouldn't have been). Also, it simplified somewhat the auth/attach handling code in libnpfs/fcall.c. Instead of handing "allsquash" in the upool code, we now simply remap fid->user in diod's attach handler, in file system specific code whre it belongs.
socket setup and server thread startup. Make tests that require lua run conditionally on its availability.
have diodctl propagate SIGHUP to children. Use SIGUSR1 to quietly terminate diod after idle timeout.
is unavailable [issue 24] - Refactor server start/stop code. Start a single service thread for accepting connections and handling SIGHUP/SIGTERM. Tear it down on orderly shutdown. - Add np_srv_shutdown () to assist with orderly server teardown. - Remove vestigual configure/include of zlib.h. - Drop diod_conf_arm_sighup () and associated thread management. - Drop diod_sock_accept_batch () and associated thread management.
Fix couple memory problems.