Mercurial > pidgin
view gtk/plugins/crazychat/crazychat.h @ 14959:0c80979077cf
[gaim-migrate @ 17738]
* Patch from Christopher "cuberoot" to fix the repeated, CPU-intensive call loop on url_fetch_recv_cb() which was discussed on gaim-devl with the subject "Yahoo (and maybe others): gaim_util_fetch_url_request() at 100% CPU until complete with repeated EAGAIN". He writes:
"When read() returns 0, that means eof... period. Don't check errno, don't collect $200.
The loop was caused by eof condition when errno had previously been EAGAIN/EWOULDBLOCK. The CPU-bound loop stopped when errno happened to be overwritten.
I also believe trying to use some/part of an HTTP request on ETIMEDOUT to be a mistake so I removed it. Funny enough the read(2) manpage doesn't document ETIMEDOUT as a possible errno, but it is. (see tcp_timer.c and tcp_subr.c in src/sys/netinet)."
This closes Adium Trac ticket #5685.
* Added some passing-NULL-to-printf() safety which has been sitting around in this file locally for a while, waiting for a worthwhile commit to accompany.
committer: Tailor Script <tailor@pidgin.im>
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Sat, 11 Nov 2006 20:29:35 +0000 (2006-11-11) |
parents | 009db0b357b5 |
children |
line wrap: on
line source
#ifndef __CRAZYCHAT_H__ #define __CRAZYCHAT_H__ #include <glib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <gtk/gtk.h> #include "filter.h" #include "gaim.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif struct crazychat; /* --- type definitions --- */ typedef enum { INVITE = 0, ACCEPT, ACCEPTED, CONNECTED } CC_STATE; /** * Finds the CrazyChat session with the handle. * @param cc global crazychat data structure * @param handle the peer name * @return the cc_session if found, or NULL */ struct cc_session *cc_find_session(struct crazychat *cc, char *handle); /** * Adds a new session with a peer, unless a peer session already exists. * Makes a deep copy of the handle. * @param cc global crazychat data structure * @param handle the peer name * @return the new/old cc_session */ struct cc_session *cc_add_session(struct crazychat *cc, char *handle); /** * Removes a crazychat session with a peer. * @param cc global crazychat data structure * @param session the cc_session to remove */ void cc_remove_session(struct crazychat *cc, struct cc_session *session); #endif /* __CRAZYCHAT_H__ */