Dead zombies and other fixes - see WHATSNEW

This commit is contained in:
g00r00 2013-10-01 19:07:09 -04:00
parent eaa1abb2fd
commit 257a17a944
13 changed files with 76 additions and 46 deletions

View File

@ -700,4 +700,9 @@ Initialization
Console := NIL;
Keyboard := NIL;
Finalization
If Assigned(Console) Then Console.Free;
If Assigned(Keyboard) Then Keyboard.Free;
End.

View File

@ -3896,7 +3896,7 @@ Begin
End Else
Msg^.SetMailType (mmtEchoMail);
Msg^.SetOrig(bbsCfg.NetAddress[mArea.NetAddr]);
Msg^.SetOrig (GetMatchedAddress(bbsCfg.NetAddress[mArea.NetAddr], mAddr));
Case mArea.NetType of
1 : If mArea.QwkConfID = 0 Then

View File

@ -534,8 +534,6 @@ Begin
Console.WriteLine('ERROR: No servers are configured as active.');
NodeData.Free;
Keyboard.Free;
Console.Free;
Halt(10);
End;

View File

@ -82,7 +82,6 @@ Begin
BarOne.Free;
BarAll.Free;
INI.Free;
Console.Free;
End;
Procedure ApplicationStartup;

View File

@ -60,7 +60,7 @@ Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String;
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
Function GetNodeByRoute (Dest: RecEchoMailAddr; Var TempNode: RecEchoMailNode) : Boolean;
Function IsValidAKA (Zone, Net, Node: Word) : Boolean;
Function IsValidAKA (Zone, Net, Node, Point: Word) : Boolean;
Implementation
@ -579,20 +579,17 @@ Begin
Close (F);
End;
Function IsValidAKA (Zone, Net, Node: Word) : Boolean;
Function IsValidAKA (Zone, Net, Node, Point: Word) : Boolean;
Var
Count : Byte;
Begin
Result := False;
// this doesn't check points because a point is not in the PKT header so
// we cannot compare it against the point aspect. maybe PKT 2.2 fixes
// this? research it someday
For Count := 1 to 30 Do Begin
Result := (bbsCfg.NetAddress[Count].Zone = Zone) And
(bbsCfg.NetAddress[Count].Net = Net) And
(bbsCfg.NetAddress[Count].Node = Node);
Result := (bbsCfg.NetAddress[Count].Zone = Zone) And
(bbsCfg.NetAddress[Count].Net = Net) And
(bbsCfg.NetAddress[Count].Node = Node) And
(bbsCfg.NetAddress[Count].Point = Point);
If Result Then Break;
End;

View File

@ -342,7 +342,7 @@ Begin
// IsNetMail := True;
End;
End;
(*
If MsgText[MsgLines]^[1] = #1 Then Begin
If Copy(MsgText[MsgLines]^, 2, 4) = 'INTL' Then
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgDest)
@ -350,7 +350,7 @@ Begin
If (Copy(MsgText[MsgLines]^, 2, 5) = 'MSGID') Then
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgOrig);
End;
*)
Inc (MsgSize, Length(MsgText[MsgLines]^));
Inc (MsgLines);

View File

@ -181,7 +181,7 @@ Var
// if netmail is TO someone on this system do not export
If MBase.NetType = 3 Then
If IsValidAKA(MsgBase^.GetDestAddr.Zone, MsgBase^.GetDestAddr.Net, MsgBase^.GetDestAddr.Node) Then
If IsValidAKA(MsgBase^.GetDestAddr.Zone, MsgBase^.GetDestAddr.Net, MsgBase^.GetDestAddr.Node, MsgBase^.GetDestAddr.Point) Then
Exit;
Log (2, '+', ' Export #' + strI2S(MsgBase^.GetMsgNum) + ' to ' + Addr2Str(EchoNode.Address));

View File

