Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGES.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,19 @@ Key:
(name) - the name of the person running HydraIRC who first reported
the problem or requested the feature

4/18/2026 - AM (0.3.169.1) - Experimental
gdwnldsKSC
* Resolved IRC protocol issue from github issue https://github/HydraIRC/hydrairc/issues/17

4/10/2026 - AM (0.3.169) - Experimental
gdwnldsKSC
* Updated DEVELPER.TXT with instructions for building under Visual Studio 2013
* XP SP2 minimum target - Pending IPv6 support will need this, as do WTL9.1 and other aspects.

24/August/2023 - AM (0.3.168)
gdwnldsKSC
* Updated libXML2 from 2.5.1 to current libXML2 master as of 22/October/2022
* Upgraded WTL8 to WTL9.1

23/September/2022 - AM (0.3.167) - Experimental
gdwnldsKSC
Expand Down
8 changes: 4 additions & 4 deletions HydraIRC/HydraIRC.rc
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ END
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,3,169,0
PRODUCTVERSION 0,3,169,0
FILEVERSION 0,3,169,1
PRODUCTVERSION 0,3,169,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -109,12 +109,12 @@ BEGIN
VALUE "Comments", "http://www.HydraIRC.com"
VALUE "CompanyName", "Hydra Productions"
VALUE "FileDescription", "HydraIRC"
VALUE "FileVersion", "0.3.169.0"
VALUE "FileVersion", "0.3.169.1"
VALUE "InternalName", "HydraIRC"
VALUE "LegalCopyright", "Dominic Clifton - Copyright 2002-2026"
VALUE "OriginalFilename", "HydraIRC.exe"
VALUE "ProductName", "HydraIRC"
VALUE "ProductVersion", "0.3.169.0"
VALUE "ProductVersion", "0.3.169.1"
END
END
BLOCK "VarFileInfo"
Expand Down
83 changes: 48 additions & 35 deletions HydraIRC/Server.cpp
Original file line number Diff line number Diff line change
@@ -1,29 +1,20 @@
/*

HydraIRC
Copyright (C) 2002-2006 Dominic Clifton aka Hydra

HydraIRC limited-use source license

1) You can:
1.1) Use the source to create improvements and bug-fixes to send to the
author to be incorporated in the main program.
1.2) Use it for review/educational purposes.

2) You can NOT:
2.1) Use the source to create derivative works. (That is, you can't release
your own version of HydraIRC with your changes in it)
2.2) Compile your own version and sell it.
2.3) Distribute unmodified, modified source or compiled versions of HydraIRC
without first obtaining permission from the author. (I want one place
for people to come to get HydraIRC from)
2.4) Use any of the code or other part of HydraIRC in anything other than
HydraIRC.

3) All code submitted to the project:
3.1) Must not be covered by any license that conflicts with this license
(e.g. GPL code)
3.2) Will become the property of the author.
Copyright (C) 2002-2026 Dominic Clifton aka Hydra

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

*/

Expand Down Expand Up @@ -1985,6 +1976,9 @@ void IRCServer::Parse( char *processstr )
{
username = a;
topictime = b;
if (topictime[0] == ':') {
topictime++;
}
time_t l = (time_t)atol(topictime); // FIXME - no check for null string
t = localtime(&l);
}
Expand Down Expand Up @@ -2023,23 +2017,32 @@ void IRCServer::Parse( char *processstr )
{
char *channelname;
channelname = strtok(rest, " ");
//username = UseEmptyString(strtok(NULL, " "));

time_t l = (time_t)atol(UseEmptyString(strtok(NULL, ""))); // FIXME - no check for null string
char *timeStr = UseEmptyString(strtok(NULL, ""));
if (!timeStr) {
sys_Printf(BIC_ERROR, "ERROR: Failed to parse creation time for channel %s\n", channelname);
break;
}
// ircd protocol fix for servers not putting space after
if (timeStr[0] == ':') {
timeStr++;
}

time_t l = (time_t)atol(timeStr);
tm *t = localtime(&l);

m_Variables[VID_CHANNEL] = channelname;
m_Variables[VID_PARAM1] = channelname;
m_Variables[VID_PARAM2] = t ? stripcrlf(asctime(t)) : "unknown";
m_Variables[VID_PARAM2] = t ? stripcrlf(asctime(t)) : "unknown";

IRCChannel *pChannel = FindChannel(channelname);
if (pChannel)
{
pChannel->OutputFormatter(BIC_TOPIC,num);
}
else
sys_Printf(BIC_ERROR,"ERROR: Received channel information for a channel that we've not joined (%s)\n",channelname);
}
IRCChannel *pChannel = FindChannel(channelname);

if (pChannel)
{
pChannel->OutputFormatter(BIC_TOPIC, num);
}
else
sys_Printf(BIC_ERROR, "ERROR: Received channel information for a channel that we've not joined (%s)\n", channelname);
}
break;

case RPL_NAMREPLY:
Expand Down Expand Up @@ -2117,6 +2120,10 @@ void IRCServer::Parse( char *processstr )
channelname = strtok(rest, " ");
channelmode = UseEmptyString(strtok(NULL,""));

if (channelmode && channelmode[0] == ':') {
channelmode++;
}

m_Variables[VID_CHANNEL] = channelname;
m_Variables[VID_CHANNELMODE] = channelmode;
m_Variables[VID_PARAM1] = channelname;
Expand Down Expand Up @@ -2687,6 +2694,12 @@ void IRCServer::Parse( char *processstr )
m_Variables[VID_PARAM1] = to;
m_Variables[VID_PARAM2] = tmpnick;
m_Variables[VID_PARAM3] = UseEmptyString(rest);

char *colonPos = strchr(rest, ':');
if (colonPos) {
memmove(colonPos, colonPos + 1, strlen(colonPos));
}

if (ischannelstartchar(to[0]))
{
IRCChannel *pChannel = FindChannel(to);
Expand Down
4 changes: 2 additions & 2 deletions HydraIRC/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

*/

#define VERSIONNUM "v0.3.168"
#define VERSIONDATE "(13/November/2022)"
#define VERSIONNUM "v0.3.169.1"
#define VERSIONDATE "(18/April/2026)"

#ifdef RELEASE_VERSION
#define VERSIONSTRING_EXTRA_1 ""
Expand Down