Revision history for Perl extension Net::IRC. 0.1 Fri Oct 17 00:25:41 CDT 1997 - original version; created by h2xs 1.18 0.2 Sat Oct 18 16:00:38 CDT 1997 - it works now, thanks entirely to Tkil (tkil@scrye.com) - substantial cleanup of Connection.pm - Removed "Written and designed by:" line in header comments... it didn't seem fair to the many other people who are putting such studly efforts into this. 0.25 Sun Oct 19 06:26:36 CDT 1997 - Removed extraneous return values from handler code (don't ask) - It's now possible to have more than one Net::IRC object in a single script, but I can't see why you'd ever want to. - We now disconnect properly. Woohoo! - Fixed YA CTCP bug. - Fixed up parse() handling for cases like MODE and NICK. - Fixed many stupid bugs that should have been caught long ago. - Lots more, but I can't remember them all. Again, huge gigantic thanks are due to Tkil for his tireless dedication to hunting down and patching bugs. You go, man! 0.26 Mon Oct 20 01:37:39 CDT 1997 - Fixed Makefile.PL to install IRC.pm and the other module in different places (it's nice to have make install actually work.) 0.27 Mon Oct 20 23:28:48 CDT 1997 - Made trivial changes to the formatted output code (format(), Event->new(), _pr(), Connection->new()). This should give other developers a bit clearer idea of where I'm going with it. Time for extended hacking is scarce right now, alas. 0.28 Fri Oct 24 06:12:42 CDT 1997 - Added $conn->me("#perl", "hacks billn to pieces") as an alias to $conn->ctcp("action", "#perl", "hacks billn to pieces"). - Fixed a couple small errors (typos, mostly). 0.29 Sat Oct 25 16:48:19 CDT 1997 - Added a placeholder DCC.pm to the source tree so I won't have to go back and change stuff once it's written. - Changed the order of default nick/ircname variables. - Fixed the source tree and makedist script on execpc.com to allow for easier diffing and patching. 0.3 Tue Nov 25 02:49:37 CST 1997 - Makefile.PL now barfs on older versions of Perl. - IRC.pm caches $self->ioselect in select() to clean up the code a little. OO and procedural style bigots reach a compromise. - IRC.pm's start() and select() methods have been merged. - All eval "code;" statements changed to eval { code; }. - Made small adjustment to Connection->parse() numeric routine. - Working draft of DCC.pm written by borys, who kicks much ass. - Bunch of subsequent revisions to DCC.pm, mostly by archon. - irctest script nearly doubles in size. - IRC.pm, especially start(), gets modified for DCC.pm. - A bunch of other smaller changes associated with DCC.pm that I'm too tired to write down. You get the idea. - Spent HOURS hacking miscellaneous CTCP and parse() bugs. Millions of thanks to Silmaril for devoting his brainpower to the bughunt. 0.31 Wed Nov 26 00:19:30 CST 1997 - Fixed the irritating "Sender: owner-test@betterbox.net" bug in the mailing list config. OK, so it doesn't belong in this file, but I guess it's worth mentioning somewhere. - ctcp_reply() method added to Connection.pm and used in irctest. 0.32 Wed Dec 3 07:59:28 CST 1997 - Added new_send(), new_get(), and new_chat() to Connection.pm - Removed ^A-removing stuff in DCC.pm (it's been fixed in Connection). - Completely rewrote the irctest script, with more additions planned. - The numeric event stuff has been farmed off from parse() to a separate routine, parse_num(). This part is going to present a big problem in weeks ahead... Jarkko Oikarinen should be shot. - Default block size for DCC SEND now 1k instead of 8k. - DCC SEND and GET now always do binary transfers. If a problem comes up with this, blame it on tchrist and BeeF. :-) 0.33 Fri Dec 5 14:27:41 CST 1997 - Version numbers now more realistic. - Net::IRC now specifically resides under the Artistic License, which is now distributed with the module. Anyone have a problem with this? - Connection.pm now strips CRs as well as LFs. Thanks, Aryeh! - \r and \n hardcoded as \015 and \012 in some places to avoid possible cross-platform confusion. - Problems with certain literal handler calls fixed in handler(). - irctest is now a full-featured Zippybot! Yow!! - Made a first pathetic stab at documentation, still working on it. 0.4 Wed Dec 10 16:08:21 CST 1997 - Made small changes to arg list for DCC::CHAT->new(). - Fixed precedence problem in Connection->new_* methods. - Added DCC CHAT and GET capabilities to irctest. - Added 'Proto => "tcp",' to all IO::Socket calls in DCC.pm, after being led astray by incorrect documentation. :-) - User notification for dropped connections is more polite. - Change to fragment handling in IRC->start(). - DCC CHAT->new() now requires nick as argument. - privmsg() can be used to send DCC CHAT messages... just pass it an IO::Socket instead of a nick. - Removed some debugging prints that accidentally got left in a few parts of the code. Doh! 0.41 Wed Dec 10 22:36:10 CST 1997 - Fixed the order of args to Connection->ctcp(). - Fixed lots of bugs that this change caused to manifest. Argh. - First Net::IRC release posted to CPAN, 11 Dec 1997. 0.42 Mon Dec 29 22:44:18 CST 1997 - Added dcc_open and dcc_close handlers for DCC connections. - DCC::GET now requires a nick as an argument to new(). - Added motd, users, whowas, ison, lusers, userhost and wallops subs to Connection.pm. - Added event scheduler to IRC.pm and Connection.pm. Good idea, Che! - &AUTOLOAD in Connection.pm completely rewritten. - Applied a nifty patch that breaks big messages to privmsg() and notice() into smaller chunks and sends them piecemeal. - irctest now does DCC SEND via public message, as a demonstration. - Real POD documentation for IRC.pm written; work begun on PODs for the rest, but it's a nontrivial task. - Added do_one_loop() patch to IRC.pm and rewrote start() for easier Tk integration with Net::IRC scripts. - Fixed user mode case in Connection->parse(). - Added a timeout() method to IRC.pm for finer user control over the select loop. Woo woo! 0.43 Tue Dec 30 18:20:26 CST 1997 - Fixed some problems with the previous distribution... a few outdated files weren't properly removed before tarring by a particularly mischevious script. 0.44 Wed Dec 31 18:13:32 CST 1997 - Fixed some newly created bugs with Connection->connected. Argh! - Scrapped and redid distribution-rolling scripts. You know, ExtUtils::MakeMaker is really nice. 0.45 Sat Jan 3 15:48:57 CST 1998 - All connections now give their names and causes of death upon expiring. This should make DCC problems much less confusing. :-) - DCC SEND and CHAT no longer block on accept(). Woohoo! - IRC->remove_conn() changed to removeconn() for consistency with IRC->addconn() and IRC->newconn(). 0.5b Sun Mar 15 14:29:09 CST 1998 - Sizable chunks of IRC, DCC, and Connection.pm rewritten according to wise suggestions from the venerable elders \merlyn and Roderick. - addfh() and removefh() methods added to IRC.pm; changed() and closed(), having been rendered utterly useless, were removed. - Reading data from ready non-{DCC,Connection} sockets is now the responsibility of the user. This provides more flexibility (if you only want to read N bytes, if it's a buffered FH and not a socket, etc.), but will break any existing such code. Better now than later. - Various documentation updates for IRC.pm; more progress made on the as-yet-unreleased Connection.pm docs. Any volunteers to help out with the PODs? - The select loop now monitors writable and errored filehandles as well as readable ones. See the updated documentation for IRC.pm. - Chat request feature added to irctest... if you say anything matching /^Chat/i on a channel with your bot, it will try to initiate a DCC CHAT with you. Mostly for debugging purposes, but it might actually be useful to someone out there anyhow... - A bug report from Che_Fox led to the squashing of a bug in privmsg that kept it from properly trimming long lines before sending. - Johnathan Vasilis pointed out a quickly-fixed bug in Connection-> userhost(). Thanks! - Events now trim preceding colons properly. Happy now, longhair? :-) - Fixed a big fat bug with _add_generic_handler. Setting up multiple handlers with arrayrefs works again now. - Connection.pm and DCC.pm's input routines now actually throw a "disconnect" or "dcc_close" event for connection-losing errors. - Alex Ibrado's bug report resulted in the fixing of some stupid bugs in the kick, topic, squit, and wallops methods. Doh... - Added Tkil's monster patch to fix Connection->parse errors, among other things. You go, Tkil! 0.5 Wed Apr 1 23:28:13 CST 1998 - Added a few Undernet compatibility changes suggested by Che_Fox. - Fixed a really dumb bug in Connection->default. Umm, doh. - DCC.pm got a number of miscellaneous changes, including making $dcc->{_time} actually useful for SEND and CHAT, and adding events for dcc_open and dcc_close all over. Thanks, mjd! - Fixed some evil bugs in DCC.pm... CHAT could call autoflush() on the result of a failed IO::Socket->new(), and DCC GET had an odd hanging problem on the last block of a file. *Many* thanks to the indefatigable \mjd for spotting and patching the latter. - Added sanity checks to DCC.pm to prevent abuse by malicious remote clients. Net::IRC -- making the world safe for bots, one Boolahman at a time! - Stupid low-level CTCP dequoting bug fixed on a report from \mjd. - Even stupider Connection->server bug tracked down and stomped. 0.51 Tue May 19 01:03:57 CDT 1998 - Aryeh patched a few minor bugs in the formatting functions. - Problem with the select timeout in do_one_loop() squashed. - Minor changes to dain-bramaged parts of DCC::CHAT::parse(). - Connection::parse() is now much friendlier to "localhost" servers. - Added another error check to IRC::schedule() (thanks, Cuberoot!) - Connection::sl() won't send \r\n over DCC CHAT anymore. - All "return undef"s changed to "return;" as per gbacon's suggestion. - irctest now uses strict -- it was mostly strict-safe before, but I had forgotten the actual 'use'... doh. Thanks, arkuat! - tile is the DCC God. A two-line patch of his fixed an ugly DCC CHAT blocking bug I'd been hacking on for a few days. You GO, tile! - The Net::IRC source now uses Carp for all error reporting. - The setout() and seterr() methods are dead as a result of the previous change. You'll have to do your own tee'ing... sorry.