Changeset 81ee561
- Timestamp:
- 2010-03-20T18:03:18Z (15 years ago)
- Branches:
- master
- Children:
- 85693e6
- Parents:
- 3330468 (diff), 0baed0d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 1 added
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
bitlbee.c
r3330468 r81ee561 109 109 chdir( "/" ); 110 110 111 i = close( 0 ) == 0; 112 i += close( 1 ) == 0; 113 i += close( 2 ) == 0; 114 /* To avoid that something important ends up on one of those 115 fd's, open them for something bogus. Otherwise RESTART 116 may cause troubles. */ 117 while( i > 0 ) 118 { 119 open( "/dev/null", O_WRONLY ); 120 i --; 121 } 111 if( getenv( "_BITLBEE_RESTART_STATE" ) == NULL ) 112 for( i = 0; i < 3; i ++ ) 113 if( close( i ) == 0 ) 114 { 115 /* Keep something bogus on those fd's just in case. */ 116 open( "/dev/null", O_WRONLY ); 117 } 122 118 } 123 119 #endif -
bitlbee.h
r3330468 r81ee561 163 163 164 164 char *set_eval_root_nick( set_t *set, char *new_nick ); 165 char *set_eval_control_channel( set_t *set, char *new_name ); 165 166 166 167 extern global_t global; -
configure
r3330468 r81ee561 20 20 ipcsocket='/var/run/bitlbee.sock' 21 21 pcdir='$prefix/lib/pkgconfig' 22 systemlibdirs="/lib / usr/lib /usr/local/lib"22 systemlibdirs="/lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64" 23 23 24 24 msn=1 … … 159 159 160 160 echo CFLAGS=$CFLAGS >> Makefile.settings 161 echo CFLAGS+=-I`pwd` - iquote`pwd`/lib -iquote`pwd`/protocols -I. >> Makefile.settings161 echo CFLAGS+=-I`pwd` -I`pwd`/lib -I`pwd`/protocols -I. >> Makefile.settings 162 162 163 163 echo CFLAGS+=-DHAVE_CONFIG_H >> Makefile.settings … … 298 298 detect_resolv_dynamic() 299 299 { 300 echo "$RESOLV_TESTCODE" | $CC -o /dev/null -x c - -lresolv >/dev/null 2>/dev/null 300 TMPFILE=$(mktemp) 301 ret=1 302 echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -lresolv >/dev/null 2>/dev/null 301 303 if [ "$?" = "0" ]; then 302 304 echo 'EFLAGS+=-lresolv' >> Makefile.settings 303 return 0 304 fi 305 306 return 1 305 ret=0 306 fi 307 308 rm -f $TMPFILE 309 return $ret 307 310 } 308 311 309 312 detect_resolv_static() 310 313 { 314 TMPFILE=$(mktemp) 315 ret=1 311 316 for i in $systemlibdirs; do 312 317 if [ -f $i/libresolv.a ]; then 313 echo "$RESOLV_TESTCODE" | $CC -o /dev/null-x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null318 echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null 314 319 if [ "$?" = "0" ]; then 315 320 echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings 316 ret urn0321 ret=0 317 322 fi 318 323 fi 319 324 done 320 325 321 return 1 326 rm -f $TMPFILE 327 return $ret 322 328 } 323 329 -
debian/bitlbee.init
r3330468 r81ee561 41 41 chown bitlbee: /var/run/bitlbee.pid 42 42 43 # Clean up after the bug between 1.2-5 and 1.2.1-2 where BitlBee ran 44 # as root. (#494656 and #495877) Fixing this in the postinst script 45 # is not enough since the user will restart his BitlBee after up- 46 # grading the package, and the BitlBee running as root will then 47 # save its settings, re-setting ownership of the file to root. 48 # TODO: Remove this after a few revisions. 49 find /var/lib/bitlbee -uid 0 -name '*.xml' -exec chown bitlbee: {} \; 50 51 start-stop-daemon --start --quiet \ 43 start-stop-daemon --start --quiet --pidfile $PIDFILE \ 52 44 --exec $DAEMON -- -p $BITLBEE_PORT -P $PIDFILE $BITLBEE_OPTS 53 45 } -
debian/changelog
r3330468 r81ee561 1 bitlbee (1.2.5-1) unstable; urgency=low 2 3 * New upstream version. 4 * Fixed issues with server-side MSN nickname corruption. (Closes: #538756) 5 * Debconf translation fixes/additions. (Closes: #541754, #563504) 6 7 -- Wilmer van der Gaast <wilmer@gaast.net> Wed, 17 Mar 2010 14:59:27 +0000 8 9 bitlbee (1.2.4-2) unstable; urgency=low 10 11 * Merging in some changes from bzr-head: 12 * Use libresolv.so where possible. (Closes: #551775) 13 * Some include file changes that make the bitlbee-dev package useful again. 14 15 -- Wilmer van der Gaast <wilmer@gaast.net> Thu, 19 Nov 2009 23:02:43 +0000 16 17 bitlbee (1.2.4-1) unstable; urgency=low 18 19 * New upstream version. 20 * Fixed issues with Yahoo! (Closes: #536178) 21 22 -- Wilmer van der Gaast <wilmer@gaast.net> Sat, 17 Oct 2009 18:12:45 +0100 23 24 bitlbee (1.2.3-2) unstable; urgency=low 25 26 * Fixed bitblee typo in prerm (introduced by NMU 1.2.1-1.1). 27 (Closes: #531287) 28 * Fixed bitlbee.deb dep in bitlbee-dev to deal with binary NMUs. 29 (Closes: #531219) 30 * Fixed free port detection code in debian/config which was a bit limited 31 and also buggy. 32 * Removing code that edits bitlbee.conf from postinst (and chown code in 33 the init script), it's not really necessary anymore; bitlbee may only 34 still run as root if the admin doesn't read conffile diffs. 35 (Closes: #514572) 36 * No longer overwriting port number info in /etc/default/bitlbee with 37 what's in debconf. (Closes: #514148) 38 * Added notes about the above two changes to bitlbee.conf. 39 40 -- Wilmer van der Gaast <wilmer@gaast.net> Sun, 07 Jun 2009 21:17:39 +0100 41 42 bitlbee (1.2.3-1) unstable; urgency=critical 43 44 * New upstream version. 45 * Fixes another account hijacking issue. (Closes: #498159) 46 * Restored --pidfile argument to start-stop-daemon, otherwise the init 47 script fails to restart BitlBee when users are connected. 48 49 -- Wilmer van der Gaast <wilmer@gaast.net> Sun, 07 Sep 2008 18:53:04 +0100 50 1 51 bitlbee (1.2.2-1) unstable; urgency=critical 2 52 -
debian/config
r3330468 r81ee561 2 2 3 3 . /usr/share/debconf/confmodule 4 [ -f /etc/default/bitlbee ] && . /etc/default/bitlbee 4 5 5 6 db_title BitlBee 6 7 7 db_get bitlbee/serveport 8 if [ "$RET" = "stillhavetoask" ]; then 9 if netstat -ltn | grep ':6667' 2> /dev/null > /dev/null; then 10 port=6668; 11 else 12 port=6667; 8 if [ -n "$BITLBEE_PORT" ]; then 9 db_set bitlbee/serveport "$BITLBEE_PORT" 10 else 11 db_get bitlbee/serveport 12 if [ "$RET" = "stillhavetoask" ]; then 13 listens=$(netstat -ltn | awk '{print $4}') 14 for port in 6667 6666 6668 6669; do 15 if [ $(expr "$listens " : ".*:$port\s") = "0" ]; then 16 break 17 fi 18 done 19 db_set bitlbee/serveport $port; 13 20 fi 14 db_set bitlbee/serveport $port;15 21 fi 16 22 -
debian/control
r3330468 r81ee561 19 19 Package: bitlbee-dev 20 20 Architecture: all 21 Depends: bitlbee ( = ${binary:Version})21 Depends: bitlbee (>= ${source:Version}), bitlbee (<< ${source:Version}.1~) 22 22 Description: An IRC to other chat networks gateway 23 23 This program can be used as an IRC server which forwards everything you -
debian/patches/bitlbee.conf.diff
r3330468 r81ee561 1 === modified file 'bitlbee.conf' 2 --- debian/bitlbee/etc/bitlbee/bitlbee.conf 2008-08-26 22:33:54 +0000 3 +++ debian/bitlbee/etc/bitlbee/bitlbee.conf 2008-08-27 23:18:13 +0000 4 @@ -23,7 +23,7 @@ 1 --- debian/bitlbee/etc/bitlbee/bitlbee.conf 2009-06-01 00:20:24.000000000 +0100 2 +++ debian/bitlbee/etc/bitlbee/bitlbee.conf 2009-06-07 21:16:19.000000000 +0100 3 @@ -23,13 +23,18 @@ 5 4 ## If BitlBee is started by root as a daemon, it can drop root privileges, 6 5 ## and change to the specified user. 7 6 ## 8 7 -# User = bitlbee 8 +## DEBIAN NOTE: Without this, BitlBee will run as root! 9 +## 9 10 +User = bitlbee 10 11 11 12 ## DaemonPort/DaemonInterface: 12 13 ## 13 14 ## For daemon mode, you can specify on what interface and port the daemon 15 ## should be listening for connections. 16 ## 17 +## DEBIAN NOTE: The init script passes the -p flag to use the port number 18 +## set using debconf, this overrides the DaemonPort setting here. 19 +## 20 # DaemonInterface = 0.0.0.0 21 # DaemonPort = 6667 22 -
debian/po/POTFILES.in
r3330468 r81ee561 1 [type: gettext/rfc822deb] bitlbee.templates.master1 [type: gettext/rfc822deb] templates -
debian/postinst
r3330468 r81ee561 33 33 ## /etc/default/bitlbee: Auto-generated/updated script. 34 34 ## 35 ## Don't edit this line, use dpkg-reconfigure bitlbee35 ## If running in (fork)daemon mode, listen on this TCP port. 36 36 BITLBEE_PORT="$PORT" 37 37 … … 61 61 else 62 62 mv /usr/share/bitlbee/help.upgrading /usr/share/bitlbee/help.txt 63 fi64 fi65 66 if ! grep -qi '^User *= *' /etc/bitlbee/bitlbee.conf; then67 echo 'Updating configuration file, enabling User-setting...'68 if ! sed -i -e 's/# *User *= *.*/User = bitlbee/i' /etc/bitlbee/bitlbee.conf; then69 echo 'Failed! BitlBee may run as root now, please check your configs.'70 63 fi 71 64 fi -
debian/prerm
r3330468 r81ee561 11 11 else 12 12 if which invoke-rc.d >/dev/null 2>&1; then 13 invoke-rc.d bit blee stop || exit 013 invoke-rc.d bitlbee stop || exit 0 14 14 else 15 15 /etc/init.d/bitlbee stop || exit 0 -
doc/CHANGES
r3330468 r81ee561 10 10 relevant functions available in the dynamic version. 11 11 - Improved away state code and added the ability to set (non-away) status 12 messages using "set status" (also possible per account). 12 messages using "set status" (also possible per account) and see them in 13 blist and /whois output. 13 14 - Added a post-1.2 equivalent of encode/decode to quickly encrypt/decrypt 14 15 passwords in a way that BitlBee can read them. … … 18 19 detect cases where auto reconnect should be avoided (i.e. concurrent 19 20 logins). 21 - Changed the default resource_select setting which should reduce message 22 routing issues on Jabber (i.e. messages going someone's phone instead of 23 the main client). 24 25 Fixed 17 Mar 2010 20 26 21 27 Version 1.2.4: -
doc/user-guide/commands.xml
r3330468 r81ee561 511 511 </bitlbee-setting> 512 512 513 <bitlbee-setting name="control_channel" type="string" scope="global"> 514 <default>&bitlbee</default> 515 516 <description> 517 <para> 518 Normally the control channel where you can see all your contacts is called "&bitlbee". If you don't like this name, you can rename it to anything else using the <emphasis>rename</emphasis> command, or by changing this setting. 519 </para> 520 </description> 521 </bitlbee-setting> 522 513 523 <bitlbee-setting name="debug" type="boolean" scope="global"> 514 524 <default>false</default> … … 716 726 717 727 <bitlbee-setting name="resource_select" type="string" scope="account"> 718 <default> priority</default>728 <default>activity</default> 719 729 <possible-values>priority, activity</possible-values> 720 730 -
irc.c
r3330468 r81ee561 171 171 s = set_add( &irc->set, "buddy_sendbuffer_delay", "200", set_eval_int, irc ); 172 172 s = set_add( &irc->set, "charset", "utf-8", set_eval_charset, irc ); 173 s = set_add( &irc->set, "control_channel", irc->channel, set_eval_control_channel, irc ); 173 174 s = set_add( &irc->set, "debug", "false", set_eval_bool, irc ); 174 175 s = set_add( &irc->set, "default_target", "root", NULL, irc ); -
irc_commands.c
r3330468 r81ee561 497 497 else if( u->away ) 498 498 irc_reply( irc, 301, "%s :%s", u->nick, u->away ); 499 if( u->status_msg ) 500 irc_reply( irc, 333, "%s :Status: %s", u->nick, u->status_msg ); 499 501 500 502 irc_reply( irc, 318, "%s :End of /WHOIS list", nick ); -
protocols/jabber/io.c
r3330468 r81ee561 380 380 jd->flags |= JFLAG_WANT_SESSION; 381 381 382 /* This flag is already set if we authenticated via SASL, so now 383 we can resume the session in the new stream, if we don't have 384 to bind/initialize the session. */ 385 if( jd->flags & JFLAG_AUTHENTICATED && ( jd->flags & ( JFLAG_WANT_BIND | JFLAG_WANT_SESSION ) ) == 0 ) 386 { 387 if( !jabber_get_roster( ic ) ) 388 return XT_ABORT; 389 } 390 else if( jd->flags & JFLAG_AUTHENTICATED ) 391 { 382 if( jd->flags & JFLAG_AUTHENTICATED ) 392 383 return jabber_pkt_bind_sess( ic, NULL, NULL ); 393 }394 384 395 385 return XT_HANDLED; -
protocols/jabber/iq.c
r3330468 r81ee561 307 307 strcmp( s + 1, set_getstr( &ic->acc->set, "resource" ) ) != 0 ) 308 308 imcb_log( ic, "Server changed session resource string to `%s'", s + 1 ); 309 310 jd->flags &= ~JFLAG_WANT_BIND;311 }312 else if( node && ( c = xt_find_node( node->children, "session" ) ) )313 {314 jd->flags &= ~JFLAG_WANT_SESSION;315 309 } 316 310 … … 319 313 reply = xt_new_node( "bind", NULL, xt_new_node( "resource", set_getstr( &ic->acc->set, "resource" ), NULL ) ); 320 314 xt_add_attr( reply, "xmlns", XMLNS_BIND ); 315 jd->flags &= ~JFLAG_WANT_BIND; 321 316 } 322 317 else if( jd->flags & JFLAG_WANT_SESSION ) … … 324 319 reply = xt_new_node( "session", NULL, NULL ); 325 320 xt_add_attr( reply, "xmlns", XMLNS_SESSION ); 321 jd->flags &= ~JFLAG_WANT_SESSION; 326 322 } 327 323 -
protocols/jabber/jabber.c
r3330468 r81ee561 58 58 char str[16]; 59 59 60 s = set_add( &acc->set, "activity_timeout", "600", set_eval_int, acc ); 61 60 62 g_snprintf( str, sizeof( str ), "%d", jabber_port_list[0] ); 61 63 s = set_add( &acc->set, "port", str, set_eval_int, acc ); … … 67 69 s->flags |= ACC_SET_OFFLINE_ONLY; 68 70 69 s = set_add( &acc->set, "resource_select", " priority", NULL, acc );71 s = set_add( &acc->set, "resource_select", "activity", NULL, acc ); 70 72 71 73 s = set_add( &acc->set, "server", NULL, set_eval_account, acc ); … … 307 309 bud = jabber_buddy_by_ext_jid( ic, who, 0 ); 308 310 else 309 bud = jabber_buddy_by_jid( ic, who, 0);311 bud = jabber_buddy_by_jid( ic, who, GET_BUDDY_BARE_OK ); 310 312 311 313 node = xt_new_node( "body", message, NULL ); … … 352 354 static void jabber_get_info( struct im_connection *ic, char *who ) 353 355 { 354 struct jabber_data *jd = ic->proto_data;355 356 struct jabber_buddy *bud; 356 357 357 if( strchr( who, '/' ) ) 358 bud = jabber_buddy_by_jid( ic, who, 0 ); 359 else 360 { 361 char *s = jabber_normalize( who ); 362 bud = g_hash_table_lookup( jd->buddies, s ); 363 g_free( s ); 364 } 358 bud = jabber_buddy_by_jid( ic, who, GET_BUDDY_FIRST ); 365 359 366 360 while( bud ) -
protocols/jabber/jabber.h
r3330468 r81ee561 108 108 }; 109 109 110 /* Somewhat messy data structure: We have a hash table with the bare JID as 111 the key and the head of a struct jabber_buddy list as the value. The head 112 is always a bare JID. If the JID has other resources (often the case, 113 except for some transports that don't support multiple resources), those 114 follow. In that case, the bare JID at the beginning doesn't actually 115 refer to a real session and should only be used for operations that 116 support incomplete JIDs. */ 110 117 struct jabber_buddy 111 118 { … … 121 128 char *away_message; 122 129 123 time_t last_ act;130 time_t last_msg; 124 131 jabber_buddy_flags_t flags; 125 132 … … 209 216 GET_BUDDY_EXACT = 2, /* Get an exact match (only makes sense with bare JIDs). */ 210 217 GET_BUDDY_FIRST = 4, /* No selection, simply get the first resource for this JID. */ 218 GET_BUDDY_BARE = 8, /* Get the bare version of the JID (possibly inexistent). */ 219 GET_BUDDY_BARE_OK = 16, /* Allow returning a bare JID if that seems better. */ 211 220 } get_buddy_flags_t; 212 221 -
protocols/jabber/jabber_util.c
r3330468 r81ee561 4 4 * Jabber module - Misc. stuff * 5 5 * * 6 * Copyright 2006 Wilmer van der Gaast <wilmer@gaast.net> *6 * Copyright 2006-2010 Wilmer van der Gaast <wilmer@gaast.net> 7 7 * * 8 8 * This program is free software; you can redistribute it and/or modify * … … 345 345 if( ( bud = g_hash_table_lookup( jd->buddies, full_jid ) ) ) 346 346 { 347 /* The first entry is always a bare JID. If there are more, we 348 should ignore the first one here. */ 349 if( bud->next ) 350 bud = bud->next; 351 347 352 /* If this is a transport buddy or whatever, it can't have more 348 353 than one instance, so this is always wrong: */ … … 379 384 else 380 385 { 381 /* Keep in mind that full_jid currently isn't really 382 a full JID... */ 383 new->bare_jid = g_strdup( full_jid ); 386 new->full_jid = new->bare_jid = g_strdup( full_jid ); 384 387 g_hash_table_insert( jd->buddies, new->bare_jid, new ); 388 389 if( s ) 390 { 391 new->next = g_new0( struct jabber_buddy, 1 ); 392 new->next->bare_jid = new->bare_jid; 393 new = new->next; 394 } 385 395 } 386 396 … … 408 418 { 409 419 struct jabber_data *jd = ic->proto_data; 410 struct jabber_buddy *bud ;420 struct jabber_buddy *bud, *head; 411 421 char *s, *jid; 412 422 … … 420 430 if( ( bud = g_hash_table_lookup( jd->buddies, jid ) ) ) 421 431 { 432 bare_exists = 1; 433 434 if( bud->next ) 435 bud = bud->next; 436 422 437 /* Just return the first one for this bare JID. */ 423 438 if( flags & GET_BUDDY_FIRST ) … … 441 456 break; 442 457 } 443 else444 {445 /* This variable tells the if down here that the bare446 JID already exists and we should feel free to add447 more resources, if the caller asked for that. */448 bare_exists = 1;449 }450 458 451 459 if( bud == NULL && ( flags & GET_BUDDY_CREAT ) && 452 ( !bare_exists || imcb_find_buddy( ic, jid ) ) )460 ( bare_exists || imcb_find_buddy( ic, jid ) ) ) 453 461 { 454 462 *s = '/'; … … 464 472 char *set; 465 473 466 bud = g_hash_table_lookup( jd->buddies, jid ); 474 head = g_hash_table_lookup( jd->buddies, jid ); 475 bud = ( head && head->next ) ? head->next : head; 467 476 468 477 g_free( jid ); … … 481 490 /* Looks like the caller doesn't care about details. */ 482 491 return bud; 492 else if( flags & GET_BUDDY_BARE ) 493 return head; 483 494 484 495 best_prio = best_time = bud; … … 487 498 if( bud->priority > best_prio->priority ) 488 499 best_prio = bud; 489 if( bud->last_ act > best_time->last_act)500 if( bud->last_msg > best_time->last_msg ) 490 501 best_time = bud; 491 502 } … … 493 504 if( ( set = set_getstr( &ic->acc->set, "resource_select" ) ) == NULL ) 494 505 return NULL; 495 else if( strcmp( set, "activity" ) == 0 ) 506 else if( strcmp( set, "priority" ) == 0 ) 507 return best_prio; 508 else if( flags & GET_BUDDY_BARE_OK ) /* && strcmp( set, "activity" ) == 0 */ 509 { 510 if( best_time->last_msg + set_getint( &ic->acc->set, "activity_timeout" ) >= time( NULL ) ) 511 return best_time; 512 else 513 return head; 514 } 515 else 496 516 return best_time; 497 else /* if( strcmp( set, "priority" ) == 0 ) */498 return best_prio;499 517 } 500 518 } … … 538 556 { 539 557 struct jabber_data *jd = ic->proto_data; 540 struct jabber_buddy *bud, *prev , *bi;558 struct jabber_buddy *bud, *prev = NULL, *bi; 541 559 char *s, *full_jid; 542 560 … … 548 566 if( ( bud = g_hash_table_lookup( jd->buddies, full_jid ) ) ) 549 567 { 568 if( bud->next ) 569 bud = (prev=bud)->next; 570 550 571 /* If there's only one item in the list (and if the resource 551 572 matches), removing it is simple. (And the hash reference … … 555 576 ( bud->resource && s && strcmp( bud->resource, s + 1 ) == 0 ) ) ) 556 577 { 557 g_hash_table_remove( jd->buddies, bud->bare_jid ); 558 g_free( bud->bare_jid ); 559 g_free( bud->ext_jid ); 560 g_free( bud->full_jid ); 561 g_free( bud->away_message ); 562 g_free( bud ); 563 564 g_free( full_jid ); 565 566 return 1; 578 return jabber_buddy_remove_bare( ic, full_jid ); 567 579 } 568 580 else if( s == NULL || bud->resource == NULL ) … … 575 587 else 576 588 { 577 for( bi = bud , prev = NULL; bi; bi = (prev=bi)->next )589 for( bi = bud; bi; bi = (prev=bi)->next ) 578 590 if( strcmp( bi->resource, s + 1 ) == 0 ) 579 591 break; … … 586 598 prev->next = bi->next; 587 599 else 588 /* The hash table should point at the second 589 item, because we're removing the first. */ 600 /* Don't think this should ever happen anymore. */ 590 601 g_hash_table_replace( jd->buddies, bi->bare_jid, bi->next ); 591 602 -
protocols/jabber/message.c
r3330468 r81ee561 71 71 if( bud ) 72 72 { 73 bud->last_ act= time( NULL );73 bud->last_msg = time( NULL ); 74 74 from = bud->ext_jid ? : bud->bare_jid; 75 75 } -
protocols/jabber/presence.c
r3330468 r81ee561 68 68 { 69 69 bud->away_state = NULL; 70 /* Let's only set last_act if there's *no* away state,71 since it could be some auto-away thingy. */72 bud->last_act = time( NULL );73 70 } 74 71 -
protocols/nogaim.c
r3330468 r81ee561 655 655 oo = u->online; 656 656 657 if( u->away ) 658 { 659 g_free( u->away ); 660 u->away = NULL; 661 } 657 g_free( u->away ); 658 g_free( u->status_msg ); 659 u->away = u->status_msg = NULL; 662 660 663 661 if( ( flags & OPT_LOGGED_IN ) && !u->online ) … … 697 695 } 698 696 } 699 /* else waste_any_state_information_for_now(); */ 697 else 698 { 699 u->status_msg = g_strdup( message ); 700 } 700 701 701 702 /* LISPy... */ -
protocols/yahoo/libyahoo2.c
r3330468 r81ee561 1344 1344 case 301: /* End buddy */ 1345 1345 if (!strcmp(pair->value, "315") && u) { 1346 users = y_list_prepend(users, u); 1346 /* Sometimes user info comes in an odd format with no 1347 "begin buddy" but *with* an "end buddy". Don't add 1348 it twice. */ 1349 if (!y_list_find(users, u)) 1350 users = y_list_prepend(users, u); 1347 1351 u = yd->half_user = NULL; 1348 1352 } -
protocols/yahoo/yahoo.c
r3330468 r81ee561 227 227 yd->current_status = YAHOO_STATUS_CUSTOM; 228 228 } 229 else if( state)229 else if( msg ) 230 230 yd->current_status = YAHOO_STATUS_CUSTOM; 231 231 else -
root_commands.c
r3330468 r81ee561 2 2 * BitlBee -- An IRC to other IM-networks gateway * 3 3 * * 4 * Copyright 2002-20 04Wilmer van der Gaast and others *4 * Copyright 2002-2010 Wilmer van der Gaast and others * 5 5 \********************************************************************/ 6 6 … … 654 654 irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] ); 655 655 } 656 else if( g_strcasecmp( cmd[1], irc->channel ) == 0 ) 657 { 658 if( strchr( CTYPES, cmd[2][0] ) && nick_ok( cmd[2] + 1 ) ) 659 { 660 u = user_find( irc, irc->nick ); 661 662 irc_part( irc, u, irc->channel ); 663 g_free( irc->channel ); 664 irc->channel = g_strdup( cmd[2] ); 665 irc_join( irc, u, irc->channel ); 666 667 if( strcmp( cmd[0], "set_rename" ) != 0 ) 668 set_setstr( &irc->set, "control_channel", cmd[2] ); 669 } 670 } 656 671 else if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) ) 657 672 { … … 701 716 702 717 return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : SET_INVALID; 718 } 719 720 char *set_eval_control_channel( set_t *set, char *new_name ) 721 { 722 irc_t *irc = set->data; 723 724 if( strcmp( irc->channel, new_name ) != 0 ) 725 { 726 char *cmd[] = { "set_rename", irc->channel, new_name, NULL }; 727 728 cmd_rename( irc, cmd ); 729 } 730 731 return strcmp( irc->channel, new_name ) == 0 ? new_name : SET_INVALID; 703 732 } 704 733 … … 914 943 online = 1; 915 944 else 916 online = 945 online = away = 1; 917 946 918 947 if( strchr( irc->umode, 'b' ) != NULL ) … … 927 956 if( online == 1 ) 928 957 { 958 char st[256] = "Online"; 959 960 if( u->status_msg ) 961 g_snprintf( st, sizeof( st ) - 1, "Online (%s)", u->status_msg ); 962 929 963 g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user ); 930 irc_usermsg( irc, format, u->nick, s, "Online");964 irc_usermsg( irc, format, u->nick, s, st ); 931 965 } 932 966 -
tests/check_jabber_util.c
r3330468 r81ee561 14 14 15 15 budw1 = jabber_buddy_add( ic, "wilmer@gaast.net/BitlBee" ); 16 budw1->last_ act= time( NULL ) - 100;16 budw1->last_msg = time( NULL ) - 100; 17 17 budw2 = jabber_buddy_add( ic, "WILMER@gaast.net/Telepathy" ); 18 18 budw2->priority = 2; 19 budw2->last_ act= time( NULL );19 budw2->last_msg = time( NULL ); 20 20 budw3 = jabber_buddy_add( ic, "wilmer@GAAST.NET/bitlbee" ); 21 budw3->last_ act= time( NULL ) - 200;21 budw3->last_msg = time( NULL ) - 200; 22 22 budw3->priority = 4; 23 23 /* TODO(wilmer): Shouldn't this just return budw3? */ … … 60 60 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/Telepathy" ) ); 61 61 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/telepathy" ) ); 62 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 ); 62 63 /* Test activity_timeout and GET_BUDDY_BARE_OK. */ 64 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) == budw1 ); 65 budw1->last_msg -= 50; 66 fail_unless( ( bud = jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) ) != NULL ); 67 fail_unless( strcmp( bud->full_jid, "wilmer@gaast.net" ) == 0 ); 63 68 64 69 fail_if( jabber_buddy_remove( ic, "wilmer@gaast.net" ) ); 65 70 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 ); 66 71 72 fail_if( jabber_buddy_remove( ic, "wilmer@gaast.net" ) ); 73 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/bitlbee" ) ); 74 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/BitlBee" ) ); 75 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) ); 76 67 77 /* Check if remove_bare() indeed gets rid of all. */ 78 /* disable this one for now. 68 79 fail_unless( jabber_buddy_remove_bare( ic, "wilmer@gaast.net" ) ); 69 80 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) ); 81 */ 70 82 71 83 fail_if( jabber_buddy_remove( ic, "nekkid@lamejab.net/Illegal" ) ); 72 84 fail_unless( jabber_buddy_remove( ic, "nekkid@lamejab.net" ) ); 73 85 fail_if( jabber_buddy_by_jid( ic, "nekkid@lamejab.net", 0 ) ); 86 87 /* Fixing a bug in this branch that caused information to get lost when 88 removing the first full JID from a list. */ 89 jabber_buddy_add( ic, "bugtest@google.com/A" ); 90 jabber_buddy_add( ic, "bugtest@google.com/B" ); 91 jabber_buddy_add( ic, "bugtest@google.com/C" ); 92 fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/A" ) ); 93 fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/B" ) ); 94 fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/C" ) ); 74 95 } 75 96 … … 85 106 jd->buddies = g_hash_table_new( g_str_hash, g_str_equal ); 86 107 set_add( &ic->acc->set, "resource_select", "priority", NULL, ic->acc ); 108 set_add( &ic->acc->set, "activity_timeout", "120", NULL, ic->acc ); 87 109 88 110 suite_add_tcase (s, tc_core); -
user.h
r3330468 r81ee561 34 34 35 35 char *away; 36 char *status_msg; /* Non-IRC extension, but nice on IM. */ 36 37 37 38 char is_private;
Note: See TracChangeset
for help on using the changeset viewer.