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 7b3c365..6b70ad9 100644
--- a/BPQMail.c
+++ b/BPQMail.c
@@ -1155,6 +1155,7 @@
// 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/Bpq32.c b/Bpq32.c
index f8e0878..a7a6627 100644
--- a/Bpq32.c
+++ b/Bpq32.c
@@ -1282,6 +1282,7 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses
// 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/ChatUsers.txt b/ChatUsers.txt
deleted file mode 100644
index 4db7940..0000000
--- a/ChatUsers.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-GM8BPQ 0 John ?_qth¬26¬0
-G8BPQ 0 John ?_qth¬26¬0
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/RTKnown.txt b/RTKnown.txt
deleted file mode 100644
index 5f639a8..0000000
--- a/RTKnown.txt
+++ /dev/null
@@ -1 +0,0 @@
-G8BPQ-1 1754642136
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/Versions.h b/Versions.h
index 34767b5..ccf1ddd 100644
--- a/Versions.h
+++ b/Versions.h
@@ -10,8 +10,8 @@
#endif
-#define KVers 6,0,24,82
-#define KVerstring "6.0.24.82\0"
+#define KVers 6,0,25,1
+#define KVerstring "6.0.25.1\0"
#ifdef CKernel