"No free lines" should not abort trying, but try again, and again.

If a line get too many retries, something sane should be done, like
sending a letter to postmaster, and/or retrying each day.

funpack/fpack has to do dupe-checking! All texts that are routed
directly by funpack, and never goes through news, are never
dupe-checked.

funpack should check if a text going to a conference is coming from a
node authorized to send texts into that conference.

File-attaches to messages

Password protected links.

Feed points.

Maybe somethings should be done with the passwords in the .PKT file.


----------------------------------------------------------------------
The following comes from the old TODO file:
----------------------------------------------------------------------

fcall should set carrier_lost or try a clean exit.
  
Address processor should be more intelligent. It should handle bang
paths and different combinations. State machine like sendmail would
probably be better.

Make telink/xmodem send startup quicker: Try telink block two times
first, then first block and telink block until either one is
successfull.

Combining all the executables would make it better to keep rfmail
always running in daemon mode, receiving mail and other stuff via
message queue or socket if available.

Should mail root or fidonet admin about weird situations. It does this
sometimes, but this should be made more general.

When writing last block to disk, only required number of bytes should
be written, not full block.
  
When writing last block to disk, only required number of bytes should
be written, not full block.

LCK..fidonet could be created by programs, not scripts. Interrupt
handler/terminate handler should be built. Including cleanups.

xtsend ack/nak followed by sealink block numbers: block numbers are
just read, but ignored. I should write a 'readresponse' to read all
the nak's and ack's, so it would be easier to check out.

There are protocol problems in Dutchie, Frontdoor and Dbridge. These
may not apply current versions anymore but old ones are still around
here and there.

Dutchie: Does not regognize telink block. Sealink block works. At
least in some versions failure is nasty, as connection gets done but
nothing is transferred. It may be that this bug was in the last free
version of Dutchie, thus they are still around. Use telinkmail false
or -T in fcall.

Frontdoor: Like Dutchie, does not know telink block. Echoes every
single character in the telink block with a 'C'. Use telinkmail false
or -T.

Dbridge: Does not accept mail if it isn't sent immedialetly after
connection.  Make prewait 0 seconds instead of 5, and it should work.
  
Telinkblock/firstblock hassle should be moved to fcall. Its not clean
to have those things in xtrec, which should be xmodem receiver,
nothing else.

386 microport misses too many characters, transfer gets cancelled but
failure isn't noticed.

Block number is internally int. I overflows at 8 megabytes, and goes
negative already at 4 megabytes. Even though fidonet isn't
transferring that much stuff these days, and protocol probably will be
rewritten by then, it looks nasty.

When using small indices, sysop is replaced with sysop name from
routed host, it should be kept as is if message is routed. It may be
better to rewrite index routines.

Config file could have include statement. one needs a file pointer stack.

Short-form indexes could be specified for names and nodes separately.
Full name index and small node index sounds fun to me, but there could
be other alternatives.

Quote-format: When reformatting text, it could try be smart with
quotes and preserve them. Would be fun, but it sure requires some
work.

- If startup fails, it should abort, now it tries to read empty file,
doesn't notice eof, and gives weird error messages.

- Name translation (alias file) could save new name/uid combinations
automatically.

- fio should try to look for NO CARRIER, or some configurable string,
so hangups could be noticed. Now it keeps trying and timesouts, if the
other end cuts line. Some systems seem to send ENQ, but others don't.

- Address parser should be completely rewritten, maybe yacc would
handle it better. Currently it is a mess and still can't parse bang
paths and like.

- Sequence information should be stored in one file instead of many. 

- receive-path should same as system fidonet address. This doesn't
work yet, better addressing scheme should be implemented.

Mesh-dosh version might be a good idea, so we could get rid of
problems with fidonet standards, and uucp stuff between rfc822-capable
systems.

- Error condition panics usually leave locks etc laying around. This
is nasty and should be corrected. There are many occurences of this.
Serious problem, lock files hang around until someone deletes them
manually.

