Dead zombies and other fixes - see WHATSNEW
This commit is contained in:
parent
eaa1abb2fd
commit
257a17a944
|
@ -700,4 +700,9 @@ Initialization
|
||||||
Console := NIL;
|
Console := NIL;
|
||||||
Keyboard := NIL;
|
Keyboard := NIL;
|
||||||
|
|
||||||
|
Finalization
|
||||||
|
|
||||||
|
If Assigned(Console) Then Console.Free;
|
||||||
|
If Assigned(Keyboard) Then Keyboard.Free;
|
||||||
|
|
||||||
End.
|
End.
|
||||||
|
|
|
@ -3896,7 +3896,7 @@ Begin
|
||||||
End Else
|
End Else
|
||||||
Msg^.SetMailType (mmtEchoMail);
|
Msg^.SetMailType (mmtEchoMail);
|
||||||
|
|
||||||
Msg^.SetOrig(bbsCfg.NetAddress[mArea.NetAddr]);
|
Msg^.SetOrig (GetMatchedAddress(bbsCfg.NetAddress[mArea.NetAddr], mAddr));
|
||||||
|
|
||||||
Case mArea.NetType of
|
Case mArea.NetType of
|
||||||
1 : If mArea.QwkConfID = 0 Then
|
1 : If mArea.QwkConfID = 0 Then
|
||||||
|
|
|
@ -534,8 +534,6 @@ Begin
|
||||||
Console.WriteLine('ERROR: No servers are configured as active.');
|
Console.WriteLine('ERROR: No servers are configured as active.');
|
||||||
|
|
||||||
NodeData.Free;
|
NodeData.Free;
|
||||||
Keyboard.Free;
|
|
||||||
Console.Free;
|
|
||||||
|
|
||||||
Halt(10);
|
Halt(10);
|
||||||
End;
|
End;
|
||||||
|
|
|
@ -82,7 +82,6 @@ Begin
|
||||||
BarOne.Free;
|
BarOne.Free;
|
||||||
BarAll.Free;
|
BarAll.Free;
|
||||||
INI.Free;
|
INI.Free;
|
||||||
Console.Free;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure ApplicationStartup;
|
Procedure ApplicationStartup;
|
||||||
|
|
|
@ -60,7 +60,7 @@ Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
|
||||||
Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String;
|
Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String;
|
||||||
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
|
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
|
||||||
Function GetNodeByRoute (Dest: RecEchoMailAddr; 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
|
Implementation
|
||||||
|
|
||||||
|
@ -579,20 +579,17 @@ Begin
|
||||||
Close (F);
|
Close (F);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function IsValidAKA (Zone, Net, Node: Word) : Boolean;
|
Function IsValidAKA (Zone, Net, Node, Point: Word) : Boolean;
|
||||||
Var
|
Var
|
||||||
Count : Byte;
|
Count : Byte;
|
||||||
Begin
|
Begin
|
||||||
Result := False;
|
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
|
For Count := 1 to 30 Do Begin
|
||||||
Result := (bbsCfg.NetAddress[Count].Zone = Zone) And
|
Result := (bbsCfg.NetAddress[Count].Zone = Zone) And
|
||||||
(bbsCfg.NetAddress[Count].Net = Net) And
|
(bbsCfg.NetAddress[Count].Net = Net) And
|
||||||
(bbsCfg.NetAddress[Count].Node = Node);
|
(bbsCfg.NetAddress[Count].Node = Node) And
|
||||||
|
(bbsCfg.NetAddress[Count].Point = Point);
|
||||||
|
|
||||||
If Result Then Break;
|
If Result Then Break;
|
||||||
End;
|
End;
|
||||||
|
|
|
@ -342,7 +342,7 @@ Begin
|
||||||
// IsNetMail := True;
|
// IsNetMail := True;
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
(*
|
|
||||||
If MsgText[MsgLines]^[1] = #1 Then Begin
|
If MsgText[MsgLines]^[1] = #1 Then Begin
|
||||||
If Copy(MsgText[MsgLines]^, 2, 4) = 'INTL' Then
|
If Copy(MsgText[MsgLines]^, 2, 4) = 'INTL' Then
|
||||||
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgDest)
|
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgDest)
|
||||||
|
@ -350,7 +350,7 @@ Begin
|
||||||
If (Copy(MsgText[MsgLines]^, 2, 5) = 'MSGID') Then
|
If (Copy(MsgText[MsgLines]^, 2, 5) = 'MSGID') Then
|
||||||
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgOrig);
|
Str2Addr(strWordGet(2, MsgText[MsgLines]^, ' '), MsgOrig);
|
||||||
End;
|
End;
|
||||||
*)
|
|
||||||
Inc (MsgSize, Length(MsgText[MsgLines]^));
|
Inc (MsgSize, Length(MsgText[MsgLines]^));
|
||||||
Inc (MsgLines);
|
Inc (MsgLines);
|
||||||
|
|
||||||
|
|
|
@ -181,7 +181,7 @@ Var
|
||||||
// if netmail is TO someone on this system do not export
|
// if netmail is TO someone on this system do not export
|
||||||
|
|
||||||
If MBase.NetType = 3 Then
|
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;
|
Exit;
|
||||||
|
|
||||||
Log (2, '+', ' Export #' + strI2S(MsgBase^.GetMsgNum) + ' to ' + Addr2Str(EchoNode.Address));
|
Log (2, '+', ' Export #' + strI2S(MsgBase^.GetMsgNum) + ' to ' + Addr2Str(EchoNode.Address));
|
||||||
|
|
|
@ -86,6 +86,7 @@ Var
|
||||||
CurTag : String;
|
CurTag : String;
|
||||||
MBase : RecMessageBase;
|
MBase : RecMessageBase;
|
||||||
Count : LongInt;
|
Count : LongInt;
|
||||||
|
Route : RecEchoMailNode;
|
||||||
Begin
|
Begin
|
||||||
If Not PKT.Open(PktFN) Then Begin
|
If Not PKT.Open(PktFN) Then Begin
|
||||||
Log (3, '!', ' ' + JustFile(PktFN) + ' is not valid PKT');
|
Log (3, '!', ' ' + JustFile(PktFN) + ' is not valid PKT');
|
||||||
|
@ -93,7 +94,7 @@ Var
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
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');
|
Log (3, '!', ' ' + JustFile(PktFN) + ' does not match an AKA');
|
||||||
|
|
||||||
PKT.Close;
|
PKT.Close;
|
||||||
|
@ -118,7 +119,9 @@ Var
|
||||||
If PKT.MsgArea = 'NETMAIL' Then Begin
|
If PKT.MsgArea = 'NETMAIL' Then Begin
|
||||||
|
|
||||||
If Not ProcessedByAreaFix(PKT) Then
|
If Not ProcessedByAreaFix(PKT) Then
|
||||||
If GetMBaseByNetZone (PKT.PKTHeader.DestZone, MBase) Then Begin
|
If IsValidAKA(PKT.MsgDest.Zone, PKT.MsgDest.Net, PKT.MsgDest.Node, PKT.MsgDest.Point) Then Begin
|
||||||
|
|
||||||
|
If GetMBaseByNetZone(PKT.MsgDest.Zone, MBase) Then Begin
|
||||||
For Count := 1 to ForwardSize Do
|
For Count := 1 to ForwardSize Do
|
||||||
If strUpper(strStripB(strWordGet(1, ForwardList[Count], ';'), ' ')) = strUpper(PKT.MsgTo) Then
|
If strUpper(strStripB(strWordGet(1, ForwardList[Count], ';'), ' ')) = strUpper(PKT.MsgTo) Then
|
||||||
PKT.MsgTo := strStripB(strWordGet(2, ForwardList[Count], ';'), ' ');
|
PKT.MsgTo := strStripB(strWordGet(2, ForwardList[Count], ';'), ' ');
|
||||||
|
@ -134,15 +137,26 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
MessageBaseOpen (MsgBase, MBase);
|
MessageBaseOpen (MsgBase, MBase);
|
||||||
|
|
||||||
SavePKTMsgToBase (MsgBase, PKT, True);
|
SavePKTMsgToBase (MsgBase, PKT, True);
|
||||||
|
|
||||||
Log (2, '+', ' Netmail from ' + PKT.MsgFrom + ' to ' + PKT.MsgTo);
|
Log (2, '+', ' Netmail from ' + PKT.MsgFrom + ' to ' + PKT.MsgTo);
|
||||||
|
|
||||||
Inc (TotalNet);
|
Inc (TotalNet);
|
||||||
|
End;
|
||||||
End Else
|
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
|
End Else Begin
|
||||||
|
// Echomail msg
|
||||||
|
|
||||||
If Dupes.IsDuplicate(PKT.MsgCRC) Then Begin
|
If Dupes.IsDuplicate(PKT.MsgCRC) Then Begin
|
||||||
Log (3, '!', ' Duplicate message found in ' + PKT.MsgArea);
|
Log (3, '!', ' Duplicate message found in ' + PKT.MsgArea);
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ Begin
|
||||||
While Not Eof(InFile) Do Begin
|
While Not Eof(InFile) Do Begin
|
||||||
ReadLn(InFile, Str);
|
ReadLn(InFile, Str);
|
||||||
|
|
||||||
Str := strStripB(Str, ' ');
|
Str := strReplace(strStripB(Str, ' '), #9, ' ');
|
||||||
|
|
||||||
If strWordGet(1, strUpper(Str), ' ') <> 'AREA' Then Continue;
|
If strWordGet(1, strUpper(Str), ' ') <> 'AREA' Then Continue;
|
||||||
|
|
||||||
|
@ -97,6 +97,9 @@ Begin
|
||||||
FBase.CommentACS := INI.ReadString(Header_FILEBONE, 'acs_comment', '');
|
FBase.CommentACS := INI.ReadString(Header_FILEBONE, 'acs_comment', '');
|
||||||
FBase.SysopACS := INI.ReadString(Header_FILEBONE, 'acs_sysop', 's255');
|
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
|
If INI.ReadString(Header_FILEBONE, 'free_files', '0') = '1' Then
|
||||||
FBase.Flags := FBase.Flags OR FBFreeFiles;
|
FBase.Flags := FBase.Flags OR FBFreeFiles;
|
||||||
|
|
||||||
|
|
|
@ -44,19 +44,13 @@ Begin
|
||||||
While Not Eof(InFile) Do Begin
|
While Not Eof(InFile) Do Begin
|
||||||
ReadLn(InFile, Str);
|
ReadLn(InFile, Str);
|
||||||
|
|
||||||
Str := strStripB(Str, ' ');
|
Str := strReplace(strStripB(Str, ' '), #9, ' ');
|
||||||
|
|
||||||
If (Str[1] = ';') or (Str = '') Then Continue;
|
If (Str[1] = ';') or (Str = '') Then Continue;
|
||||||
|
|
||||||
TagName := strStripLow(strWordGet(1, Str, ' '));
|
TagName := strStripLow(strWordGet(1, Str, ' '));
|
||||||
BaseName := strStripLow(strStripB(Copy(Str, Pos(' ', Str), 255), ' '));
|
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);
|
ProcessStatus (BaseName, False);
|
||||||
|
|
||||||
If Not IsDupeMBase(TagName) Then Begin
|
If Not IsDupeMBase(TagName) Then Begin
|
||||||
|
|
|
@ -86,8 +86,6 @@ End;
|
||||||
Procedure DisposeClasses;
|
Procedure DisposeClasses;
|
||||||
Begin
|
Begin
|
||||||
Session.Free;
|
Session.Free;
|
||||||
Keyboard.Free;
|
|
||||||
Console.Free;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
|
@ -458,6 +456,7 @@ Begin
|
||||||
|
|
||||||
If Session.ConfigMode Then Begin
|
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');
|
Console.SetWindowTitle ('Mystic Configuration');
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,10 @@ design elements/issues.
|
||||||
|
|
||||||
BUGS AND POSSIBLE 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
|
- fidonet NA export
|
||||||
- shift+c key in OSX does not work without shiftlock (rudi)?
|
- 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?)
|
- need to add QWK network ID to all message bases (remove QWK net flag?)
|
||||||
|
|
|
@ -3849,4 +3849,21 @@
|
||||||
! Fixed a bug when using spaces in menu filenames which caused the menu
|
! Fixed a bug when using spaces in menu filenames which caused the menu
|
||||||
editor to fail to edit, copy, and delete menus.
|
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>
|
<ALPHA 38 RELEASED>
|
||||||
|
|
Loading…
Reference in New Issue