Changes made to Jnos 1.11b to yield 1.11c (19 Nov 1998): dirutil.c Only compile commas() ifndef UNIX_DIR_LIST dialer.c ksubr.c sessmgr.c Mods for RedHat 5.0 compilation (GLIBC v6) u2j.c unixasy.c kernel.c unix.h + fix dialer ping response printing dojnos Define env. vars NOSSYSOP, NOSPASSWD, NOSPATH. smtpserv.c Added validation of local users when SMTP_VALIDATE_LOCAL_USERS is #define'd. Unix Jnos supports HOLD_PARSER program. version.c Info cmd shows SMTP(validated) when SMTP_ VALIDATE_LOCAL_USERS is #define'd. udp.c Slight improvement in del_udp(). mboxcmd.c Fix ml call, when call begins with a digit. fbbfwd.c Detect missing fields in FBB proposal. nntpserv.c Send IHAVE before MODE READER to keep INNd happy. Change poll() to dopoll(). dirutil.h global.h index.h Initial mods by KF8NH for Sun Solaris ksubr.c mboxfile.c sessmgr.c compilation. ttydriv.c u2j.c unix.h unixasy.c unix.c unixtm.h usock.h kernel.c proc.h curses.c iproute.c Handle rare case of (malformed) empty IP pkt. pc.c Define Trace when ALLCMD is #undef'ed. main.c Call setmbnrid() after setting hostname. =========================================================================== I reduced the size of Jnos a little bit by only compiling commas() in dirutil.c when it is needed, ie, when UNIX_DIR_LIST is not defined. RedHat 5.x introduced some changes to the Linux include files, which required some changes to Jnos modules: dialer.c ksubr.c sessmgr.c u2j.c unixasy.c I =think= that these changes coincide with features.h defining __GNU_LIBRARY__ to 2 or 6 instead of 1. Also, I found why ncurses 1.9.9e didn't work with Linux Jnos, and adjusted the stack-size fudging in kernel.c and dirutil.c to accomodate 1.9.9e ncurses too (I think). I found that Slackware 3.4 has an old makedepend, that searches the wrong dirs for stddef.h and stdarg.h. The warnings during a 'make depend' can be ignored in this case, or symbolic links could be added to /usr/include to point to these includes under /usr/lib/gcc-lib/*/*. (Other solutions exist too!) Since the Linux environment typically has lots of space available, I set some variables in dojnos, to facilitate sysop access even if ftpusers is damaged: NOSSYSOP, NOSPASSWD, NOSPATH, NOSPRIVS. Gelson, PU5PKT asked about validating local users during SMTP msg delivery. I added code when SMTP_VALIDATE_LOCAL_USERS is #define'd, to check that a local user name is either an alias, or a user mentioned in ftpusers, areas, popusers (provided that the POP server code is compiled in), or in users.dat. This last file contains a list of users who have connected to the mailbox, provided that USERLOG was also #define'd. If you wish to disregard this file, then also #define SMTP_VALIDATE_FTPPOP_ONLY, but I don't recommend this! When a local user name is not found in any of the mentioned files, the Jnos SMTP server will reject the msg, indicating the user was unknown. I changed the info command in version.c to display SMTP(validated) for the SMTP server, when SMTP_VALIDATE_LOCAL_USERS is in effect. Jim WU3V reported some strange crashes under Linux, while closing a UDP socket. While the crashes went away after an "index *" (!!) I did decide to modify del_udp() in udp.c to guarantee mbuf manipulations were protected by a lock. Michael, KF9UG reported a bug in the mbox ML Call command, when Call begins with a digit. I fixed it in dombusers() in mboxcmd.c. Jim WU3V reported a Linux crash due to a Winlink system making an FBB forwarding proposal with a missing BID field. This is now diagnosed (error 11) since two adjacent blanks are illegal. I changed dofbbrecv() in fbbfwd.c. I further increased the SMTP server stack, especially under UNIX, as a function of whether NEWS_TO_MAIL and SMTP_VALIDATE_LOCAL_USERS are #define'd. It seems that stack usage is particularly large under Unix ... this may be an area worth more analysis. Changes made to smtp1() in smtpserv.c. Stewart G0LGS and Robin, G8ECJ sent a fix to nntpserv.c, so that a MODE READER command sent to INNd would occur after any IHAVE proposals (if allowed), since IHAVE is illegal after a MODE READER is sent (it isn't understood by nnrpd). This has the effect of always proposing local news articles before we ask for updates ... this seems harmless. Tony F5GIT suggested that the Linux Jnos should be able to support holding messages based on content. I added the ability to invoke an external program to do this (only under Unix). #define HOLD_PARSER "/path/to/parser/prog" will enable Jnos to invoke this program, when 'mbox holdlocal yes' is in effect, for each msg just before delivery to an area. If the parser returns a non-zero error code, the msg is held. A C program to do this is in the source archive, called scanjmsg.c. I noticed that under various Linux distributions, running Jnos in an xterm window broke the ability to interpret cursor-up and -down as command history recall keys. It turns out that an xterm by default does not provide the expected "application keypad" escape sequences, but this can be remedied by setting the appcursorDefault resource to true, or by pressing control-middle- mouse-button while in the xterm window, and selecting "Enable Application Cursor Keys". Barry K2MF provided a fix for dodialer() in dialer.c, to pass a zero socket number to pingem(), thus guaranteeing that an ICMP reply packet will not be printed to that socket number, which might have been reassigned since it is closed right after the pingem() call. This should prevent strange text (x.y.z.w:rtt) appearing in the wrong data stream. Brandon KF8NH provided lots of modifications to permit Jnos to compile under Sun Solaris (using the GCC compiler). Testing under Solaris 2.5.1 and 2.6 with ncurses-4.2 and gcc 2.8.1. Use makefile.sol instead of makefile.lnx. See readme.sol for installation procedures. THE SOLARIS VERSION DOES NOT WORK PROPERLY; FIXES ARE SOLICITED! Task switching and stack management are suspect! Fixed rare case of an axip packet that contained no tcp portion, yet claimed to in the IP header, causing a null-pointer crash in Unix Jnos. See iproute() in iproute.c, after trim_mbuf(). Robin G8ECJ reported that the Trace pointer was not defined when ALLCMD was #undef'ed. Fixed, in pc.c in kbread(). Demetre SV1UY reported that the mbox gateway printed only "reconnected to " after a disconnect, when no AX25 code was compiled in. Fixed, by using the hostname as setmbnrid() intended, in dohostname() in main.c.