From 7c796758d1b65d4d7585c90ba71b1fb339a4d283 Mon Sep 17 00:00:00 2001 From: Dave Hibberd Date: Thu, 4 Sep 2025 22:52:12 +0100 Subject: [PATCH] New upstream version 6.0.25.1+repack --- AGWMoncode.c | 22 ++++++++++---------- BBSHTMLConfig.c | 5 +++-- BBSUtilities.c | 15 +++++++++++++- BPQINP3.c | 5 ++--- BPQMail.c | 2 ++ BPQTermMDI.c | 24 ++++++++++++++++++++++ Bpq32.c | 4 ++++ ChatMultiConsole.c | 25 ++++++++++++++++++++++- HTTPcode.c | 20 ++++++++++++++---- HanksRT.c | 2 +- L2Code.c | 46 ++++++++++++++++++++++++++++++++++++++++- L3Code.c | 10 ++++----- MultiConsole.c | 24 ++++++++++++++++++++++ RigControl.c | 21 ++++++++++++++++++- ScanHID.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ TelnetV6.c | 15 ++++++-------- Versions.h | 6 +++--- WebMail.c | 8 ++++---- asmstrucs.h | 3 +++ bpqchat.c | 3 +++ cMain.c | 45 ++++++++++++++++++++++++++++++++++++++++ chatconfig.cfg | 2 +- 22 files changed, 311 insertions(+), 47 deletions(-) create mode 100644 ScanHID.c diff --git a/AGWMoncode.c b/AGWMoncode.c index 2c26191..da9f81e 100644 --- a/AGWMoncode.c +++ b/AGWMoncode.c @@ -49,7 +49,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses #define DM 0x0F #define UA 0x63 #define FRMR 0x87 -#define XID 0xAF +#define XID 0xAF #define TEST 0xE3 #define RR 1 #define RNR 5 @@ -267,16 +267,16 @@ int InternalAGWDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, int * Fra FRMRFLAG = 1; break; - case XID: - - strcpy(SUP, "XID"); - XIDFLAG = 1; - break; - - case TEST: - - strcpy(SUP, "TEST"); - TESTFLAG = 1; + case XID: + + strcpy(SUP, "XID"); + XIDFLAG = 1; + break; + + case TEST: + + strcpy(SUP, "TEST"); + TESTFLAG = 1; break; } diff --git a/BBSHTMLConfig.c b/BBSHTMLConfig.c index 027c786..b0b398c 100644 --- a/BBSHTMLConfig.c +++ b/BBSHTMLConfig.c @@ -118,6 +118,7 @@ void ReleaseWebMailStruct(WebMailInfo * WebMail); VOID TidyWelcomeMsg(char ** pPrompt); int MailAPIProcessHTTPMessage(struct HTTPConnectionInfo * Session, char * response, char * Method, char * URL, char * request, BOOL LOCAL, char * Param, char * Token); void UndoTransparency(char * input); +int GetMessageSlotFromMessageNumber(int msgno); char UNC[] = ""; char CHKD[] = "checked=checked "; @@ -2442,8 +2443,8 @@ VOID ProcessMsgFwdUpdate(struct HTTPConnectionInfo * Session, char * MsgPtr, cha set_fwd_bit(Msg->fbbs, BBSNumber); User->ForwardingInfo->MsgCount++; clear_fwd_bit(Msg->forw, BBSNumber); - if (FirstMessageIndextoForward > Msg->number) - FirstMessageIndextoForward = Msg->number; + if (FirstMessageIndextoForward > GetMessageSlotFromMessageNumber(Msg->number)) + FirstMessageIndextoForward = GetMessageSlotFromMessageNumber(Msg->number); } *RLen = SendMessageDetails(Msg, Reply, Session->Key); diff --git a/BBSUtilities.c b/BBSUtilities.c index 90b4c7b..e803500 100644 --- a/BBSUtilities.c +++ b/BBSUtilities.c @@ -531,7 +531,20 @@ struct MsgInfo * GetMsgFromNumber(int msgno) return MsgnotoMsg[msgno]; } - + +int GetMessageSlotFromMessageNumber(int msgno) +{ + int i; + + for (i=1; i <= NumberofMessages; i++) + { + if (MsgHddrPtr[i]->number == msgno) + return i; + } + + return 0; +} + struct UserInfo * AllocateUserRecord(char * Call) { struct UserInfo * User = zalloc(sizeof (struct UserInfo)); diff --git a/BPQINP3.c b/BPQINP3.c index aa4929c..a62ecba 100644 --- a/BPQINP3.c +++ b/BPQINP3.c @@ -491,7 +491,7 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, { APPL=&APPLCALLTABLE[App]; - if (APPL->APPLHASALIAS == 0 && CompareCalls(axcall, APPL->APPLCALL)) + if (CompareCalls(axcall, APPL->APPLCALL)) { Debugprintf("INP3 for an APPLCALL - discarding"); return; @@ -557,7 +557,7 @@ Found: if (Dest->DEST_STATE & 0x80) // Application Entry { Debugprintf("INP3 Application Entry - discarding"); - return; // Tsble Full + return; } // Update ALIAS @@ -565,7 +565,6 @@ Found: ConvFromAX25(Dest->DEST_CALL, call); Debugprintf("INP3 Updating Node %s Hops %d RTT %d", call, hops, rtt); - if (alias[0] > ' ') memcpy(Dest->DEST_ALIAS, alias, 6); diff --git a/BPQMail.c b/BPQMail.c index 2aab885..6b70ad9 100644 --- a/BPQMail.c +++ b/BPQMail.c @@ -1154,6 +1154,8 @@ // Add Send and Receive byte counts to status displays (69) // Validate Mode and Frequency and fix formatting in Connected Message (71) // Fix using OpenBCM on other than Telnet connections (75) +// Fix sending + in Webmail (80) +// Fix forwarding problem when using Web interface to change message routing (73) #include "bpqmail.h" #include "winstdint.h" diff --git a/BPQTermMDI.c b/BPQTermMDI.c index afdb4f5..9f9ba44 100644 --- a/BPQTermMDI.c +++ b/BPQTermMDI.c @@ -2973,6 +2973,30 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 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 + + for (i = 0; i < strlen(Cinfo->kbbuf); i++) + { + SendMessage(Cinfo->hwndInput, WM_KEYDOWN, VK_RIGHT, 0); + SendMessage(Cinfo->hwndInput, WM_KEYUP, VK_RIGHT, 0); + } + + return 0; + } } diff --git a/Bpq32.c b/Bpq32.c index aafa0e3..a7a6627 100644 --- a/Bpq32.c +++ b/Bpq32.c @@ -1279,6 +1279,10 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses // Fix to L4Compress from Steve G7TAJ (77) // Fix possible FRMR when RNR is cleared by SREJ (78) // Fix error in .77 L4Compress fix (mine, not Steve's!) (78) +// Fix possible stuck L2 session when handling SREJ (79) +// Allow sending CTRL/G From console (Windows) (80) +// Fix Webmail autorefresh extra threads problem (websock connection lost handling) (82) +// Fix overwriting application alias (83) #define CKernel diff --git a/ChatMultiConsole.c b/ChatMultiConsole.c index bd38475..cc70f18 100644 --- a/ChatMultiConsole.c +++ b/ChatMultiConsole.c @@ -983,7 +983,30 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 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 + + for (i = 0; i < strlen(Cinfo->kbbuf); i++) + { + 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); diff --git a/HTTPcode.c b/HTTPcode.c index 3145d80..385eca2 100644 --- a/HTTPcode.c +++ b/HTTPcode.c @@ -4839,7 +4839,14 @@ void ProcessWebmailWebSockThread(void * conn) Sent = send(sockptr->socket, _REPLYBUFFER, ReplyLen, 0); - while (Sent != ReplyLen && Loops++ < 3000) // 100 secs max + if (Sent == -1) // Connecton lost + { + closesocket(sockptr->socket); + free(conn); + return; + } + + while (Sent != ReplyLen && Loops++ < 3000) // 90 secs max { if (Sent > 0) // something sent { @@ -4885,11 +4892,16 @@ void ProcessWebmailWebSockThread(void * conn) CloseHandle(hPipe); - // ?? do we need a thread to handle write which may block - Sent = send(sockptr->socket, Reply, ReplyLen, 0); - while (Sent != ReplyLen && Loops++ < 3000) // 100 secs max + if (Sent == -1) // Connecton lost + { + free(conn); + closesocket(sockptr->socket); + return; + } + + while (Sent != ReplyLen && Loops++ < 3000) // 90 secs max { // Debugprintf("%d out of %d sent %d Loops", Sent, InputLen, Loops); diff --git a/HanksRT.c b/HanksRT.c index 89e03e2..8831faa 100644 --- a/HanksRT.c +++ b/HanksRT.c @@ -1229,7 +1229,7 @@ void chkctl(ChatCIRCUIT *ckt_from, char * Buffer, int Len) for (i = 1; i < (Len - 1); i++) { - if (Buffer[i] < 32) + if (Buffer[i] < 32 && Buffer[i] != 7) // Accept BELL { if (Buffer[i] == 9) { diff --git a/L2Code.c b/L2Code.c index 440c238..0fd8ecd 100644 --- a/L2Code.c +++ b/L2Code.c @@ -2176,7 +2176,9 @@ VOID SFRAME(struct _LINKTABLE * LINK, struct PORTCONTROL * PORT, UCHAR CTL, UCHA int count; MESSAGE * Msg; MESSAGE * Buffer; - + + LINK->L2FLAGS &= ~POLLSENT; // CLEAR I(P) or RR(P) SET + Msg = LINK->FRAMES[NS]; // is frame available? if (Msg == NULL) @@ -2977,6 +2979,43 @@ VOID SDETX(struct _LINKTABLE * LINK) // if (LINK->L2RESEQ_Q) // 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 if (Outstanding < 0) @@ -2994,6 +3033,10 @@ VOID SDETX(struct _LINKTABLE * LINK) Msg = Q_REM(&LINK->TX_Q); 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 { 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 // Then collect data, compressing after each frame to make sure will fit in available space + while (LINK->FRAMES[n] == NULL && slots < 8) { slots++; diff --git a/L3Code.c b/L3Code.c index 48f71bc..7c1d5b8 100644 --- a/L3Code.c +++ b/L3Code.c @@ -277,7 +277,7 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) { APPL=&APPLCALLTABLE[App]; - if (APPL->APPLHASALIAS == 0 && CompareCalls(Msg->ORIGIN, APPL->APPLCALL)) + if (CompareCalls(Msg->ORIGIN, APPL->APPLCALL)) return; } @@ -386,7 +386,7 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) NUMBEROFNODES++; } - // ALWAYS UPDATE ALIAS IN CASE NOT PRESENT IN ORIGINAL TABLE + // ALWAYS UPDATE ALIAS IN CASE NOT PRESENT IN ORIGINAL TABLE ptr1 = &Msg->L2DATA[1]; ptr2 = &DEST->DEST_ALIAS[0]; @@ -454,10 +454,10 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) if (CheckExcludeList(ptr1) == 0) // Excluded continue; - for (n = 0; n < 32; n++) + for (n = 0; n < NumberofAppls; n++) { if (CompareCalls(ptr1, APPLCALLTABLE[n].APPLCALL)) - continue; + goto IgnoreNode; // Don't update our applications } // MAKE SURE ITS NOT CORRUPTED @@ -566,7 +566,7 @@ VOID PROCESSNODEMESSAGE(MESSAGE * Msg, struct PORTCONTROL * PORT) ptr1 += 7; - // UPDATE ALIAS + // UPDATE ALIAS# memcpy(DEST->DEST_ALIAS, ptr1, 6); diff --git a/MultiConsole.c b/MultiConsole.c index f574b53..8b3ef35 100644 --- a/MultiConsole.c +++ b/MultiConsole.c @@ -944,6 +944,30 @@ LRESULT APIENTRY InputProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 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 + + for (i = 0; i < strlen(Cinfo->kbbuf); i++) + { + SendMessage(Cinfo->hwndInput, WM_KEYDOWN, VK_RIGHT, 0); + SendMessage(Cinfo->hwndInput, WM_KEYUP, VK_RIGHT, 0); + } + + return 0; + } } diff --git a/RigControl.c b/RigControl.c index c2b7c4d..279f085 100644 --- a/RigControl.c +++ b/RigControl.c @@ -5450,7 +5450,26 @@ void DecodeCM108(int Port, char * ptr) hid_device *handle = NULL; if (strlen(ptr) > 16) - CM108Device = _strdup(ptr); + { + path_to_open = _strdup(ptr); + + handle = hid_open_path(path_to_open); + + if (handle) + { + hid_close(handle); + CM108Device = _strdup(path_to_open); + } + else + { + char msg[128]; + sprintf(msg,"Port %d Unable to open CM108 device %s", Port, path_to_open); + WritetoConsole(msg); + } + } + + + else { VID = strtol(ptr, &next, 0); diff --git a/ScanHID.c b/ScanHID.c new file mode 100644 index 0000000..4d48d87 --- /dev/null +++ b/ScanHID.c @@ -0,0 +1,51 @@ +// ScanHID.cpp : Defines the entry point for the console application. +// + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#define _CRT_SECURE_NO_DEPRECATE + +#include +#include +#include + +#include "hidapi.h" + +int main(int argc, char* argv[]) +{ + char product[256]; + char sernum[256] = "NULL"; + + struct hid_device_info *devs, *cur_dev; + const char *path_to_open = NULL; + hid_device *handle = NULL; + + // Look for Device + + devs = hid_enumerate(0,0); // so we list devices(USHORT)VID, (USHORT)PID); + cur_dev = devs; + while (cur_dev) + { + wcstombs(product, cur_dev->product_string, 255); + if (cur_dev->serial_number) + wcstombs(sernum, cur_dev->serial_number, 255); + + if (product) + printf("HID Device %s VID %X PID %X Ser %s\r\n Path %s\r\n\r\n", product, cur_dev->vendor_id, cur_dev->product_id, sernum, cur_dev->path); + else + printf("HID Device %s VID %X PID %X Ser %s\r\n Path %s\r\n\r\n", "Missing Product", cur_dev->vendor_id, cur_dev->product_id, sernum, cur_dev->path); + + + cur_dev = cur_dev->next; + } + + + hid_free_enumeration(devs); + printf("Press any key to Exit"); + _getch(); + + +} + + + + diff --git a/TelnetV6.c b/TelnetV6.c index a0a0272..0756447 100644 --- a/TelnetV6.c +++ b/TelnetV6.c @@ -5018,23 +5018,20 @@ int DataSocket_ReadHTTP(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, S { // Failed or closed - clear connection - // if Websock connection till app + // if Websock connection tell app if (sockptr->WebSocks) { if (memcmp(sockptr->WebURL, "rhp", 3) == 0) - { ProcessRHPWebSockClosed(sockptr->socket); - DataSocket_Disconnect(TNC, sockptr); - return 0; - } - } - else - { - TNC->Streams[sockptr->Number].ReportDISC = TRUE; //Tell Node + DataSocket_Disconnect(TNC, sockptr); return 0; } + + TNC->Streams[sockptr->Number].ReportDISC = TRUE; //Tell Node + DataSocket_Disconnect(TNC, sockptr); + return 0; } MsgPtr = &sockptr->InputBuffer[0]; diff --git a/Versions.h b/Versions.h index 17f1dfe..ccf1ddd 100644 --- a/Versions.h +++ b/Versions.h @@ -10,15 +10,15 @@ #endif -#define KVers 6,0,24,78 -#define KVerstring "6.0.24.78\0" +#define KVers 6,0,25,1 +#define KVerstring "6.0.25.1\0" #ifdef CKernel #define Vers KVers #define Verstring KVerstring -#define Datestring "July 2025" +#define Datestring "August 2025" #define VerComments "G8BPQ Packet Switch (C Version)" KVerstring #define VerCopyright "Copyright © 2001-2025 John Wiseman G8BPQ\0" #define VerDesc "BPQ32 Switch\0" diff --git a/WebMail.c b/WebMail.c index 2c97f84..63bfd6e 100644 --- a/WebMail.c +++ b/WebMail.c @@ -2662,10 +2662,10 @@ VOID SaveNewMessage(struct HTTPConnectionInfo * Session, char * MsgPtr, char * R if (strlen(WebMail->BID) > 12) WebMail->BID[12] = 0; - UndoTransparency(WebMail->BID); - UndoTransparency(WebMail->To); - UndoTransparency(WebMail->Subject); - UndoTransparency(WebMail->Body); +// UndoTransparency(WebMail->BID); +// UndoTransparency(WebMail->To); +// UndoTransparency(WebMail->Subject); +// UndoTransparency(WebMail->Body); MsgLen = strlen(WebMail->Body); diff --git a/asmstrucs.h b/asmstrucs.h index 79e9a26..968f5fb 100644 --- a/asmstrucs.h +++ b/asmstrucs.h @@ -930,6 +930,9 @@ typedef struct _LINKTABLE VOID * FRAMES[8]; // FRAMES WAITING ACK VOID * RXFRAMES[8]; // Frames received out of sequence + time_t LASTFRAMESENT; // For detecting stuck links + int LASTSENTQCOUNT; // + UCHAR L2STATE; // PROCESSING STATE UCHAR Ver2point2; // Set if running 2.2 USHORT L2TIMER; // FRAME RETRY TIMER diff --git a/bpqchat.c b/bpqchat.c index 35f62c9..3fc9ab2 100644 --- a/bpqchat.c +++ b/bpqchat.c @@ -73,6 +73,9 @@ //.25 // Increase size of status display buffers (7) +// Allow sending BEL (CTRL/G) (79) +// Fix sending BEL (CTRL/G) (81) + #include "BPQChat.h" #include "Dbghelp.h" diff --git a/cMain.c b/cMain.c index c87fac2..c722147 100644 --- a/cMain.c +++ b/cMain.c @@ -52,6 +52,9 @@ int CanPortDigi(int Port); int KissEncode(UCHAR * inbuff, UCHAR * outbuff, int len); void MQTTTimer(); void SaveMH(); +VOID InformPartner(struct _LINKTABLE * LINK, int Reason); +VOID L2SENDCOMMAND(struct _LINKTABLE * LINK, int CMD); + #include "configstructs.h" @@ -62,6 +65,7 @@ extern int needADSB; struct PORTCONFIG * PortRec; #define RNRSET 0x2 // RNR RECEIVED FROM OTHER END +#define PFBIT 0x10 // POLL/FINAL BIT IN CONTROL BYTE // STATION INFORMATION @@ -2506,6 +2510,47 @@ ENDOFLIST: if ((LINK->L2FLAGS & RNRSET) == 0) 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++; diff --git a/chatconfig.cfg b/chatconfig.cfg index 49e3f4e..c990d97 100644 --- a/chatconfig.cfg +++ b/chatconfig.cfg @@ -18,5 +18,5 @@ Chat : MonitorSize = "828,1644,148,770"; DebugSize = "0,0,0,0"; WindowSize = "231,835,254,602"; - Version = "6,0,24,32"; + Version = "6,0,24,81"; };