diff options
-rw-r--r-- | Makefile | 2 | ||||
-rwxr-xr-x | configure | 3 | ||||
-rw-r--r-- | doc/user-guide/misc.xml | 6 | ||||
-rw-r--r-- | doc/user-guide/quickstart.xml | 4 | ||||
-rw-r--r-- | ipc.c | 3 | ||||
-rw-r--r-- | irc_im.c | 44 | ||||
-rw-r--r-- | irc_send.c | 3 | ||||
-rw-r--r-- | protocols/oscar/oscar.c | 4 | ||||
-rw-r--r-- | protocols/twitter/twitter.h | 1 | ||||
-rw-r--r-- | protocols/twitter/twitter_lib.c | 11 |
10 files changed, 50 insertions, 31 deletions
@@ -155,7 +155,7 @@ $(subdirs): $(OTR_PI): %.so: $(SRCDIR)%.c @echo '*' Building plugin $@ - @$(CC) $(CFLAGS) $(OTRFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ + @$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS) $(SKYPE_PI): $(SRCDIR)protocols/skype/skype.c @echo '*' Building plugin skype @@ -18,7 +18,7 @@ includedir='$prefix/include/bitlbee/' systemdsystemunitdir='' libevent='/usr/' pidfile='/var/run/bitlbee.pid' -ipcsocket='/var/run/bitlbee.sock' +ipcsocket='' pcdir='$prefix/lib/pkgconfig' systemlibdirs="/lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64" @@ -66,7 +66,6 @@ Option Description Default --systemdsystemunitdir=... $systemdsystemunitdir --pidfile=... $pidfile --config=... $config ---ipcsocket=... $ipcsocket --msn=0/1 Disable/enable MSN part $msn --jabber=0/1 Disable/enable Jabber part $jabber diff --git a/doc/user-guide/misc.xml b/doc/user-guide/misc.xml index 1aceab56..e081fc74 100644 --- a/doc/user-guide/misc.xml +++ b/doc/user-guide/misc.xml @@ -190,9 +190,9 @@ also have to set the <emphasis>account</emphasis> setting. Example: </para> <ircexample> - <ircline nick="wilmer">chan set &wlm fill_by account</ircline> + <ircline nick="wilmer">chan &wlm set fill_by account</ircline> <ircline nick="root">fill_by = `account'</ircline> - <ircline nick="wilmer">chan set &wlm account msn</ircline> + <ircline nick="wilmer">chan &wlm set account msn</ircline> <ircline nick="root">account = `msn'</ircline> </ircexample> @@ -203,7 +203,7 @@ also/just offline contacts. Example: </para> <ircexample> - <ircline nick="wilmer">chan set &offline show_users offline</ircline> + <ircline nick="wilmer">chan &offline set show_users offline</ircline> <ircline nick="root">show_users = `offline'</ircline> </ircexample> diff --git a/doc/user-guide/quickstart.xml b/doc/user-guide/quickstart.xml index dcd389a8..23b0bf9b 100644 --- a/doc/user-guide/quickstart.xml +++ b/doc/user-guide/quickstart.xml @@ -71,7 +71,9 @@ In this case r2d2 is online, since he/she joins the channel immediately. If the Lets say you accidentally added r2d3@example.com rather than r2d2@example.com, or maybe you just want to remove a user from your list because you never talk to them. To remove a name you will want to use the <emphasis>remove</emphasis> command: <emphasis>remove r2d3</emphasis> </para> -<para>Finally, if you have multiple users with similar names you may use the <emphasis>rename</emphasis> command to make it easier to remember: <emphasis>rename r2d2_ r2d2_aim</emphasis> +<para> +Finally, if you have multiple users with similar names you may use the <emphasis>rename</emphasis> command to make it easier to remember: <emphasis>rename r2d2_ r2d2_aim</emphasis> +</para> <para> When finished, type <emphasis>help quickstart4</emphasis> to continue. @@ -908,6 +908,9 @@ int ipc_master_listen_socket() struct sockaddr_un un_addr; int serversock; + if (!IPCSOCKET || !*IPCSOCKET) + return 1; + /* Clean up old socket files that were hanging around.. */ if (unlink(IPCSOCKET) == -1 && errno != ENOENT) { log_message( LOGLVL_ERROR, "Could not remove old IPC socket at %s: %s", IPCSOCKET, strerror(errno) ); @@ -192,39 +192,30 @@ void bee_irc_channel_update( irc_t *irc, irc_channel_t *ic, irc_user_t *iu ) } } -static void bee_irc_msg_from_user( irc_user_t *iu, const char *msg, time_t sent_at ) +static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, time_t sent_at ) { - irc_t *irc = iu->irc; - bee_t *bee = irc->b; + irc_t *irc = bee->ui_data; + irc_user_t *iu = (irc_user_t *) bu->ui_data; const char *dst; char *prefix = NULL; char *wrapped, *ts = NULL; - + char *msg = g_strdup( msg_ ); + GSList *l; + if( sent_at > 0 && set_getbool( &irc->b->set, "display_timestamps" ) ) ts = irc_format_timestamp( irc, sent_at ); - dst = irc_user_msgdest(iu); - if(dst != irc->user->nick) { + dst = irc_user_msgdest( iu ); + if( dst != irc->user->nick ) + { /* if not messaging directly, call user by name */ prefix = g_strdup_printf( "%s%s%s", irc->user->nick, set_getstr( &bee->set, "to_char" ), ts ? : "" ); - } else { + } + else + { prefix = ts; - ts = NULL; /* don't doulbe-free */ + ts = NULL; /* don't double-free */ } - - wrapped = word_wrap( msg, 425 ); - irc_send_msg( iu, "PRIVMSG", dst, wrapped, prefix ); - - g_free( wrapped ); - g_free( prefix ); - g_free( ts ); -} - -static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, time_t sent_at ) -{ - irc_user_t *iu = (irc_user_t *) bu->ui_data; - char *msg = g_strdup( msg_ ); - GSList *l; for( l = irc_plugins; l; l = l->next ) { @@ -255,9 +246,14 @@ static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, msg = s; } - bee_irc_msg_from_user( iu, msg, sent_at ); - + wrapped = word_wrap( msg, 425 ); + irc_send_msg( iu, "PRIVMSG", dst, wrapped, prefix ); + + g_free( wrapped ); + g_free( prefix ); g_free( msg ); + g_free( ts ); + return TRUE; } @@ -109,6 +109,9 @@ void irc_send_motd( irc_t *irc ) close( fd ); } +/* Used by some funcs that generate PRIVMSGs to figure out if we're talking to + this person in /query or in a control channel. WARNING: callers rely on + this returning a pointer at irc->user_nick, not a copy of it. */ const char *irc_user_msgdest( irc_user_t *iu ) { irc_t *irc = iu->irc; diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 0d23b7e8..27e8f210 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -2101,6 +2101,10 @@ static int gaim_ssi_parseack( aim_session_t *sess, aim_frame_t *fr, ... ) aim_ssi_auth_request( sess, fr->conn, list, "" ); aim_ssi_addbuddies( sess, fr->conn, OSCAR_GROUP, &list, 1, 1 ); } + else if( st == 0x0A ) + { + imcb_error( sess->aux_data, "Buddy %s is already in your list", list ); + } else { imcb_error( sess->aux_data, "Error while adding buddy: 0x%04x", st ); diff --git a/protocols/twitter/twitter.h b/protocols/twitter/twitter.h index 14e43824..47dbeb29 100644 --- a/protocols/twitter/twitter.h +++ b/protocols/twitter/twitter.h @@ -38,6 +38,7 @@ typedef enum TWITTER_DOING_TIMELINE = 0x10000, TWITTER_GOT_TIMELINE = 0x20000, TWITTER_GOT_MENTIONS = 0x40000, + TWITTER_DOING_TIMELINE_SLOW = 0x80000, } twitter_flags_t; struct twitter_log_data; diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c index 4c680930..00e3a2ee 100644 --- a/protocols/twitter/twitter_lib.c +++ b/protocols/twitter/twitter_lib.c @@ -726,7 +726,18 @@ void twitter_get_timeline(struct im_connection *ic, gint64 next_cursor) struct twitter_data *td = ic->proto_data; gboolean include_mentions = set_getbool(&ic->acc->set, "fetch_mentions"); + if ((td->flags & 0xf0000) == (TWITTER_DOING_TIMELINE | TWITTER_DOING_TIMELINE_SLOW)) { + imcb_log(ic, "Connection seems to have stalled again.\n" + "This is a known bug, if you see this happen a lot " + "please generate some traffic dumps."); + td->flags &= ~0xf0000; + } + if (td->flags & TWITTER_DOING_TIMELINE) { + /* This shouldn't normally happen at all but I'm currently hunting a bug + where it does. Instead of having users suffer under it, have a work- + around with a warning. */ + td->flags |= TWITTER_DOING_TIMELINE_SLOW; return; } |