It should be made capable of running multiple instances of
utilities. What you need to implement:

- nodelist.c should make sure noone else is trying to reindex nodelist
at the same time.

- Configuration routines have same problem. Locks needed again.

Combining all the routines to one file might be an idea to think about?
It would get bigger but quite a lot of executable sizes become from
same routines linked to all other files.

There should be a lock file for funpack, now one can start up two
funpacks and it extracts all messages twice. Built some logic in
fcaller and packer scripts, but they aren't idiot-proof.

It still needs complete rewrite.

Protocol module seems to need improvement, specially startup sometimes
seems to be rough. I also tried to work with opus without any kind of
front end as v32 modem I had took too long time to time out and
binkley started to opus, but protocol startup failed, it got one
packet but then started complaining about funny packet numbers and I
havent had time to check it out.

Batching news would improve performance a lot, though I guess
rewriting funpack would save even more. Currently reading config and
indices is by far most time hungry task for small modules. As long as
they can be kept in buffers, its ok but after that, *.

Zone-stuff still untested.

Forwarding to other fidonet nodes should be implemented? It would be
better to pick message as is, just change from and destination node
addresses and stick it to packets needed, which would create blazing
fast redistribution. Going through news would be cpu hogger never seen
as theres very little advantage. Echomail needs lot more work, with seenbys
and path.

Echomail conversions should work both ways, path and seenbys should be
accepted from news messages.

Ffgets still does need more tuneup: Sometimes I received messages with
soft crs and no blank. So, if lines get combined, a blank should be
inserted if soft cr is found. I think according to fsc-001 its really
the problem in someone elses software, as fsc-001 says that soft crs
etc should be ignored, not replaced with (single) blank. but I think
it would be better to accept that format also.

Message-id should really be something which could allow noticing
duplicates.  maybe date and node number could be used. Currently
echo-id is used if its present.

Date length problem is still open, is it 20 chars like in fsc-001 or
19 like in all messages I receive (via confmail)?

Fcall xmodem receive is horrible cpu hog. I have to profile it and see
whats happening, probably readline? Problems on 386 at 19200, drops
too many characters so I have to go back to xmodem. Still faster than
expected, looks like binkley is still doing windows. And probably
simply failing when error hits.

RECEIVE_PATH could be fidonet path, not symbolic as it is now, I have
to check out if news, mail etc accept addresses which start with a number.

When receiving new echo area, it should be automatically added
to rfmail.cf, and su newsuser /usr/lib/news/inews -C fidonet.echoareaname
should be called.

HDB uucp seems to be able to kill fcall calling out? Lock file is uucp
mail, is in /usr/spool/locks (svr3) and has process id in it with 10 chars
and \n at end.

Processing private echo messages could be changed, now it tries to send
them to a local user, failing in parsing address and sending the stuff to
uucp or root. Use accept-private and trash-private to get around this.

Nodelist handling become much smarter, but it still could be improved
by allowing disk-resident indices for small machines.

From: field should really be identical to Reply-To: field and latter
could be removed. On the other hand, there would be info about from
which echo feed it came from, but that should be separate field. I'll
leave it as is now, comments?

In addition to search for names in nodelist, it could given any lists
of names and addresses. This would allow club membership lists etc to
be used.

Now it uses Comment-To: to set up receiver field, node address is
either the one in nodelist or * origin. Origin probably bad guess but
that's all we have got! For this reason, storing information about
received fidonet addresses would be good idea.

Some people may get theirs reply-to field to point to node first found
by bsearch, even if they want to get mail to some other node.

There would be another solution for reply-via mail. If it doesn't find
correct node from origin line or nodelist, it should send the mail
back to original echo as private message. clumsy, though.


Packages might be tossed in the wrong order. Maybe the directory
should be sorted before the packages are unpacked?


Keep in touch!

