Mercurial > pidgin
comparison src/server.c @ 1153:3063e6743913
[gaim-migrate @ 1163]
handle the keepalives better. have ICQ force keepalives for connections, it's a bad hack but it's probably necessary for a UDP protocol.
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 28 Nov 2000 04:12:06 +0000 |
| parents | cd96ca1aed02 |
| children | 4fd0d35826fe |
comparison
equal
deleted
inserted
replaced
| 1152:201ec77f3a60 | 1153:3063e6743913 |
|---|---|
| 65 bcs = gc->buddy_chats; | 65 bcs = gc->buddy_chats; |
| 66 } | 66 } |
| 67 | 67 |
| 68 if (gc->idle_timer > 0) | 68 if (gc->idle_timer > 0) |
| 69 gtk_timeout_remove(gc->idle_timer); | 69 gtk_timeout_remove(gc->idle_timer); |
| 70 gc->idle_timer = -1; | 70 gc->idle_timer = 0; |
| 71 | 71 |
| 72 if (gc->keepalive > 0) | 72 if (gc->keepalive > 0) |
| 73 gtk_timeout_remove(gc->keepalive); | 73 gtk_timeout_remove(gc->keepalive); |
| 74 gc->keepalive = -1; | 74 gc->keepalive = 0; |
| 75 | 75 |
| 76 if (gc->prpl && gc->prpl->close) | 76 if (gc->prpl && gc->prpl->close) |
| 77 (*gc->prpl->close)(gc); | 77 (*gc->prpl->close)(gc); |
| 78 | 78 |
| 79 account_offline(gc); | 79 account_offline(gc); |
| 109 serv_touch_idle(gc); | 109 serv_touch_idle(gc); |
| 110 | 110 |
| 111 time(&gc->login_time); | 111 time(&gc->login_time); |
| 112 | 112 |
| 113 serv_add_buddy(gc, gc->username); | 113 serv_add_buddy(gc, gc->username); |
| 114 | |
| 115 update_keepalive(gc, gc->options & OPT_USR_KEEPALV); | |
| 114 } | 116 } |
| 115 | 117 |
| 116 | 118 |
| 117 | 119 |
| 118 void serv_send_im(struct gaim_connection *gc, char *name, char *message, int away) | 120 void serv_send_im(struct gaim_connection *gc, char *name, char *message, int away) |
| 702 chat_write(b, who, w, message); | 704 chat_write(b, who, w, message); |
| 703 } | 705 } |
| 704 | 706 |
| 705 void send_keepalive(gpointer d) { | 707 void send_keepalive(gpointer d) { |
| 706 struct gaim_connection *gc = (struct gaim_connection *)d; | 708 struct gaim_connection *gc = (struct gaim_connection *)d; |
| 707 debug_print("sending oscar NOP\n"); | |
| 708 if (gc->prpl && gc->prpl->keepalive) | 709 if (gc->prpl && gc->prpl->keepalive) |
| 709 (*gc->prpl->keepalive)(gc); | 710 (*gc->prpl->keepalive)(gc); |
| 710 } | 711 } |
| 711 | 712 |
| 712 void update_keepalive(struct gaim_connection *gc, gboolean on) { | 713 void update_keepalive(struct gaim_connection *gc, gboolean on) { |
| 713 if (on && gc->keepalive < 0 && blist) { | 714 if (on && !gc->keepalive && blist) { |
| 714 debug_print("allowing NOP\n"); | 715 debug_print("allowing NOP\n"); |
| 715 gc->keepalive = gtk_timeout_add(60000, (GtkFunction)send_keepalive, gc); | 716 gc->keepalive = gtk_timeout_add(60000, (GtkFunction)send_keepalive, gc); |
| 716 } else if (!on && gc->keepalive > -1) { | 717 } else if (!on && gc->keepalive > 0) { |
| 717 debug_print("removing NOP\n"); | 718 debug_print("removing NOP\n"); |
| 718 gtk_timeout_remove(gc->keepalive); | 719 gtk_timeout_remove(gc->keepalive); |
| 719 gc->keepalive = -1; | 720 gc->keepalive = 0; |
| 720 } | 721 } |
| 721 } | 722 } |