@ -86,6 +86,7 @@ Var
CurTag : String;
MBase : RecMessageBase;
Count : LongInt;
Route : RecEchoMailNode;
Begin
If Not PKT.Open(PktFN) Then Begin
Log (3, '!', ' ' + JustFile(PktFN) + ' is not valid PKT');
@ -93,7 +94,7 @@ Var
Exit;
End;
If Not IsValidAKA(PKT.PKTDest.Zone, PKT.PKTDest.Net, PKT.PKTDest.Node) Then Begin
If Not IsValidAKA(PKT.PKTDest.Zone, PKT.PKTDest.Net, PKT.PKTDest.Node, 0) Then Begin
Log (3, '!', ' ' + JustFile(PktFN) + ' does not match an AKA');
PKT.Close;
@ -118,31 +119,44 @@ Var
If PKT.MsgArea = 'NETMAIL' Then Begin
If Not ProcessedByAreaFix(PKT) Then
If GetMBaseByNetZone (PKT.PKTHeader.DestZone, MBase) Then Begin
For Count := 1 to ForwardSize Do
If strUpper(strStripB(strWordGet(1, ForwardList[Count], ';'), ' ')) = strUpper(PKT.MsgTo) Then
PKT.MsgTo := strStripB(strWordGet(2, ForwardList[Count], ';'), ' ');
If IsValidAKA(PKT.MsgDest.Zone, PKT.MsgDest.Net, PKT.MsgDest.Node, PKT.MsgDest.Point) Then Begin
CurTag := '';
If GetMBaseByNetZone(PKT.MsgDest.Zone, MBase) Then Begin
For Count := 1 to ForwardSize Do
If strUpper(strStripB(strWordGet(1, ForwardList[Count], ';'), ' ')) = strUpper(PKT.MsgTo) Then
PKT.MsgTo := strStripB(strWordGet(2, ForwardList[Count], ';'), ' ');
If MsgBase <> NIL Then Begin
MsgBase^.CloseMsgBase;
CurTag := '';
Dispose (MsgBase, Done);
If MsgBase <> NIL Then Begin
MsgBase^.CloseMsgBase;
MsgBase := NIL;
Dispose (MsgBase, Done);
MsgBase := NIL;
End;
MessageBaseOpen (MsgBase, MBase);
SavePKTMsgToBase (MsgBase, PKT, True);
Log (2, '+', ' Netmail from ' + PKT.MsgFrom + ' to ' + PKT.MsgTo);
Inc (TotalNet);
End;
MessageBaseOpen(MsgBase, MBase);
SavePKTMsgToBase(MsgBase, PKT, True);
Log (2, '+', ' Netmail from ' + PKT.MsgFrom + ' to ' + PKT.MsgTo);
Inc (TotalNet);
End Else
Log (3, '!', ' No NETMAIL base for zone ' + strI2S(PKT.PKTHeader.DestZone));
If GetNodeByRoute(PKT.MsgDest, Route) Then Begin
If Route.Active Then Begin
// generate outbound packet name etc etc
// add Via to the bottom
// write OUT file
End;
Log (1, '!', ' DEBUG Pass-through netmail located to ' + Addr2Str(Route.Address));
End Else
Log (2, '!', ' No netmail destination: ' + PKT.MsgTo + ' ' + Addr2Str(PKT.MsgDest));
// option to toss to badmsg?
End Else Begin
// Echomail msg
If Dupes.IsDuplicate(PKT.MsgCRC) Then Begin
Log (3, '!', ' Duplicate message found in ' + PKT.MsgArea);

View File

@ -64,7 +64,7 @@ Begin
While Not Eof(InFile) Do Begin
ReadLn(InFile, Str);
Str := strStripB(Str, ' ');
Str := strReplace(strStripB(Str, ' '), #9, ' ');
If strWordGet(1, strUpper(Str), ' ') <> 'AREA' Then Continue;
@ -97,6 +97,9 @@ Begin
FBase.CommentACS := INI.ReadString(Header_FILEBONE, 'acs_comment', '');
FBase.SysopACS := INI.ReadString(Header_FILEBONE, 'acs_sysop', 's255');
FBase.FileName := strReplace(FBase.FileName, '/', '_');
FBase.FileName := strReplace(FBase.FileName, '\', '_');
If INI.ReadString(Header_FILEBONE, 'free_files', '0') = '1' Then
FBase.Flags := FBase.Flags OR FBFreeFiles;

View File

@ -44,19 +44,13 @@ Begin
While Not Eof(InFile) Do Begin
ReadLn(InFile, Str);
Str := strStripB(Str, ' ');
Str := strReplace(strStripB(Str, ' '), #9, ' ');
If (Str[1] = ';') or (Str = '') Then Continue;
TagName := strStripLow(strWordGet(1, Str, ' '));
BaseName := strStripLow(strStripB(Copy(Str, Pos(' ', Str), 255), ' '));
// TagName := strReplace(TagName, '/', '_');
// TagName := strReplace(TagName, '\', '_');
// If Pos(TagName, '/') > 0 Then Continue;
// If Pos(TagName, '\') > 0 Then Continue;
ProcessStatus (BaseName, False);
If Not IsDupeMBase(TagName) Then Begin

View File

@ -86,8 +86,6 @@ End;
Procedure DisposeClasses;
Begin
Session.Free;
Keyboard.Free;
Console.Free;
End;
Var
@ -457,7 +455,8 @@ Begin
ExitProc := @ExitHandle;
If Session.ConfigMode Then Begin
Session.NodeNum := 0;
Session.NodeNum := 0;
Session.User.ThisUser.Flags := Session.User.ThisUser.Flags XOR UserNoTimeout;
Console.SetWindowTitle ('Mystic Configuration');

View File

@ -19,6 +19,10 @@ design elements/issues.
BUGS AND POSSIBLE ISSUES
========================
! FIDONET.NA import when tab separated causes problems
! Zombie processes on MIS linux wait() needs to be called to acknowledge that
a child is dead? try it...
- fidonet NA export
- shift+c key in OSX does not work without shiftlock (rudi)?
- need to add QWK network ID to all message bases (remove QWK net flag?)

View File

@ -3849,4 +3849,21 @@
! Fixed a bug when using spaces in menu filenames which caused the menu
editor to fail to edit, copy, and delete menus.
! When posting a text file to a netmail base using the MX menu command, the
origin address was not begin AKA matched with the destination address.
! MIS telnet in Linux should no longer create zombie processes.
+ Inactivity timeout is now disabled when running Mystic with the -CFG
option from the command line.
! MUTIL import of FIDONET.NA will now not blow up if you used tabs instead
of spaces to separate echotag with description.
! MUTIL import of FIDOBONE.NA will now not blow up if you used tabs instead
of spaces to separate tag with description.
! MUTIL import of FIDOBONE will now replace / and \ characters when
calculating the datafile name, if they exist in the echotag.
<ALPHA 38 RELEASED>