Update upstream source from tag 'upstream/6.0.24.80+repack'

Update to upstream version '6.0.24.80+repack'
with Debian dir 9e943f8d36
This commit is contained in:
Hibby 2025-08-12 20:09:07 +01:00
commit a6b3c4bdc9
10 changed files with 132 additions and 19 deletions

View File

@ -49,7 +49,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
#define DM 0x0F #define DM 0x0F
#define UA 0x63 #define UA 0x63
#define FRMR 0x87 #define FRMR 0x87
#define XID 0xAF #define XID 0xAF
#define TEST 0xE3 #define TEST 0xE3
#define RR 1 #define RR 1
#define RNR 5 #define RNR 5
@ -267,16 +267,16 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, int * Fra
FRMRFLAG = 1; FRMRFLAG = 1;
break; break;
case XID: case XID:
strcpy(SUP, "XID"); strcpy(SUP, "XID");
XIDFLAG = 1; XIDFLAG = 1;
break; break;
case TEST: case TEST:
strcpy(SUP, "TEST"); strcpy(SUP, "TEST");
TESTFLAG = 1; TESTFLAG = 1;
break; break;
} }

View File

@ -1154,6 +1154,7 @@
// Add Send and Receive byte counts to status displays (69) // Add Send and Receive byte counts to status displays (69)
// Validate Mode and Frequency and fix formatting in Connected Message (71) // Validate Mode and Frequency and fix formatting in Connected Message (71)
// Fix using OpenBCM on other than Telnet connections (75) // Fix using OpenBCM on other than Telnet connections (75)
// Fix sending + in Webmail (80)
#include "bpqmail.h" #include "bpqmail.h"
#include "winstdint.h" #include "winstdint.h"

View File

@ -1279,6 +1279,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// Fix to L4Compress from Steve G7TAJ (77) // Fix to L4Compress from Steve G7TAJ (77)
// Fix possible FRMR when RNR is cleared by SREJ (78) // Fix possible FRMR when RNR is cleared by SREJ (78)
// Fix error in .77 L4Compress fix (mine, not Steve's!) (78) // Fix error in .77 L4Compress fix (mine, not Steve's!) (78)
// Fix possible stuck L2 session when handling SREJ (79)
#define CKernel #define CKernel

View File

@ -983,7 +983,27 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return 0; return 0;
} }
if (wParam == 0x7) // BEL (Ctrl/G)
{
// Get buffer, append 07 and write back
Cinfo->kbptr = SendMessage(Cinfo->hwndInput, WM_GETTEXT, INPUTLEN-1,
(LPARAM) (LPCSTR)Cinfo->kbbuf);
Cinfo->kbbuf[Cinfo->kbptr++] = 7;
Cinfo->kbbuf[Cinfo->kbptr] = 0;
SendMessage(Cinfo->hwndInput,WM_SETTEXT,0,(LPARAM)(LPCSTR) Cinfo->kbbuf);
// Send cursor right
SendMessage(Cinfo->hwndInput, WM_KEYDOWN, VK_RIGHT, 0);
SendMessage(Cinfo->hwndInput, WM_KEYUP, VK_RIGHT, 0);
return 0;
}
} }
return CallWindowProc(Cinfo->wpOrigInputProc, hwnd, uMsg, wParam, lParam); return CallWindowProc(Cinfo->wpOrigInputProc, hwnd, uMsg, wParam, lParam);

View File

