aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-01-18 19:25:31 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2006-01-18 19:25:31 +0100
commitc1826c6f72d1fe85e1c5decf5207601dac2c23e7 (patch)
tree9189d6f012a7d77f8029a44a7ef8e7a7a49a6d10 /irc.c
parentac9f0e965b5002c9eb022f77eb7c6f16cba662b1 (diff)
BitlBee now tries to empty sendbuffer before closing the connection.
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/irc.c b/irc.c
index 32dadb7c..9db4becb 100644
--- a/irc.c
+++ b/irc.c
@@ -150,6 +150,20 @@ irc_t *irc_new( int fd )
return( irc );
}
+void irc_abort( irc_t *irc )
+{
+ irc->status = USTATUS_SHUTDOWN;
+ if( irc->sendbuffer )
+ {
+ g_source_remove( irc->r_watch_source_id );
+ irc->r_watch_source_id = g_timeout_add_full( G_PRIORITY_HIGH, 1000, (GSourceFunc) irc_free, irc, NULL );
+ }
+ else
+ {
+ irc_free( irc );
+ }
+}
+
static gboolean irc_free_userhash( gpointer key, gpointer value, gpointer data )
{
g_free( key );
@@ -158,7 +172,7 @@ static gboolean irc_free_userhash( gpointer key, gpointer value, gpointer data )
}
/* Because we have no garbage collection, this is quite annoying */
-void irc_free(irc_t * irc)
+void irc_free( irc_t * irc )
{
account_t *account, *accounttmp;
user_t *user, *usertmp;
@@ -495,7 +509,7 @@ int irc_exec( irc_t *irc, char **cmd )
else if( g_strcasecmp( cmd[0], "QUIT" ) == 0 )
{
irc_write( irc, "ERROR :%s%s", cmd[1]?"Quit: ":"", cmd[1]?cmd[1]:"Client Quit" );
- g_io_channel_close( irc->io_channel );
+ /* g_io_channel_close( irc->io_channel ); */
return( 0 );
}