Eric S. Raymond [Sun, 1 Jun 2014 14:23:42 +0000 (10:23 -0400)]
Version bump for release.
Eric S. Raymond [Sun, 1 Jun 2014 01:54:38 +0000 (21:54 -0400)]
Clean up after recent pylint changes.
Eric S. Raymond [Sun, 1 Jun 2014 01:33:39 +0000 (21:33 -0400)]
News update.
Eric S. Raymond [Sun, 1 Jun 2014 01:28:43 +0000 (21:28 -0400)]
Host option, as contributed by wking.
Eric S. Raymond [Sat, 31 May 2014 21:09:55 +0000 (17:09 -0400)]
Add a missing import.
Unit 193 [Sat, 31 May 2014 21:01:00 +0000 (17:01 -0400)]
Add support for using CertFP to auth to the IRC server, and document it.
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Sat, 31 May 2014 18:44:41 +0000 (14:44 -0400)]
Remove an obsolete assumption and fix some markup.
Eric S. Raymond [Sat, 31 May 2014 16:52:50 +0000 (12:52 -0400)]
Better behavior in case stdout was closed when irkerd was backgrounded.
W. Trevor King [Sat, 31 May 2014 16:40:03 +0000 (09:40 -0700)]
irkerd.xml: Cleanup syslog docs and shift 'os' import
This fixes some issues with
672240a (Use syslog facility when irkerd
is backgtrounded and no -l was given, 2014-05-31):
* Shift the 'os' import to keep the stdlib imports alphabetized.
* Move the syslog docs from a stand-alone paragraph into the
-d/--log-level section.
* Add some text to the -d/--log-level docs explaining the distinction
between the -l/--log-file traffic logs and the -d/--log-level
program-tracing logs.
* StreamHandler logs to standard error (not standard output) by
default [1]. Change "stndard output" to "standard error".
* Add articles to background and foreground ("the background").
* Fix a "packground" -> "background" typo.
* Explain our background-detection logic, and point out some of the
assumptions made by the current implementation. I still think that
it's better to have an explicit --syslog setting, and to leave it to
packagers/users to descide explicitly if they prefer logging to
syslog or stderr. But whatever the syslog-switching logic is, it
should be clearly documented so folks don't have to read the source
to understand it.
[1]: https://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Sat, 31 May 2014 13:24:09 +0000 (09:24 -0400)]
Use syslog facility when irkerd is backgtrounded and no -l was given.
Eric S. Raymond [Sat, 31 May 2014 04:04:13 +0000 (00:04 -0400)]
Fix a typoed member name.
Eric S. Raymond [Fri, 30 May 2014 14:53:01 +0000 (10:53 -0400)]
Version bump for 2.8 release.
Eric S. Raymond [Fri, 30 May 2014 14:28:23 +0000 (10:28 -0400)]
Add recent news.
Eric S. Raymond [Fri, 30 May 2014 14:26:21 +0000 (10:26 -0400)]
Cope better with hirerarchical branch names.
From an idea by tasn.
Antoine Beaupré [Thu, 29 May 2014 22:51:21 +0000 (18:51 -0400)]
fix usage for --log-level
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Antoine Beaupré [Thu, 1 May 2014 03:42:16 +0000 (23:42 -0400)]
add manpage for irk
i got tired of rereading the source code every time i wanted to use irk, isn't that silly?
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Beat Bolli [Wed, 25 Dec 2013 14:30:59 +0000 (15:30 +0100)]
irk: explicitly close the irkerd socket
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Beat Bolli [Wed, 25 Dec 2013 14:30:07 +0000 (15:30 +0100)]
irk: bail out early on connection errors
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Beat Bolli [Wed, 25 Dec 2013 14:29:33 +0000 (15:29 +0100)]
irk: explain why we think irkerd isn't running
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Beat Bolli [Wed, 25 Dec 2013 14:28:06 +0000 (15:28 +0100)]
irk: reuse the already connected socket
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Beat Bolli [Wed, 25 Dec 2013 14:26:58 +0000 (15:26 +0100)]
irk: remove extraneous imports
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Fri, 18 Apr 2014 07:18:59 +0000 (03:18 -0400)]
Remove unused header.
Eric S. Raymond [Sat, 15 Mar 2014 11:34:20 +0000 (07:34 -0400)]
Date-stamp 2.7.
Eric S. Raymond [Sat, 15 Mar 2014 11:33:09 +0000 (07:33 -0400)]
Version bump for 2.7 release.
Eric S. Raymond [Sat, 15 Mar 2014 11:32:07 +0000 (07:32 -0400)]
Suppress some spuriious pylint warnings.
W. Trevor King [Wed, 12 Mar 2014 16:58:45 +0000 (09:58 -0700)]
irkerd: Fix 'self.socket' -> 'socket' typos in _wrap_socket
Respect the 'socket' argument passed in by the caller. Fixes a typo
introducted in
a82724f (irkerd: Initial SSL/TLS implementation,
2014-03-06).
W. Trevor King [Wed, 12 Mar 2014 16:58:44 +0000 (09:58 -0700)]
irkerd: Fix -i / --immediate handling, and add a message argument
This fixes some problems with -i/--immediate parsing in
ccd311c5
(irkerd: Transition from getopt to argparse, 2014-03-06).
> + parser.add_argument(
> + '-i', '--immediate', action='store_const', const=True,
> + help='disconnect after sending each message')
This does not match the old syntax where -i took two arguments (an IRC
URL and a message).
> - if immediate:
> + if args.immediate:
> irker.irc.add_event_handler("quit", lambda _c, _e: sys.exit(0))
> irker.handle('{"to":"%s","privmsg":"%s"}' % (immediate, arguments[0]), quit_after=True)
> irker.irc.spin()
immediate should be args.immediate, and arguments[0] needs to be added
as a new (optional) positional argument.
This patch fixes both issues.
Eric S. Raymond [Wed, 12 Mar 2014 16:16:02 +0000 (12:16 -0400)]
Fix somre confusion abot argument-passing.
Eric S. Raymond [Tue, 11 Mar 2014 18:07:06 +0000 (14:07 -0400)]
Allow kwargs use.
Eric S. Raymond [Tue, 11 Mar 2014 17:33:18 +0000 (13:33 -0400)]
Documentation updates.
W. Trevor King [Fri, 7 Mar 2014 04:21:24 +0000 (20:21 -0800)]
irkerd: Extract username and password from submitted URLs
And use them (when present) as the USER username [1] and server PASS
[2] respectively. The previous implementation gave no way to set
PASS, which will vary on a per-target-server level. There's unlikely
to be much need to set per-server usernames, except collision
avoidance (e.g. network X already has an 'irker' user).
I changed the existing IRCServerConnection.connect argument from
'ircname' to 'realname' to match the USER specs and our
IRCServerConnection.user implementation. The 'realname' and
'username' arguments are currently unset, but you could add command
line options to set irker-wide defaults, and use the kwargs chain to
pass them down to the connect method. The fallback logic is:
* Prefer the setting listed in the URL (although you'd need to add a
parser to extract 'realname'). If that's empty or missing, fall
back to
* The irker-wide default passed down the kwargs chain. If that's
empty or missing, fall back to
* Local defaults ('irker' and 'irker relaying client').
I also tweaked the servername and port extraction in
Target.__init__(), because they are already parsed out of the netloc
(along with the username and password) by urlparse().
[1]: https://tools.ietf.org/html/rfc2812#section-3.1.3
[2]: https://tools.ietf.org/html/rfc2812#section-3.1.1
W. Trevor King [Fri, 7 Mar 2014 04:21:23 +0000 (20:21 -0800)]
irkerd: Initial SSL/TLS implementation
This is pretty basic, just using as much of Python's ssl module as the
host Python implementation supports. I also added error-level logging
of IRCServerConnectionError instances, to get helpful messages like:
Invalid SSL/TLS certificate:
hostname 'localhost' doesn't match 'irc.example.net'
and:
Couldn't connect to socket: _ssl.c:334: No root certificates
specified for verification of other-side certificates.
Important milestones in the standard library's ssl module:
* Python 2.5 [1,2]: No ssl module at all
* Python 2.6 [1,2]: ssl module added
* Python 3.2 [3,4]: ssl.SSLContext class added, with
SSLContext.set_default_verify_paths [4]. ssl.match_hostname is also
added [5], which can be used with the existing getpeercert [6] to
ensure the server certificate belongs to the target host.
So for full verification, we need Python 3.2. We can scrape by with
2.6 and later, by manually supplying a ca_certs path and ignoring
hostname mismatches. That's more succeptible to man-in-the-middle
attacks, but still better than sending server, nick, and channel
passwords in plaintext.
[1]: http://docs.python.org/2/library/ssl.html
[2]: http://docs.python.org/2/whatsnew/2.6.html#improved-ssl-support
[3]: http://docs.python.org/3/whatsnew/3.2.html#ssl
[4]: http://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_default_verify_paths
[5]: http://docs.python.org/3/library/ssl.html#ssl.match_hostname
[6]: http://docs.python.org/2/library/ssl.html#ssl.SSLSocket.getpeercert
W. Trevor King [Fri, 7 Mar 2014 04:21:22 +0000 (20:21 -0800)]
irkerd: Replace Exception.format_exc() with traceback.format_exc()
The former was giving me:
Traceback (most recent call last):
File "/usr/lib64/python3.3/threading.py", line 901, in _bootstrap_inner
self.run()
File "/usr/lib64/python3.3/threading.py", line 858, in run
self._target(*self._args, **self._kwargs)
File "./irkerd", line 637, in dequeue
LOG.debug(e.format_exc())
AttributeError: 'TypeError' object has no attribute 'format_exc'
In Python 3.3.4.
W. Trevor King [Fri, 7 Mar 2014 04:21:21 +0000 (20:21 -0800)]
irkerd: Add Python-3-compatible string handling
This implements the necessary changes to work around the (str,
unicode) -> (bytes, str) transition. We decode the bytes as soon as
possible after receiving them in the Irker*Handler classes. For
IRC-side connections, we still encode outgoing data right before
sending it in IRCServerConnection.ship.
We decode incoming IRC-side bytes in IRCServerConnection.consume,
after storing them as bytes in the LineBufferedStream
IRCServerConnection.buffer. That ensures that we don't try and decode
partial code points which are split across two socket messages.
W. Trevor King [Fri, 7 Mar 2014 04:21:20 +0000 (20:21 -0800)]
irkerd: Use self instead of LineBufferedStream in lines()
That's what 'self' is for ;). Also prefix 'crlf_re' with an
underscore to mark it as private data, and not part of
LineBufferedStream's API.
W. Trevor King [Fri, 7 Mar 2014 04:21:19 +0000 (20:21 -0800)]
irkerd: Add Python-3-compatible import names
Prefer the Python 3 names to the Python 2 names for forward
compatibility.
W. Trevor King [Fri, 7 Mar 2014 04:21:18 +0000 (20:21 -0800)]
irkerd: Drop scheme replacement in Target.__init__
Now that we've dropped support for Python 2.5, we don't need this
workaround anymore.
W. Trevor King [Fri, 7 Mar 2014 04:21:17 +0000 (20:21 -0800)]
irkerd: Drop simplejson replacement
Since we no longer officially support Python 2.5, there's no *need* to
use a fallback JSON library. Removing it makes our dependencies
cleaner, and JSON-parsing speed is not likely to be a large fraction
of irkerd cycles anyway.
W. Trevor King [Fri, 7 Mar 2014 04:21:16 +0000 (20:21 -0800)]
irkerd: Convert to Python 3's "except x as y" syntax
Support for this was added in Python 2.6 and 3.0. We can't have
Python 3 compatibility without removing the old "except x, y" syntax,
and I think 3.x support is more imporant than 2.5 support. In any
case, the existing irkerd has been using the new syntax since
3cc8751
(Truncate messages that are longer than 512 bytes and catch any
exceptions irclib throws about rejected messages, 2013-01-21), so this
commit is not a *new* break with 2.5 support.
W. Trevor King [Fri, 7 Mar 2014 04:21:15 +0000 (20:21 -0800)]
irkerd: Replace sys.stderr.write with LOG.error
Thie makes logging more consistent with other errors (e.g. you can
adjust the logging Handler and get all the errors sent to syslog or a
file). I also removed the 'irkerd: ' prefix; if we want that, I think
we should add it to all logged messages by using a custom string in
the logging Formatter.
W. Trevor King [Fri, 7 Mar 2014 04:21:14 +0000 (20:21 -0800)]
irkerd: Replace a print statement with LOG.error
Print statements are gone in Python 3, so this removes a barrier to
Python 3 support. It also makes the logging more consistent with
other errors (e.g. the StreamHandler will print it to stdout, while
the print statement was sending it to stderr).
W. Trevor King [Fri, 7 Mar 2014 04:21:13 +0000 (20:21 -0800)]
irkerd: Transition from getopt to argparse
This gives us long options and removes the need to code our own usage
string and choice-base argument processing. I also removed the blurb
about options from the module docstring, to avoid duplicating
information.
W. Trevor King [Fri, 7 Mar 2014 04:21:12 +0000 (20:21 -0800)]
irkerd: Replace 'password' global with local Connection.password
Using the new kwargs handling to pass the data through Irker() down to
Connection(). Note that this is the nickserv password, not the
server-wide login password used by Connection.connect().
W. Trevor King [Fri, 7 Mar 2014 04:21:11 +0000 (20:21 -0800)]
irkerd: Replace 'logfile' global with local Irker.logfile
W. Trevor King [Fri, 7 Mar 2014 04:21:10 +0000 (20:21 -0800)]
irkerd: Replace 'namestyle' global with local 'nick_template'
Using the new kwargs handling to pass the data through Irker() down to
Connection(). I think 'nick_template' more clearly reflects
the contents of this variable.
W. Trevor King [Fri, 7 Mar 2014 04:21:09 +0000 (20:21 -0800)]
irkerd: Replace 'fallback' global with local 'nick_needs_number'
Using the new kwargs handling to pass the data through Irker() down to
Connection().
W. Trevor King [Fri, 7 Mar 2014 04:21:08 +0000 (20:21 -0800)]
irkerd: Add kwargs handling to pass data to IRCServerConnection.connect
This makes it easy to pass data down the stack:
Irker() (stored in Irker.kwargs)
`-- Irker.handle() -> Dispatcher() (stored in Dispatcher.kwargs)
`-- Dispatcher.dispatch() -> Connection() (stored in Connection.kwargs)
`-- Connection.dequeue() -> IRCServerConnection.connect()
You can easily add data at every point in the stack (e.g. we add
'target' in Irker.handle()) and pull it back out when that's
appropriate (e.g. we tap 'target' back out in Connection()). With
this setup we can reduce the number of global variables currently in
use, because it will be easy to pass data like passwords,
nickame-fallback-ness, etc. down to the appropriate level, without the
intermediate levels needing any changes.
W. Trevor King [Fri, 7 Mar 2014 04:21:07 +0000 (20:21 -0800)]
irkerd: Add Target.__str__ for pretty-printing targets in log messages
Prefer the servername, falling back to the URL, falling back to
Target.__repr__().
W. Trevor King [Fri, 7 Mar 2014 04:21:06 +0000 (20:21 -0800)]
irkerd: Convert to Python's logging module
Instead of using the local IRCClient.debug() method, use the more
flexible standard library logger. This makes it easy to log to
syslog, rotating files, etc, using the usual logging Handlers. The
mapping from the old implementation to the new implementation is:
IRCClient.debug(1, message) -> LOG.info(message)
IRCClient.debug(2, message) -> LOG.debug(message)
IRCClient.debug(50, message) -> LOG.debug(message)
Irker.logerr(errmsg) -> LOG.error(message)
with the exception of the failed-message error, which is logged as
LOG.warning(). I didn't try and recategorize the other message log
levels, although I think a number of info-level log messages should
really be debug-level log messages.
To set the log level, the -d option now takes string arguments
(e.g. 'info', 'debug') instead of numeric arguments (e.g. '1', '2').
This breaks backward compatibility, but I think it makes the argument
more user-friendly. If you try and set an invalid level, there's a
helpful error message to guide you in the right direction.
I also use format_exc() in Connection.dequeue (following the existing
example deeper in the Connection.dequeue nest). The log level should
decide whether the traceback is printed or not, not whether the
exception should be raised or ignored.
W. Trevor King [Fri, 7 Mar 2014 04:21:05 +0000 (20:21 -0800)]
irkerd: Split imported modules onto their own lines
Following PEP 8 [1]:
Imports should usually be on separate lines, e.g.:
Yes: import os
import sys
No: import sys, os
This also makes it easier to read diffs that add and remove imports,
since you won't need a word-diff to see exactly what changed.
[1]: http://legacy.python.org/dev/peps/pep-0008/#imports
Conflicts:
irkerd
W. Trevor King [Fri, 7 Mar 2014 04:21:04 +0000 (20:21 -0800)]
irkerd: Pull request-parsing out into Irker._parse_request
There is a lot of error checking here, which is good, but it distracts
from the core logic of Irker.handle. By pulling the parsing out into
a private helper function, we isolate the code focused on parsing and
error checking from the code focused on dispatching and connection
management, making both easier to read.
I've also changed the Target-validation logic. The old Target.valid
returned True if the Target URL was valid, and False otherwise. The
new Target.validate returns None, and raises an InvalidRequest
exception with an error message describing exactly why the URL is
invalid. We print these messages when dropping server URLs in
Irker._parse_request, while the old Irker.handle code silently dropped
invalid targets. We also continue processing other server URLs after
an invalid Target, while the old Irker.handle code bailed out after
the first invalid Target. Besides making the invalid URLs more
obvious in the logs and increasing resiliency to invalid URLs, these
changes allow us to pull the URL-to-Target conversion out of
Irker.handle entirely, so it can focus more strongly on dispatch and
connection management.
W. Trevor King [Fri, 7 Mar 2014 04:21:03 +0000 (20:21 -0800)]
irkerd: Add InvalidRequest and use it to flatten Irker.handle()
The old implementation had several instances of logic like this:
if exception_condition:
self.logerr("invalid request")
else:
# continue_processing
This increases nesting after each round of exception checking, and
makes the logic of the whole function harder to follow. This commit
replaces that logic with:
try:
if exception_condition:
raise InvalidRequest("invalid request")
# continue peocessing
except InvalidRequest, e:
self.logerr(str(e))
Because the guts of the handle() function are already inside a
try/except block, we can add our except clause to the existing block,
and now exception checks don't increase nesting at all.
The exception to this global try/except block is the 'URL has
unexpected type' error, where we do want a local try/except block
inside the channel loop. That way we get both errors about invalid
URLs and continue to attempt valid URLs. This matches the existing
logic for this check, but conflicts with the current target.valid
check (which doesn't log an error and does stop processing of further
channels).
W. Trevor King [Fri, 7 Mar 2014 04:21:02 +0000 (20:21 -0800)]
irkerd: Store less state in IRCServerConnection.connect()
We will never need the connection-time port, server_address, username,
ircname, or password again, so don't store them. We *do* need server
and real_server_name for Event handling, so keep them around.
Eric S. Raymond [Tue, 4 Feb 2014 22:59:59 +0000 (17:59 -0500)]
Version bump for 2.6.
Alexander van Gessel [Tue, 4 Feb 2014 20:59:09 +0000 (21:59 +0100)]
Add a check for expired connections that are still running
Alexander van Gessel [Tue, 4 Feb 2014 20:58:51 +0000 (21:58 +0100)]
Don't loop forever after failing to connect to IRC
Eric S. Raymond [Wed, 25 Dec 2013 03:55:51 +0000 (22:55 -0500)]
AI0867 gets more credit.
Eric S. Raymond [Wed, 25 Dec 2013 03:14:02 +0000 (22:14 -0500)]
Documentation improvements.
Eric S. Raymond [Wed, 25 Dec 2013 02:29:53 +0000 (21:29 -0500)]
Version bump for 2.5 release.
Alexander van Gessel [Tue, 24 Dec 2013 22:23:04 +0000 (23:23 +0100)]
Fix a deadlock
Eric S. Raymond [Sun, 22 Dec 2013 11:10:47 +0000 (06:10 -0500)]
My typo fix was typoed. Clearly I need more sleep.
Eric S. Raymond [Sun, 22 Dec 2013 11:09:00 +0000 (06:09 -0500)]
Typo fix.
Eric S. Raymond [Sun, 22 Dec 2013 11:06:37 +0000 (06:06 -0500)]
Documentation tweak.
Eric S. Raymond [Wed, 4 Dec 2013 00:37:49 +0000 (19:37 -0500)]
Stupid markup fix.
Eric S. Raymond [Wed, 4 Dec 2013 00:35:21 +0000 (19:35 -0500)]
Version bump for release 2.4.
Laurent Bachelier [Sun, 1 Dec 2013 19:13:23 +0000 (20:13 +0100)]
Only convert to unicode when needed
Otherwise, it would crash if any unicode string was already
present.
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Tue, 3 Dec 2013 22:41:09 +0000 (17:41 -0500)]
Supply a missing parameter.
Eric S. Raymond [Mon, 2 Dec 2013 15:45:18 +0000 (10:45 -0500)]
Cleaner exit code.
Eric S. Raymond [Mon, 2 Dec 2013 15:42:38 +0000 (10:42 -0500)]
We don't want to return an error status in immediate mode.
Antoine Beaupré [Sun, 1 Dec 2013 06:07:19 +0000 (01:07 -0500)]
fix crash after introduction of immediate mode
this fixes the following backtrace:
Exception happened during processing of request from ('127.0.0.1', 41192)
Traceback (most recent call last):
File /usr/lib/python2.7/SocketServer.py, line 295, in _handle_request_noblock
self.process_request(request, client_address)
File /usr/lib/python2.7/SocketServer.py, line 321, in process_request
self.finish_request(request, client_address)
File /usr/lib/python2.7/SocketServer.py, line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File /usr/lib/python2.7/SocketServer.py, line 649, in __init__
self.handle()
File ./irkerd, line 820, in handle
irker.handle(line.strip())
File ./irkerd, line 786, in handle
self.servers[target.server()].dispatch(target.channel, message, target.key, quit_after=quit_after)
File ./irkerd, line 641, in dispatch
eligibles[0].enqueue(channel, message, key)
TypeError: enqueue() takes exactly 5 arguments (4 given)
when running: ./irk irker-test test
Antoine Beaupré [Sun, 1 Dec 2013 06:39:07 +0000 (01:39 -0500)]
add a more helpful hook example: in post-receive
the previous suggestion seemed to be about the update hook, but it's
usually bad practice to setup notification hooks there, because if
they fail, the push fails.
parsing the git documentation to find exactly the incantation is not
exactly trivial either...
Eric S. Raymond [Sun, 1 Dec 2013 04:30:39 +0000 (23:30 -0500)]
Another shipper metadata change.
Eric S. Raymond [Sun, 1 Dec 2013 02:41:09 +0000 (21:41 -0500)]
Version bump for 2.3 release.
Eric S. Raymond [Sun, 1 Dec 2013 02:31:42 +0000 (21:31 -0500)]
Reinstate a simpler irk that only works with irkerd running.
Eric S. Raymond [Sat, 30 Nov 2013 20:00:00 +0000 (15:00 -0500)]
Clean up and document immediate mode.
Eric S. Raymond [Sat, 30 Nov 2013 19:43:52 +0000 (14:43 -0500)]
Immediate mode work.
Eric S. Raymond [Sat, 30 Nov 2013 19:29:45 +0000 (14:29 -0500)]
Remove unecessary elaboration.
Eric S. Raymond [Sat, 30 Nov 2013 17:38:58 +0000 (12:38 -0500)]
An until string is not the answer.
Eric S. Raymond [Sat, 30 Nov 2013 14:52:39 +0000 (09:52 -0500)]
Turning off DEAF is mecessary for this technique...
...but, alas, the server doesn't echo pings back to their sources.
Eric S. Raymond [Sat, 30 Nov 2013 14:14:35 +0000 (09:14 -0500)]
I think this would work to terminate immediaate mode...
...if we could see message traffic!
Eric S. Raymond [Sat, 30 Nov 2013 12:31:56 +0000 (07:31 -0500)]
Refactoring step: don't uncomditionally spawn a thread...
...immediate mode doesn't need it.
Eric S. Raymond [Sat, 30 Nov 2013 12:09:22 +0000 (07:09 -0500)]
Note a deficiency
Eric S. Raymond [Fri, 29 Nov 2013 13:45:52 +0000 (08:45 -0500)]
Half-working immediate mode.
We can now send messages with -i but we don't ger clean termination
afterwards yet.
Eric S. Raymond [Fri, 29 Nov 2013 11:14:11 +0000 (06:14 -0500)]
NEWS typo fix.
Eric S. Raymond [Fri, 29 Nov 2013 11:11:31 +0000 (06:11 -0500)]
Version bump for 2.2 release.
Eric S. Raymond [Fri, 29 Nov 2013 11:05:57 +0000 (06:05 -0500)]
Fix up some shipper metadata.
Eric S. Raymond [Wed, 27 Nov 2013 00:45:58 +0000 (19:45 -0500)]
Required magic to kill the spawned instance.
Laurent Bachelier [Tue, 26 Nov 2013 23:24:51 +0000 (00:24 +0100)]
Show traceback on higher debug levels
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Laurent Bachelier [Tue, 26 Nov 2013 23:24:50 +0000 (00:24 +0100)]
Fix some documentation typos
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Tue, 26 Nov 2013 23:32:42 +0000 (18:32 -0500)]
An attempt at making irk clean up after itself.
Perplexingly, the terminate() method call doesn't.
Alexander van Gessel [Tue, 26 Nov 2013 20:47:50 +0000 (21:47 +0100)]
Fix unicode processing
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Alexander van Gessel [Tue, 26 Nov 2013 20:47:26 +0000 (21:47 +0100)]
Remove some irclib cruft
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Eric S. Raymond [Tue, 26 Nov 2013 15:13:08 +0000 (10:13 -0500)]
Version bump for release 2.1.
Eric S. Raymond [Tue, 26 Nov 2013 15:12:43 +0000 (10:12 -0500)]
Undo some damage from an overambitious patch.
Eric S. Raymond [Tue, 26 Nov 2013 11:35:24 +0000 (06:35 -0500)]
More documentation polishing.
Eric S. Raymond [Tue, 26 Nov 2013 11:03:49 +0000 (06:03 -0500)]
weechat doesn't do ANSI color, only mIRC.
Eric S. Raymond [Tue, 26 Nov 2013 10:56:35 +0000 (05:56 -0500)]
News update.
Eric S. Raymond [Tue, 26 Nov 2013 10:53:28 +0000 (05:53 -0500)]
Explain why relaying through this is a good idea!
Eric S. Raymond [Tue, 26 Nov 2013 10:20:15 +0000 (05:20 -0500)]
Documentation polishing.
Eric S. Raymond [Tue, 26 Nov 2013 10:06:07 +0000 (05:06 -0500)]
Cosmetic fix to Makefile.