@ -2176,7 +2176,9 @@ VOID SFRAME(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, UCHAR CTL, UCHA
int count; int count;
MESSAGE * Msg; MESSAGE * Msg;
MESSAGE * Buffer; MESSAGE * Buffer;
LINK->L2FLAGS &= ~POLLSENT; // CLEAR I(P) or RR(P) SET
Msg = LINK->FRAMES[NS]; // is frame available? Msg = LINK->FRAMES[NS]; // is frame available?
if (Msg == NULL) if (Msg == NULL)
@ -2977,6 +2979,43 @@ VOID SDETX(struct _LINKTABLE * LINK)
// if (LINK->L2RESEQ_Q) // if (LINK->L2RESEQ_Q)
// return; // return;
// **** Debug code **** look for stuck links
if (LINK->LASTFRAMESENT && (time(NULL) - LINK->LASTFRAMESENT) > 60) // No send for 60 secs
{
if (COUNT_AT_L2(LINK) > 16)
{
// Dump Link State
char Normcall[11] = "";
char Normcall2[11] = "";
int Count = COUNT_AT_L2(LINK);
int secs = time(NULL) - LINK->LASTFRAMESENT;
ConvFromAX25(LINK->LINKCALL, Normcall);
ConvFromAX25(LINK->OURCALL, Normcall2);
Debugprintf("*** Stuck L2 Session for %d Secs %s %s %d", secs, Normcall, Normcall2, Count);
Debugprintf("LINK->LINKNS %d LINK->LINKOWS %d SDTSLOT %d LINKWINDOW %d L2FLAGS %d", LINK->LINKNS, LINK->LINKOWS, LINK->SDTSLOT, LINK->LINKWINDOW, LINK->L2FLAGS);
Debugprintf("Slots %x %x %x %x %x %x %x %x", LINK->FRAMES[0], LINK->FRAMES[1], LINK->FRAMES[2], LINK->FRAMES[3],
LINK->FRAMES[4], LINK->FRAMES[5], LINK->FRAMES[6], LINK->FRAMES[7]);
// Reset Link
InformPartner(LINK, NORMALCLOSE); // TELL OTHER END ITS GONE
LINK->L2RETRIES -= 1; // Just send one DISC
LINK->L2STATE = 4; // CLOSING
L2SENDCOMMAND(LINK, DISC | PFBIT);
return;
}
}
Outstanding = LINK->LINKNS - LINK->LINKOWS; // Was WS not NS Outstanding = LINK->LINKNS - LINK->LINKOWS; // Was WS not NS
if (Outstanding < 0) if (Outstanding < 0)
@ -2994,6 +3033,10 @@ VOID SDETX(struct _LINKTABLE * LINK)
Msg = Q_REM(&LINK->TX_Q); Msg = Q_REM(&LINK->TX_Q);
Msg->CHAIN = NULL; Msg->CHAIN = NULL;
LINK->LASTFRAMESENT = time(NULL);
LINK->LASTSENTQCOUNT = COUNT_AT_L2(LINK);
if (LINK->AllowCompress && Msg->LENGTH > 20 && LINK->TX_Q && Msg->PID == 240) // if short and no more not worth trying compression if (LINK->AllowCompress && Msg->LENGTH > 20 && LINK->TX_Q && Msg->PID == 240) // if short and no more not worth trying compression
{ {
int complen = 0; int complen = 0;
@ -3018,6 +3061,7 @@ VOID SDETX(struct _LINKTABLE * LINK)
// I think I need to know how many slots are available, so I don't compress too much // I think I need to know how many slots are available, so I don't compress too much
// Then collect data, compressing after each frame to make sure will fit in available space // Then collect data, compressing after each frame to make sure will fit in available space
while (LINK->FRAMES[n] == NULL && slots < 8) while (LINK->FRAMES[n] == NULL && slots < 8)
{ {
slots++; slots++;

View File

@ -10,8 +10,8 @@
#endif #endif
#define KVers 6,0,24,78 #define KVers 6,0,24,80
#define KVerstring "6.0.24.78\0" #define KVerstring "6.0.24.80\0"
#ifdef CKernel #ifdef CKernel

View File

@ -2662,10 +2662,10 @@ VOID SaveNewMessage(struct HTTPConnectionInfo * Session, char * MsgPtr, char * R
if (strlen(WebMail->BID) > 12) if (strlen(WebMail->BID) > 12)
WebMail->BID[12] = 0; WebMail->BID[12] = 0;
UndoTransparency(WebMail->BID); // UndoTransparency(WebMail->BID);
UndoTransparency(WebMail->To); // UndoTransparency(WebMail->To);
UndoTransparency(WebMail->Subject); // UndoTransparency(WebMail->Subject);
UndoTransparency(WebMail->Body); // UndoTransparency(WebMail->Body);
MsgLen = strlen(WebMail->Body); MsgLen = strlen(WebMail->Body);

View File

@ -930,6 +930,9 @@ typedef struct _LINKTABLE
VOID * FRAMES[8]; // FRAMES WAITING ACK VOID * FRAMES[8]; // FRAMES WAITING ACK
VOID * RXFRAMES[8]; // Frames received out of sequence VOID * RXFRAMES[8]; // Frames received out of sequence
time_t LASTFRAMESENT; // For detecting stuck links
int LASTSENTQCOUNT; //
UCHAR L2STATE; // PROCESSING STATE UCHAR L2STATE; // PROCESSING STATE
UCHAR Ver2point2; // Set if running 2.2 UCHAR Ver2point2; // Set if running 2.2
USHORT L2TIMER; // FRAME RETRY TIMER USHORT L2TIMER; // FRAME RETRY TIMER

View File

@ -73,6 +73,8 @@
//.25 //.25
// Increase size of status display buffers (7) // Increase size of status display buffers (7)
// Allow sending BEL (CTRL/G) (79)
#include "BPQChat.h" #include "BPQChat.h"
#include "Dbghelp.h" #include "Dbghelp.h"

42
cMain.c
View File

@ -62,6 +62,7 @@ extern int needADSB;
struct PORTCONFIG * PortRec; struct PORTCONFIG * PortRec;
#define RNRSET 0x2 // RNR RECEIVED FROM OTHER END #define RNRSET 0x2 // RNR RECEIVED FROM OTHER END
#define PFBIT 0x10 // POLL/FINAL BIT IN CONTROL BYTE
// STATION INFORMATION // STATION INFORMATION
@ -2506,6 +2507,47 @@ ENDOFLIST:
if ((LINK->L2FLAGS & RNRSET) == 0) if ((LINK->L2FLAGS & RNRSET) == 0)
SDETX(LINK); SDETX(LINK);
else
{
// Stuck link debug check
if (LINK->LASTFRAMESENT && (time(NULL) - LINK->LASTFRAMESENT) > 60) // No send for 60 secs
{
if (COUNT_AT_L2(LINK) > 16)
{
// Dump Link State
char Normcall[11] = "";
char Normcall2[11] = "";
int Count = COUNT_AT_L2(LINK);
int secs = time(NULL) - LINK->LASTFRAMESENT;
ConvFromAX25(LINK->LINKCALL, Normcall);
ConvFromAX25(LINK->OURCALL, Normcall2);
Debugprintf("*** Stuck L2 Session for %d Secs RNR Set %s %s %d", secs, Normcall, Normcall2, Count);
Debugprintf("LINK->LINKNS %d LINK->LINKOWS %d SDTSLOT %d LINKWINDOW %d L2FLAGS %d", LINK->LINKNS, LINK->LINKOWS, LINK->SDTSLOT, LINK->LINKWINDOW, LINK->L2FLAGS);
Debugprintf("Slots %x %x %x %x %x %x %x %x", LINK->FRAMES[0], LINK->FRAMES[1], LINK->FRAMES[2], LINK->FRAMES[3],
LINK->FRAMES[4], LINK->FRAMES[5], LINK->FRAMES[6], LINK->FRAMES[7]);
// Reset Link
InformPartner(LINK, NORMALCLOSE); // TELL OTHER END ITS GONE
LINK->L2RETRIES -= 1; // Just send one DISC
LINK->L2STATE = 4; // CLOSING
L2SENDCOMMAND(LINK, DISC | PFBIT);
return;
}
}
}
} }
} }
LINK++; LINK++;