Modifications made to Jnos 1.11c to yield Jnos 1.11d, June 1999:

mailbox.c			Mask off E-bit correctly.

files.c				Handle converse user validation special-case.

nntpserv.c			Display proper tmpfile() error msg.
				Don't update poll time unless all went well.
				Improve parsing of Received:... by hostname.

lapb.c				Avoid calling lapb_output with dead ptr.

lzw.c				Test for null tcb ptr before tracing lzw
				efficiency

pop3cli.c			Add POP_MAX_MSGS support.

smtpserv.c			Allow HOLD_PARSER to be #define'd in config.h.

domhdr.c			Handle unsupported RR types better.

curses.c			Add 8bit curses option.

main.c				Process session-manager options in S and T args.
				Write 'mbox mailstats' into log at exit.

bpqcmd.c,callcli.c,main.c	Replace "Too many sessions\n" with string var.

forward.c			Fix bid generation when Message-ID is very long.

mailcli.c			Fix pophost name comparison bug; add optional
				username test in pop drop and pop kick.

smtpcli.c			Allow smtp gateway's ipaddr to change per DNS.
				Fix rare duplicated dot in long lines.

dirutil.c			Fix Solaris compilation problem.

term.c,unixasy.c,config.h	Added support for TERMSERVER #define.

unixconf.h,bbsconf.h,users.h,	Correct misspelled AGGRESSIVE_GCOLLECT #define.
distconf.h,gwconfig.h,homeslip.h

{rip,ripcmd,ripdump}.c, rip.h	Added RIP-98 support if RIP98 #define'd.
commands.h, version.c

http.c				Tighten security.  Allow missing root.html.

pcgen.asm, ksubr.c		Test for msdos 7.

lcsum.c,md5.c,ksubr.c,global.h	Revise LITTLE_ENDIAN tests per GCC usage.

ttydriv.c, ftpcli.c		Eliminate some compile-time warnings.

global.h,dialer.c,unixasy.c	Mods for Linux with glibc 2.1 includes.
-----------------------------------------
Vic, UT1WPR reported that stations gatewaying through Jnos always had an odd
outbound SSID.  Investigation showed that Jnos was masking off one too many
bits of the incoming SSID, thus assuring the outbound SSID would be odd.  I
fixed the mask value in mailbox.c in routine mbx_getname().

I found that the Linux Jnos would crash if the converse user name matched
the NOSSYSOP value, so I fixed userlogin() in files.c to accommodate this
special case.

Pierre-Yves, F5TMZ, reported a dubious error msg from nntpserv.c, and so I
fixed temp_file() to preserve the errno variable for interpretation.

Jim WU3V reported a crash in lapb_input() in the Linux version.  I found that
the ax25_cb pointer axp was no longer pointing to a chained control-block, and
thus indicates a race condition with some other call to del_ax25() to dechain
the pointer.  I added code to detect this in lapb.c; is it sufficient and
well-conceived?

Kip WB3AFL reported a crash after sending SMTP traffic, in the Linux Jnos.
I found that he had lzw trace enabled, and that a race condition exists between
computing the lzw efficiency report from data kept in the tcp tcb, and freeing
the tcp tcb following a close.  Jnos will now show zeroes in the trace report,
rather than reporting incorrect results or crashing.

I added a test in pop3cli.c such that if POP_MAX_MSGS is #define'd, its value
is taken as the largest number of messages to transfer in a single pop session.
It is unlikely to be of much utility unless your circuits suffer high BER.

Scott WF3R found a problem in compiling smtpserv.c under Linux, when HOLD_
PARSER was #define'd in config.h.  Fixed by changing the include ordering.

Gerhard PE1RLZ reported a Linux Jnos crash, when certain messages were
processed by smtp into a newsgroup.  I found that the parsing of the hostname
following the "by" keyword in the Received: header line, was deficient.  I
fixed this in mkreplypath() in nntpserv.c.

I found that when Linux Jnos was acting as a DNS server, it could crash when
passing on an unsupported RR type, since no data portion was retained from
the initial query.  I fixed htonrr() in domhdr.c.  Thanks to Ronnie W0PLW for
reporting the bug and testing fixes.

I wanted some way to allow Unix Jnos to display IBM character codes > 127 on the
console, so I added an option called 8bit to the curses driver.  When in effect
the upper half of fonts like default8x16 can be displayed.  See the Linux
setfont command to change the current display font for virtual consoles.  To
turn the 8bit option off, set option no8bit.  Also, I made a minor change to
main.c so that options can be specified in the usual way (ie after the session
manager name and a colon) in the S and T command-line arguments.  Since the S
option establishes the default session manager, something like -Scurses:8bit
will assure that all BBS, ttylink, etc. sessions are capable of producing char
codes > 127.
If you run Jnos under X, in an xterm window, you will want to specify a font
that provides for IBM character codes > 127.  Also, if you want to use the
dynamic font sizing that xterms do via ctrl-right-mouse-button, you should
select a font that can scale or have suitable sizes.  So far, I've found the vga
font from the dosemu package works for xterm (but only for the default font).

