aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-06-06 00:21:02 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-06-06 00:21:02 +0100
commitb308cf9bafbdf76da73a57607b65c4763aa3057b (patch)
treec686906b479a0edd52b18a213e1d420f7343855d /protocols/jabber
parent3ab1d317831a6c1830bb648a1a8d63a41c92f651 (diff)
parente774815bc621af90bb64ca314b84367659c5a005 (diff)
Merging libpurple branch into killerbee. It's fairly usable already, and
Debian packaging is now properly separated. This also picks up a load of stuff from mainline it seems.
Diffstat (limited to 'protocols/jabber')
-rw-r--r--protocols/jabber/Makefile5
-rw-r--r--protocols/jabber/conference.c4
-rw-r--r--protocols/jabber/io.c4
-rw-r--r--protocols/jabber/jabber_util.c29
-rw-r--r--protocols/jabber/message.c4
-rw-r--r--protocols/jabber/s5bytestream.c14
6 files changed, 21 insertions, 39 deletions
diff --git a/protocols/jabber/Makefile b/protocols/jabber/Makefile
index 78a02696..912ea702 100644
--- a/protocols/jabber/Makefile
+++ b/protocols/jabber/Makefile
@@ -7,6 +7,9 @@
### DEFINITIONS
-include ../../Makefile.settings
+ifdef SRCDIR
+SRCDIR := $(SRCDIR)protocols/jabber/
+endif
# [SH] Program variables
objects = conference.o io.o iq.o jabber.o jabber_util.o message.o presence.o s5bytestream.o sasl.o si.o
@@ -32,7 +35,7 @@ distclean: clean
$(objects): ../../Makefile.settings Makefile
-$(objects): %.o: %.c
+$(objects): %.o: $(SRCDIR)%.c
@echo '*' Compiling $<
@$(CC) -c $(CFLAGS) $< -o $@
diff --git a/protocols/jabber/conference.c b/protocols/jabber/conference.c
index f434c58a..affe8aef 100644
--- a/protocols/jabber/conference.c
+++ b/protocols/jabber/conference.c
@@ -271,8 +271,10 @@ void jabber_chat_pkt_presence( struct im_connection *ic, struct jabber_buddy *bu
bud->flags |= JBFLAG_IS_ANONYMOUS;
}
- if( bud != jc->me )
+ if( bud != jc->me && bud->flags & JBFLAG_IS_ANONYMOUS )
{
+ /* If JIDs are anonymized, add them to the local
+ list for the duration of this chat. */
imcb_add_buddy( ic, bud->ext_jid, NULL );
imcb_buddy_nick_hint( ic, bud->ext_jid, bud->resource );
}
diff --git a/protocols/jabber/io.c b/protocols/jabber/io.c
index a14ad21c..d6f92a5f 100644
--- a/protocols/jabber/io.c
+++ b/protocols/jabber/io.c
@@ -63,7 +63,7 @@ int jabber_write( struct im_connection *ic, char *buf, int len )
it via the event handler. If not, add the handler. (In
most cases it probably won't be necessary.) */
if( ( ret = jabber_write_queue( ic ) ) && jd->tx_len > 0 )
- jd->w_inpa = b_input_add( jd->fd, GAIM_INPUT_WRITE, jabber_write_callback, ic );
+ jd->w_inpa = b_input_add( jd->fd, B_EV_IO_WRITE, jabber_write_callback, ic );
}
else
{
@@ -503,7 +503,7 @@ gboolean jabber_start_stream( struct im_connection *ic )
jd->xt = xt_new( jabber_handlers, ic );
if( jd->r_inpa <= 0 )
- jd->r_inpa = b_input_add( jd->fd, GAIM_INPUT_READ, jabber_read_callback, ic );
+ jd->r_inpa = b_input_add( jd->fd, B_EV_IO_READ, jabber_read_callback, ic );
greet = g_strdup_printf( "%s<stream:stream to=\"%s\" xmlns=\"jabber:client\" "
"xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\">",
diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c
index bd2fbe8c..4bc9e3a8 100644
--- a/protocols/jabber/jabber_util.c
+++ b/protocols/jabber/jabber_util.c
@@ -670,10 +670,9 @@ int jabber_buddy_remove_bare( struct im_connection *ic, char *bare_jid )
time_t jabber_get_timestamp( struct xt_node *xt )
{
- struct tm tp, utc;
struct xt_node *c;
- time_t res, tres;
char *s = NULL;
+ struct tm tp;
for( c = xt->children; ( c = xt_find_node( c, "x" ) ); c = c->next )
{
@@ -691,30 +690,8 @@ time_t jabber_get_timestamp( struct xt_node *xt )
tp.tm_year -= 1900;
tp.tm_mon --;
- tp.tm_isdst = -1; /* GRRRRRRRRRRR */
-
- res = mktime( &tp );
- /* Problem is, mktime() just gave us the GMT timestamp for the
- given local time... While the given time WAS NOT local. So
- we should fix this now.
-
- Now I could choose between messing with environment variables
- (kludgy) or using timegm() (not portable)... Or doing the
- following, which I actually prefer... */
- gmtime_r( &res, &utc );
- utc.tm_isdst = -1; /* Once more: GRRRRRRRRRRRRRRRRRR!!! */
- if( utc.tm_hour == tp.tm_hour && utc.tm_min == tp.tm_min )
- /* Sweet! We're in UTC right now... */
- return res;
-
- tres = mktime( &utc );
- res += res - tres;
-
- /* Yes, this is a hack. And it will go wrong around DST changes.
- BUT this is more likely to be threadsafe than messing with
- environment variables, and possibly more portable... */
-
- return res;
+
+ return mktime_utc( &tp );
}
struct jabber_error *jabber_error_parse( struct xt_node *node, char *xmlns )
diff --git a/protocols/jabber/message.c b/protocols/jabber/message.c
index a226a225..e8161029 100644
--- a/protocols/jabber/message.c
+++ b/protocols/jabber/message.c
@@ -79,8 +79,8 @@ xt_status jabber_pkt_message( struct xt_node *node, gpointer data )
if( type && strcmp( type, "headline" ) == 0 )
{
- c = xt_find_node( node->children, "subject" );
- g_string_append_printf( fullmsg, "Headline: %s\n", c && c->text_len > 0 ? c->text : "" );
+ if( ( c = xt_find_node( node->children, "subject" ) ) && c->text_len > 0 )
+ g_string_append_printf( fullmsg, "Headline: %s\n", c->text );
/* <x xmlns="jabber:x:oob"><url>http://....</url></x> can contain a URL, it seems. */
for( c = node->children; c; c = c->next )
diff --git a/protocols/jabber/s5bytestream.c b/protocols/jabber/s5bytestream.c
index 36a2e438..19d0d81a 100644
--- a/protocols/jabber/s5bytestream.c
+++ b/protocols/jabber/s5bytestream.c
@@ -405,7 +405,7 @@ gboolean jabber_bs_recv_handshake( gpointer data, gint fd, b_input_condition con
bt->phase = BS_PHASE_CONNECTED;
- bt->tf->watch_out = b_input_add( fd, GAIM_INPUT_WRITE, jabber_bs_recv_handshake, bt );
+ bt->tf->watch_out = b_input_add( fd, B_EV_IO_WRITE, jabber_bs_recv_handshake, bt );
/* since it takes forever(3mins?) till connect() fails on itself we schedule a timeout */
bt->connect_timeout = b_timeout_add( JABBER_BS_CONTIMEOUT * 1000, jabber_bs_connect_timeout, bt );
@@ -432,7 +432,7 @@ gboolean jabber_bs_recv_handshake( gpointer data, gint fd, b_input_condition con
bt->phase = BS_PHASE_REQUEST;
- bt->tf->watch_in = b_input_add( fd, GAIM_INPUT_READ, jabber_bs_recv_handshake, bt );
+ bt->tf->watch_in = b_input_add( fd, B_EV_IO_READ, jabber_bs_recv_handshake, bt );
bt->tf->watch_out = 0;
return FALSE;
@@ -589,7 +589,7 @@ void jabber_bs_recv_answer_request( struct bs_transfer *bt )
bt->sh->port );
tf->ft->data = tf;
- tf->watch_in = b_input_add( tf->fd, GAIM_INPUT_READ, jabber_bs_recv_read, bt );
+ tf->watch_in = b_input_add( tf->fd, B_EV_IO_READ, jabber_bs_recv_read, bt );
tf->ft->write_request = jabber_bs_recv_write_request;
reply = xt_new_node( "streamhost-used", NULL, NULL );
@@ -631,7 +631,7 @@ gboolean jabber_bs_recv_read( gpointer data, gint fd, b_input_condition cond )
if( ( ret == -1 ) && ( errno == EAGAIN ) )
{
- tf->watch_in = b_input_add( tf->fd, GAIM_INPUT_READ, jabber_bs_recv_read, bt );
+ tf->watch_in = b_input_add( tf->fd, B_EV_IO_READ, jabber_bs_recv_read, bt );
return FALSE;
}
}
@@ -707,7 +707,7 @@ gboolean jabber_bs_send_write( file_transfer_t *ft, char *buffer, unsigned int l
if( tf->byteswritten >= ft->file_size )
imcb_file_finished( ft );
else
- bt->tf->watch_out = b_input_add( tf->fd, GAIM_INPUT_WRITE, jabber_bs_send_can_write, bt );
+ bt->tf->watch_out = b_input_add( tf->fd, B_EV_IO_WRITE, jabber_bs_send_can_write, bt );
return TRUE;
}
@@ -918,7 +918,7 @@ void jabber_si_set_proxies( struct bs_transfer *bt )
strcpy( sh->port, port );
bt->streamhosts = g_slist_append( bt->streamhosts, sh );
- bt->tf->watch_in = b_input_add( tf->fd, GAIM_INPUT_READ, jabber_bs_send_handshake, bt );
+ bt->tf->watch_in = b_input_add( tf->fd, B_EV_IO_READ, jabber_bs_send_handshake, bt );
bt->connect_timeout = b_timeout_add( JABBER_BS_LISTEN_TIMEOUT * 1000, jabber_bs_connect_timeout, bt );
} else {
imcb_log( tf->ic, "Transferring file %s: couldn't listen locally(non fatal, check your ft_listen setting in bitlbee.conf): %s",
@@ -1055,7 +1055,7 @@ gboolean jabber_bs_send_handshake( gpointer data, gint fd, b_input_condition con
bt->phase = BS_PHASE_CONNECTED;
- bt->tf->watch_in = b_input_add( fd, GAIM_INPUT_READ, jabber_bs_send_handshake, bt );
+ bt->tf->watch_in = b_input_add( fd, B_EV_IO_READ, jabber_bs_send_handshake, bt );
return FALSE;
}
case BS_PHASE_CONNECTED: