diff --git a/BPQChat.vcproj.DESKTOP-TGEL8RC.John.user b/BPQChat.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 40182c4..0000000
--- a/BPQChat.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQChat.vcproj.SKIGACER.johnw.user b/BPQChat.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index b5b0536..0000000
--- a/BPQChat.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQMail.vcproj.DESKTOP-TGEL8RC.John.user b/BPQMail.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 40182c4..0000000
--- a/BPQMail.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQMail.vcproj.HPLAPTOP.johnw.user b/BPQMail.vcproj.HPLAPTOP.johnw.user
deleted file mode 100644
index f361c86..0000000
--- a/BPQMail.vcproj.HPLAPTOP.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQMail.vcproj.SKIGACER.johnw.user b/BPQMail.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index b5b0536..0000000
--- a/BPQMail.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQRemotePTT.vcproj.DESKTOP-TGEL8RC.John.user b/BPQRemotePTT.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 40182c4..0000000
--- a/BPQRemotePTT.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQWinAPP.vcproj.DESKTOP-TGEL8RC.John.user b/BPQWinAPP.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 40182c4..0000000
--- a/BPQWinAPP.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPQWinAPP.vcproj.SKIGACER.johnw.user b/BPQWinAPP.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index b5b0536..0000000
--- a/BPQWinAPP.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Bpq32.c b/Bpq32.c
index 04c6804..c0da5ed 100644
--- a/Bpq32.c
+++ b/Bpq32.c
@@ -1115,6 +1115,8 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Fix processing C command if first port driver is SCSPACTROR (20)
// Fix crash in UZ7HO driver if bad raw frame received (21)
// Fix using FLARQ chat mode with FLDIGI ddriover (22)
+// Fixed to KISSHF driver (23)
+// Fix for application buffer loss (24)
#define CKernel
diff --git a/CBPQ32.vcproj.DESKTOP-TGEL8RC.John.user b/CBPQ32.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 40b9267..0000000
--- a/CBPQ32.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CBPQ32.vcproj.HPLAPTOP.johnw.user b/CBPQ32.vcproj.HPLAPTOP.johnw.user
deleted file mode 100644
index 58f2ea6..0000000
--- a/CBPQ32.vcproj.HPLAPTOP.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CBPQ32.vcproj.SKIGACER.johnw.user b/CBPQ32.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index 6a3e804..0000000
--- a/CBPQ32.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CommonCode.c b/CommonCode.c
index e074e5d..4aba2a1 100644
--- a/CommonCode.c
+++ b/CommonCode.c
@@ -536,6 +536,7 @@ VOID * _GetBuff(char * File, int Line)
byteaddr = (unsigned char *)Msg;
+ memset(&byteaddr[0], 0, 64); // simplify debugging lost buffers
memset(&byteaddr[400], 0, 64); // simplify debugging lost buffers
sprintf(&byteaddr[400], "%s %d", fptr, Line);
diff --git a/ConfigDirewolf.vcxproj.user b/ConfigDirewolf.vcxproj.user
deleted file mode 100644
index b7d26ea..0000000
--- a/ConfigDirewolf.vcxproj.user
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- Old Old
- WindowsLocalDebugger
-
-
- Old Old
- WindowsLocalDebugger
-
-
\ No newline at end of file
diff --git a/ConfigWinRPR.vcxproj.user b/ConfigWinRPR.vcxproj.user
deleted file mode 100644
index 6e2aec7..0000000
--- a/ConfigWinRPR.vcxproj.user
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/KISSHF.c b/KISSHF.c
index 44b9071..6d84237 100644
--- a/KISSHF.c
+++ b/KISSHF.c
@@ -187,11 +187,9 @@ static int ProcessLine(char * buf, int Port)
*ptr = 0;
}
- if (_memicmp(buf, "WL2KREPORT", 10) == 0)
- TNC->WL2K = DecodeWL2KReportLine(buf);
- else if (_memicmp(buf, "SESSIONTIMELIMIT", 16) == 0)
- TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit = atoi(&buf[16]) * 60;
- else
+ if (_memicmp(buf, "UPDATEMAP", 9) == 0)
+ TNC->PktUpdateMap = TRUE;
+ else if (standardParams(TNC, buf) == FALSE)
strcat(TNC->InitScript, buf);
}
return (TRUE);
diff --git a/L2Code.c b/L2Code.c
index 252b167..d145b5f 100644
--- a/L2Code.c
+++ b/L2Code.c
@@ -1155,7 +1155,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
return;
}
-
// IF CONNECT TO APPL ADDRESS, SET UP APPL SESSION
if (APPLMASK == 0)
@@ -1170,10 +1169,6 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
int Paclen= PORT->PORTPACLEN;
UCHAR * ptr;
- if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
- AttachKISSHF(PORT, Buffer);
-
-
if (LogAllConnects)
{
char toCall[12], fromCall[12];
@@ -1184,6 +1179,9 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
L2SENDUA(PORT, Buffer, ADJBUFFER);
+ if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
+ AttachKISSHF(PORT, Buffer);
+
if (NO_CTEXT == 1)
return;
@@ -1291,9 +1289,56 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
// ACCEPT THE CONNECT, THEN INVOKE THE ALIAS
+ L2SENDUA(PORT, Buffer, ADJBUFFER);
+
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
+ {
+ struct DATAMESSAGE * Msg;
+ int Totallen = 0;
+ int Paclen= PORT->PORTPACLEN;
+ UCHAR * ptr;
+
AttachKISSHF(PORT, Buffer);
+ // if Port CTEXT defined, use it
+
+ if (PORT->CTEXT)
+ {
+ Totallen = strlen(PORT->CTEXT);
+ ptr = PORT->CTEXT;
+ }
+ else if (HFCTEXTLEN)
+ {
+ Totallen = HFCTEXTLEN;
+ ptr = HFCTEXT;
+ }
+
+ if (Paclen == 0)
+ Paclen = PACLEN;
+
+ while(Totallen)
+ {
+ Msg = GetBuff();
+
+ if (Msg == NULL)
+ break; // No Buffers
+
+ Msg->PID = 0xf0;
+
+ if (Paclen > Totallen)
+ Paclen = Totallen;
+
+ memcpy(Msg->L2DATA, ptr, Paclen);
+ Msg->LENGTH = Paclen + MSGHDDRLEN + 1;
+
+ C_Q_ADD(&LINK->TX_Q, Msg);
+
+ ptr += Paclen;
+ Totallen -= Paclen;
+ }
+
+ }
+
if (LogAllConnects)
{
char toCall[12], fromCall[12];
@@ -1302,13 +1347,10 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
WriteConnectLog(fromCall, toCall, "AX.25");
}
- L2SENDUA(PORT, Buffer, ADJBUFFER);
-
Msg = GetBuff();
if (Msg)
{
-
Msg->PID = 0xf0;
memcpy(Msg->L2DATA, APPL->APPLCMD, 12);
@@ -1331,14 +1373,12 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
DetachKISSHF(PORT);
+
L2SENDDM(PORT, Buffer, ADJBUFFER);
return;
}
- if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
- AttachKISSHF(PORT, Buffer);
-
if (LogAllConnects)
{
char toCall[12], fromCall[12];
@@ -1346,7 +1386,58 @@ VOID L2SABM(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffe
fromCall[ConvFromAX25(ADJBUFFER->ORIGIN, fromCall)] = 0;
WriteConnectLog(fromCall, toCall, "AX.25");
}
+
L2SENDUA(PORT, Buffer, ADJBUFFER);
+
+ if (PORT->TNC && PORT->TNC->Hardware == H_KISSHF)
+ {
+ struct DATAMESSAGE * Msg;
+ int Totallen = 0;
+ int Paclen= PORT->PORTPACLEN;
+ UCHAR * ptr;
+
+ AttachKISSHF(PORT, Buffer);
+
+ // if Port CTEXT defined, use it
+
+ if (PORT->CTEXT)
+ {
+ Totallen = strlen(PORT->CTEXT);
+ ptr = PORT->CTEXT;
+ }
+ else if (HFCTEXTLEN)
+ {
+ Totallen = HFCTEXTLEN;
+ ptr = HFCTEXT;
+ }
+ else
+ return;
+
+ if (Paclen == 0)
+ Paclen = PACLEN;
+
+ while(Totallen)
+ {
+ Msg = GetBuff();
+
+ if (Msg == NULL)
+ break; // No Buffers
+
+ Msg->PID = 0xf0;
+
+ if (Paclen > Totallen)
+ Paclen = Totallen;
+
+ memcpy(Msg->L2DATA, ptr, Paclen);
+ Msg->LENGTH = Paclen + MSGHDDRLEN + 1;
+
+ C_Q_ADD(&LINK->TX_Q, Msg);
+
+ ptr += Paclen;
+ Totallen -= Paclen;
+ }
+ return;
+ }
}
VOID SETUPNEWL2SESSION(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, MESSAGE * Buffer, UCHAR MSGFLAG)
diff --git a/MailNode.vcproj.DESKTOP-TGEL8RC.John.user b/MailNode.vcproj.DESKTOP-TGEL8RC.John.user
deleted file mode 100644
index 7a49481..0000000
--- a/MailNode.vcproj.DESKTOP-TGEL8RC.John.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MailNode.vcproj.HPLAPTOP.johnw.user b/MailNode.vcproj.HPLAPTOP.johnw.user
deleted file mode 100644
index 4add25e..0000000
--- a/MailNode.vcproj.HPLAPTOP.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MailNode.vcproj.SKIGACER.johnw.user b/MailNode.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index 7be11b6..0000000
--- a/MailNode.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MailNode.vcxproj.user b/MailNode.vcxproj.user
deleted file mode 100644
index 4442946..0000000
--- a/MailNode.vcxproj.user
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- c:\linbpq
- WindowsLocalDebugger
-
-
- c:\linbpq
- WindowsLocalDebugger
-
-
-
-
- WindowsLocalDebugger
- c:\linbpq
-
-
\ No newline at end of file
diff --git a/NodeMapTest.vcproj.SKIGACER.johnw.user b/NodeMapTest.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index b5b0536..0000000
--- a/NodeMapTest.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Versions.h b/Versions.h
index 14ddb81..11cbe15 100644
--- a/Versions.h
+++ b/Versions.h
@@ -10,8 +10,8 @@
#endif
-#define KVers 6,0,23,22
-#define KVerstring "6.0.23.22\0"
+#define KVers 6,0,23,24
+#define KVerstring "6.0.23.24\0"
#ifdef CKernel
diff --git a/WinmorControl.vcproj.SKIGACER.johnw.user b/WinmorControl.vcproj.SKIGACER.johnw.user
deleted file mode 100644
index b5b0536..0000000
--- a/WinmorControl.vcproj.SKIGACER.johnw.user
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cMain.c b/cMain.c
index e436e1d..9eca342 100644
--- a/cMain.c
+++ b/cMain.c
@@ -102,7 +102,7 @@ struct DEST_LIST * ENDDESTLIST = NULL; // ; NODE LIST+1
;
VOID * BUFFERPOOL = NULL; // START OF BUFFER POOL
-VOID * ENDBUFFERPOOL;
+VOID * ENDBUFFERPOOL = NULL;
int OBSINIT = 5; // INITIAL OBSOLESCENCE VALUE
int OBSMIN = 4; // MINIMUM TO BROADCAST
@@ -2465,6 +2465,9 @@ VOID FindLostBuffers()
unsigned int rev;
UINT CodeDump[16];
+ char codeText[65] = "";
+ unsigned char * codeByte = (unsigned char *) CodeDump;
+
PBPQVECSTRUC HOSTSESS = BPQHOSTVECTOR;
struct _TRANSPORTENTRY * L4; // Pointer to Session
@@ -2583,6 +2586,14 @@ VOID FindLostBuffers()
memcpy(CodeDump, Bufferlist[n], 64);
+ for (i = 0; i < 64; i++)
+ {
+ if (codeByte[i] > 0x1f && codeByte[i] < 0x80)
+ codeText[i] = codeByte[i];
+ else
+ codeText[i] = '.';
+ }
+
for (i = 0; i < 16; i++)
{
rev = (CodeDump[i] & 0xff) << 24;
@@ -2599,7 +2610,7 @@ VOID FindLostBuffers()
Debugprintf(" %08x %08x %08x %08x %08x %08x %08x %08x %d",
CodeDump[8], CodeDump[9], CodeDump[10], CodeDump[11], CodeDump[12], CodeDump[13], CodeDump[14], CodeDump[15], Msg->Process);
- Debugprintf(" %s", &fileptr[400]);
+ Debugprintf(" %s %s", &fileptr[400], codeText);
}
}