|
| | | | A - D O S _ A D D F D R E L A Y . C
| | | | |
-------------------------------=| PROJECT |=-------------------------------
Bump : 1.00
Date : 20-08-2010
File : a-dos_addfdrelay.c
-------------------------------=| HISTORY |=-------------------------------
Bump : 1.00
Date : 20-08-2010
Dude : megacz
Stat : NO
0001 : Although idea was taken from SWLoader, code will be written from
0001 : scratch to eliminate certain limitations. At the moment there is a
0001 : packet skeleton and some helper functions. Work will resume as soon
0001 : as the device make/kill and enhanced packet related functions will
0001 : be ready.
Bump : 1.01
Date : 27-11-2010
Dude : megacz
Stat : FA
0001 : Packet handling was established. It is possible to interrupt in-loop
0001 : handler, so that immediate termination is possible.
Stat : FA
0002 : File handling was implemented in '___dos_addclient()'. For now only
0002 : filenames are accepted.
Bump : 1.02
Date : 28-11-2010
Dude : megacz
Stat : FA
0001 : Basic channel handling was implemented. Now merged with file I/O.
Stat : BF
0002 : From now on all files will be opened in MODE_OLDFILE for maximum
0002 : security. This way appending is also possible.
Stat : BF
0003 : Window requests: CONSOLE, * are now satisified using user's process.
Bump : 1.03
Date : 29-11-2010
Dude : megacz
Stat : FA
0001 : Caller signaling was implemented so user can now be notified when
0001 : FDR goes down for some reason.
Stat : BF
0002 : Client allocation was reworked due to design flaw that would make
0002 : it unable to switch to clustered memory in the future.
Stat : BF
0003 : Channel and file name truncation is now being performed before going
0003 : to search. This makes sure that too long names are always matched.
Bump : 1.04
Date : 13-12-2010
Dude : megacz
Stat : FA
0001 : Dead channel removal was added using access counter. It is now up to
0001 : FDR to cleanup the channel. This makes it possible to have some I/O
0001 : treshold so clients can init channel, leave it and come back later.
Stat : FA
0002 : Buffered and non-buffered writes are now possible using two distinct
0002 : functions.
Bump : 1.05
Date : 21-12-2010
Dude : megacz
Stat : FA
0001 : Fast ANSI filtration option was added upon relay attempt per file.
Stat : FA
0002 : Text to be relayed can now contain prefixes per line. This will be
0002 : useful to match weird behaviour based on timestamps and addesses
0002 : that can be inserted before actual program output.
Bump : 1.06
Date : 23-12-2010
Dude : megacz
Stat : FA
0001 : Default channel can now be set so all 'CONSOLE:' requestes will be
0001 : routed to it.
Stat : BF
0002 : ANSI stripping is now being done just once using cache. So there is
0002 : no need to repeat this per file in the chain.
Stat : BF
0003 : Client signaling and auto. file closing are now mutually exclusive!
0003 : This is because if you do not care about FileHandle then you cannot
0003 : receive the signal and vice versa.
Bump : 1.07
Date : 25-12-2010
Dude : megacz
Stat : FA
0001 : FileHandle address as input was implemented. Can now relay purely by
0001 : address. Random inputs are checked against OS constant to make sure
0001 : it is really FH.
Stat : FA
0002 : Implemented symbolic password protection per channel using weakest
0002 : hash routine.
Stat : BF
0003 : Workaround in prefix stuffer was added so that CRLF does not messup
0003 : the resulting line.
Bump : 1.08
Date : 26-12-2010
Dude : megacz
Stat : BF
0001 : Channel can only be automatically deallocated when it is not being
0001 : protected with symbolic password. This ensures user intention no
0001 : matter global settings.
Stat : BF
0002 : Channel that is the default and password protected was alterable
0002 : without providing a password!
Stat : BD
0003 : Relay loop causes packets to hog the CPU for too long before they
0003 : arrive at the corresponding ports. Output is not in sync on all
0003 : console windows... Maybe harmless, but possible trouble maker.
Bump : 1.09
Date : 07-01-2011
Dude : megacz
Stat : FA
0001 : Virtual rollover files support was added. Now channels can memorise
0001 : the traffic using private file that can be read by the user.
Stat : FA
0002 : Channels are now date/time stamped to have a clue how long they are
0002 : up.
Bump : 1.10
Date : 11-01-2011
Dude : megacz
Stat : BF
0001 : ANSI is no longer being stripped for virtual files. From now on
0001 : virtual files memorise everything without alterations and the user
0001 : can request data without ANSI when needed.
Bump : 1.11
Date : 13-01-2011
Dude : kowalsky
Stat : BF
0001 : There was a bug in `___dos_remdeadchans()' that trashed memory on
0001 : potential channel removal. Node was not buffered before `Remove()'.
Stat : BF
0002 : Potential illegal memory read in formatted text export was found and
0002 : is now fixed.
Stat : BF
0003 : Missing error codes were added to the client initialization routine.
Bump : 1.12
Date : 15-01-2011
Dude : megacz
Stat : NO
0001 : Major code cleanup before next phase. Lets hope there is no more
0001 : nasty bugs.
Stat : BF
0002 : Inconvinience detected in 1.08/0004 was fixed by switching loop into
0002 : cooperative mode. This helps when FDR runs at priority below CON.
Bump : 1.13
Date : 01-02-2011
Dude : megacz
Stat : FA
0001 : Extensive status generation was implemented so one can 'type <FDR>:'
0001 : and see what is where. The very same formatting options can also be
0001 : used in prefix addon.
Stat : BF
0002 : Structures were cleaned up from old, now obsolete variables. Did i
0002 : miss something?
Bump : 1.14
Date : 02-02-2011
Dude : megacz
Stat : BF
0001 : Switched to clustered client allocation so that device access will
0001 : be faster and guaranteed for up to 256 clients.
Stat : BF
0002 : ANSI in fmt is now being filtered upon expansion so that overhead is
0002 : greatly reduced when relaying.
Bump : 1.15
Date : 05-01-2011
Dude : kowalsky
Stat : BF
0001 : Each read from virtual files must be tracked independently(!) Added
0001 : new variables to client structure that are attached upon request.
Stat : BF
0002 : Virtual files have not been reallocated properly on request. There
0002 : could be situation where unallocated file was valid.
Bump : 1.16
Date : 09-02-2011
Dude : megacz
Stat : FA
0001 : Added a bunch of new formatting options to the parser. Status was
0001 : expanded too.
Stat : BD
0002 : Sometimes packets arrive in wrong order. What the hell is going on?
Bump : 1.17
Date : 12-02-2011
Dude : kowalsky
Stat : BF
0001 : Circular reference was eliminated. You cannot relay over the same
0001 : device with own channels since it is single tasking(!)
Bump : 1.18
Date : 15-02-2011
Dude : kowalsky
Stat : BF
0001 : Checked few things and it looks that the routine responsible for
0001 : packet fetching is broken. This would explain 1.16/0002. I reworked
0001 : it.
Stat : BF
0002 : Virtual file removal code lacked direct pointer comparison so that
0002 : it would be the other file that could have been removed(!)
Stat : BF
0003 : Client slots have been reused silently due to commented `Remove()'
0003 : in deallocation routine(!) Enforcer was silent because memory was
0003 : already allocated.
Bump : 1.19
Date : 19-02-2011
Dude : megacz
Stat : FA
0001 : Added a channel option that allows to terminate all files if there
0001 : are no clients. Flush is now more effective.
Stat : NO
0002 : Code cleanup before next phase: Single tasking pipe implementation.
Bump : 1.20
Date : 20-02-2011
Dude : kowalsky
Stat : BF
0001 : ANSI filtering switches were recognized wrongly in relay routine.
0001 : Fixed.
Bump : 1.21
Date : 01-03-2011
Dude : megacz
Stat : FA
0001 : After many attempts finally introducing first single tasking pipe
0001 : implementation that sort of works :-) .
Bump : 1.22
Date : 02-03-2011
Dude : megacz
Stat : BF
0001 : Added special code that kicks all pipe callers who wait for reply
0001 : if channel is to be removed. Otherwise they would block forever!
Bump : 1.23
Date : 03-03-2011
Dude : kowalsky
Stat : BF
0001 : Added pipe sanity check before read/write op so that no blockage is
0001 : possible if user removed pipe facility from channel between packets.
Stat : BF
0001 : Added small flagset that allows to cause intentional IO failure when
0001 : required.
Bump : 1.24
Date : 05-03-2011
Dude : megacz
Stat : FA
0001 : Added no-EOF option so that multiple writers can output to channel
0001 : and the last one can generate end-of-input.
Stat : FA
0002 : Added CON query support so that the very first console handler on
0002 : the list will be used to communicate in RAW mode. This allows to
0002 : send private CSI sequences and read the answer. This is not pipe
0002 : related.
Bump : 1.25
Date : 08-03-2011
Dude : megacz
Stat : FA
0001 : Implemented ACTION_DISK_INFO that allows to forward this packet to
0001 : first console on the channel so that programs will get what they
0001 : expect. In case there is no console handler default values will be
0001 : returned.
Bump : 1.26
Date : 09-03-2011
Dude : kowalsky
Stat : BF
0001 : Fixed CSI query mode to work aside virtual files. Now both are
0001 : possible. User has to use `SetMode()' to decide what source to read
0001 : from.
Bump : 1.27
Date : 12-03-2011
Dude : megacz
Stat : FA
0001 : Implemented path-finder that user can install on a channel which
0001 : will be able to find primary path as established earlier by first
0001 : caller within -this- task. The idea is to follow default channel
0001 : as it changes per task. So each time user 'Open()'s this channel
0001 : it will find the default route automatically. This will work
0001 : regardless of if channel is requestable through 'CONSOLE:'.
Bump : 1.28
Date : 13-03-2011
Dude : megacz
Stat : BF
0001 : Added router support for relays and pipes so that both can be found
0001 : with two or more channels.
Stat : NO
0002 : Next phase is to implement ACTION_WAIT_CHAR that works with pipes in
0002 : a single process!
Bump : 1.29
Date : 17-03-2011
Dude : kowalsky
Stat : BF
0001 : Code responsibe for CSI queries was reworked. Consider direct mode
0001 : switches rather than forwarding which may not be what is needed at
0001 : the moment.
Bump : 1.30
Date : 18-03-2011
Dude : kowalsky
Stat : BF
0001 : A bug in pipe writer code that did not care about outstanding reads
0001 : was fixed. Now all these readers will receive EOF.
Stat : BD
0002 : Flushed channels counter does not remember peek value. Not really
0002 : important but this should be fixed at some point.
Stat : BD
0003 : Sometimes FDR crashes when successful ACTION_DIE was sent. It seems
0003 : there is a bug in device kill function. Will investigate later.
Bump : 1.31
Date : 24-03-2011
Dude : kowalsky
Stat : BF
0001 : File status line was produced with wrong formating options. Number
0001 : of clients was displayed as a number of flushed channels(!)
Bump : 1.32
Date : 25-03-2011
Dude : megacz
Stat : FA
0001 : Added low level structure access to it is possible to alter FDR own
0001 : settings from outside. For now ACTION_LOCK_RECORD/ACTION_FREE_RECORD
0001 : are used.
Bump : 1.33
Date : 01-04-2011
Dude : megacz
Stat : FA
0001 : Implemented wait char packet using packet synchroniser as taken from
0001 : experimental branch. It is possible to use single timer request
0001 : which is renewed periodically at decent rate and enqueue dos packets
0001 : by sniffing on message port.
Stat : FA
0002 : Added interrupt driven packet forwarder so that it is possible to
0002 : glue client pointer to dp_Res2. The drawback is that clients must
0002 : now use private message ports.
Bump : 1.34
Date : 05-04-2011
Dude : kowalsky
Stat : BF
0001 : Fixed packet prediction in packet synchroniser so all writes are to
0001 : be replied in the right order.
Stat : BD
0002 : It is not safe to forcibly unmount FDR now due to packet forwarder
0002 : that sits in the main code segment(!)
Stat : BD
0003 : Treshold is too unstable in `WaitForChar()' when using single FDR in
0003 : many processes. The CPU load is enormous(!)
Stat : NO
0004 : Ahhh, cramp! Did not take that into account. The CPU load is indeed
0004 : way too high. -- megacz
Bump : 1.35
Date : 09-04-2011
Dude : megacz
Stat : BF
0001 : Fixed a bug in pipe handling where read request was possibly not
0001 : satisified in whole.
Stat : BD
0002 : Weird deadlocks have been observed when there is too many WFC()
0002 : requests. Looks like packet synchroniser is to blame...
Bump : 1.36
Date : 01-05-2011
Dude : megacz
Stat : BF
0001 : Packet synchroniser was dropped. I do not want anyone to have
0001 : anything to do with this code. Todays episode: Sortcuts cost more.
Bump : 1.37
Date : 03-05-2011
Dude : megacz
Stat : FA
0001 : Now clients have their own timer request spaces that they attach to
0001 : the wait list. Special timer packet was added to poll completed
0001 : requests. Considering 1.34/0003 fixed. Considering ACTION_WAIT_CHAR
0001 : implemented.
Stat : NO
0002 : What a relief(!) This code is superrior compared to friggin packet
0002 : predictor. I see that the `moonbuggy' keeps up with the timmings
0002 : while I browse with `lynx'. Well done(!) -- kowalsky
Bump : 1.38
Date : 04-05-2011
Dude : kowalsky
Stat : BD
0001 : Too soon victory was celebrated(!) I receive random crashes when two
0001 : instances of `lynx' are running in `amiscreen'.
Stat : BF
0002 : Requests must be intially sorted out when writer cannot do the op at
0002 : this time or callers that are now waiting will never resume(!)
Bump : 1.39
Date : 06-05-2011
Dude : megacz
Stat : NO
0001 : 1.38/0001: Crash here too! Spent quite a time but still cannot find
0001 : the cause of this :-( .
Stat : BF
0002 : Timer request skeleton is now being created on init and copied per
0002 : caller instead of setting all from scratch on each call.
Bump : 1.40
Date : 13-05-2011
Dude : kowalsky
Stat : BF
0001 : Found the problem of 1.38/0001. In `___dos_checkperiod()' node was
0001 : removed after it could have already been removed by the timer or
0001 : when requests were about to be sorted out(!)
Bump : 1.41
Date : 20-05-2011
Dude : megacz
Stat : NO
0001 : Code cleanup time. Removing all dirt permanently. Copy of 1.40 can
0001 : be found in garbages.
Bump : 1.42
Date : 29-03-2012
Dude : megacz
Stat : BF
0001 : Packet forwarder is now a modular segment that gets loaded on FDR
0001 : startup. This fixes 1.34/0002.
Bump : 1.43
Date : 09-04-2012
Dude : megacz
Stat : FA
0001 : Implemented VCR support which allows to track packet delays using
0001 : high precision timer. This allows to record console interaction with
0001 : real intervals.
Bump : 1.44
Date : 10-04-2012
Dude : megacz
Stat : BF
0001 : Delays are being computed using 'GetSysTime()' instead of taking the
0001 : time from E-Clock. Overall playback feeling is better.
Bump : 1.45
Date : 11-04-2012
Dude : megacz
Stat : BF
0001 : ESC sequence tracker was added to VCR to detect when it is safe to
0001 : output delay sequence.
Stat : BF
0002 : Export function '___dos_vcrexport()' uses now temporary packets to
0002 : deal with pre and post data chunks.
Bump : 1.46
Date : 18-04-2012
Dude : megacz
Stat : BF
0001 : Delays are now to be NULLed when channel is going to be cleaned up.
0001 : This prevents extreme delays on new VCRs.
Stat : FA
0002 : Added special VCR macros to private header to easily deal with sync.
0002 : Now delay sequence is of: 'ESC[#p'(delay in micros) which should be
0002 : ignored by most terminals since it lacks second param. Clip sync is:
0002 : 'ESC[0000p'.
Bump : 1.47
Date : 01-04-2013
Dude : megacz
Stat : FA
0001 : Added kludgy ACTION_WRITE packet defragmenter that can be activated
0001 : by sending ACTION_INHIBIT (dp_Arg1 == 1) - On, (dp_Arg1 == 0) - Off.
0001 : This is temporary!
Bump : 1.48
Date : 12-10-2013
Dude : megacz
Stat : BD
0001 : Disabled ACTION_DISK_INFO completly due to bad implementation which
0001 : caused hits. The code was unusable anyway by most programs. This bug
0001 : showed up first in Directory Opus 5 II after device list request.
0001 : This bug was found thanks to Stellan Pistoor who submitted Enforcer
0001 : output.
Bump : 1.49
Date : 01-11-2013
Dude : megacz
Stat : BF
0001 : Fixed FH address checking. Please note that fm_fdcheck does not
0001 : point at fh_Func1 anymore, but instead at an array of 2 LONGs where
0001 : fh_Func1 of buffered and unbuffered FH live.
Stat : FA
0002 : Added data-flush-per-write mode. This way buffered data will always
0002 : reach the destination without being stored until next write happens.
0002 : Activate with 'BF 2' on the command line.
-------------------------------=| E::O::F |=-------------------------------
| |
| | | | |
|