I happened to notice that the variable TooManySessions was not used in three
places in Jnos.  I replaced three strings of "Too many sessions\n" with
the equivalent variable, to save a few bytes in main.c, callcli.c and bpqcmd.c.

I finally saw that Jnos wasn't generating the CRC bids right when the @ in the
Message-ID string occured later than 59 chars into the string.  This may be the
case when ISO addresses are embedded in the Message-id, and may also occur
in certain Pine installations (if I recall correctly from a conversation with
K2MF). I fixed this by changing makecl() in forward.c to allocate enough
room for the entire Message-Id string before parsing it.  A symptom of the
problem was that certain maillist msgs from linux-hams were not being forwarded
by ax.25 due to lacking a computed bid.

Tom W1FJE reported a problem with the pop kick command kicking the wrong pop
host.  Jnos was applying the doman suffix to its pophost name, and then
comparing only as many characters as the concatenation yielded.  This fails
when there is no domain suffix defined, and one hostname is a subset of another
pophost name.  I changed mailcli.c to not append the domain name, since resolve
will do this if necessary.  Also, the full provided hostnames are used in all
comparisons.  At least this is now consistent with how the NNTP code does it!
I also added the ability to specify a username to the pop drop and pop kick
commands, e.g. "pop kick pop.usl.edu jpd".  This allows a particular pop server
entry to be selected when several entries refer to different usernames at the
same server host.  If no username is given, the first-found entry is affected.

Barry K2MF suggested that the smtp gateway's ipaddr change if the DNS supports
a varying load-sharing ip-address response.  I changed smtp_fwd() in smtpcli.c
to resolve the specified gateway name once per smtp queue scan.  This also
means that Jnos will adapt to a gateway DNS entry change without needing a
reboot.

I modified dirutil.c to compile under Solaris when UNIX_DIR_LIST is not
#define'd.  Incidently, the Solaris SPARC Jnos port segfaults whenever console
input is entered when in a new session that reads a line at a time!  But,
char at a time sessions, like more and dir, work fine.  Haven't figured that
one out yet.

I finally got around to allowing TERMSERVER to be compiled into the Unix Jnos.
I modified term.c and unixasy.c and unixconf.h.

I added log messages at Jnos exit, equivalent to the 'mbox mailstats' report.
This might help anyone interested in summarizing Jnos activity during the
whole runtime.  To enable this log msg, DOS users should #define EXITSTATS 1.
Unix users always get the report.

Robin G8ECJ reported that the AGGRESSIVE_GCOLLECT #define was misspelled in
the sample config files (but correct in alloc.c).  Fixed.

I found that smtpsendfile() in smtpcli.c was not allowing for long lines when
testing for a leading dot, which could result in inserting an extra dot.
Fixed.

Robin G8ECJ commented that nntppoll() in nntpserv.c will update the poll time
even when errors occur.  I thus changed nntppoll() to only update the poll time
when no errors occur, in keeping with the behaviour prior to 1.11c.

Gareth G4HIP provided RIP-98 mods to the Jnos RIP code.  RIP98 is a light-
overhead rip variant by G8BPQ, and is enabled in Jnos when both RIP and
RIP98 are #define'd.  See rip98.txt for details and examples.

Neil VK2ANK provided some mods to allow the http server to operate with a
missing root.html file (it is treated like any other dir, that is, a directory
listing is produced).  This will facilitate using a CDROM as the server's
rootdir: in the 'start http' command provide the drive letter of the cdrom, and
set the rootdir to "".  Also, one can now #define HTTP_INDEX_NAME "index" to
have Jnos search for "index.html" instead of "welcome.html" in a directory.
"index.html" seems more common nowadays.  The default remains "welcome.html"
(idea by KF9UG).  I also made changes to fix http directory listings under Unix.

I noticed that a Windows 98 system reports itself to Jnos in two ways:  as
a Windows system (when run as a windows task), and as Dos 7 (when windows is
not running).  I changed pcgen.asm to test for Dos 7, and ksubr.c to report it
as Dos 5/6/7 [I assume Dos 7 programs give up time as do Dos 6 programs].

I (finally) made the tests for LITTLE_ENDIAN work as GCC and Linux <endian.h>
intend: test what __BYTE_ORDER is #define'd to.  Thus Linux GCC sets it auto-
matically, and for MSDOS I set it to Intel format: __LITTLE_ENDIAN = 1234,
in global.h.  This removes many Linux compiler warnings. Gcc/Solaris does it
differently, using the Solaris <byteorder.h>, so global.h accommodates this.

I fixed ttydriv.c to avoid compile-time warnings about TRUE/FALSE, and
ftpcli.c to avoid warnings about dorename() which was also named in dirutil.c.

Brandon KF8NH provided mods to enable compilation on a Linux system with
glibc 2.1 include files.  This includes RedHat 6.0, Debian 2.2 and Slackware4.0.
global.h, unixasy.c and dialer.c were changed.  Also, the makefile should refer
to the installed curses library as -lncurses, not -lcurses.
