view src/protocols/yahoo/yahoo_picture.h @ 9798:255596f41014

[gaim-migrate @ 10666] This is patch number 1002252 by Joe Shaw. He writes: If you start a file transfer with a yahoo user and then unplug the network, wait a couple minutes, and plug it back in, a minute or so later the gaim UI will completely freeze, eventually consume all your memory and crash. This is because ft.c:transfer_cb() does not correctly handle the case in which both READ and WRITE conditions are coming in, and because the yahoo_xfer_read() and yahoo_xfer_write() functions are incorrectly returning 0 on errors instead of -1. Since transfer_cb() is getting both conditions, it only checks READ first and gets back 0 bytes (because the connection has been hung up). 0 is not explicitly handled, so nothing is done and we get ourselves into an infinite loop. committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Sat, 21 Aug 2004 02:02:25 +0000
parents 085190b9dd64
children 6fc412e59214
line wrap: on
line source

/*
 * gaim
 *
 * Gaim is the legal property of its developers, whose names are too numerous
 * to list here.  Please refer to the COPYRIGHT file distributed with this
 * source distribution.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#ifndef _YAHOO_PICTURE_H_
#define _YAHOO_PICTURE_H_

void yahoo_send_picture_request(GaimConnection *gc, const char *who);
void yahoo_send_picture_info(GaimConnection *gc, const char *who);
void yahoo_send_picture_checksum(GaimConnection *gc);
void yahoo_send_picture_update(GaimConnection *gc, int type);
void yahoo_send_picture_update_to_user(GaimConnection *gc, const char *who, int type);

void yahoo_process_picture(GaimConnection *gc, struct yahoo_packet *pkt);
void yahoo_process_picture_update(GaimConnection *gc, struct yahoo_packet *pkt);
void yahoo_process_picture_checksum(GaimConnection *gc, struct yahoo_packet *pkt);
void yahoo_process_picture_upload(GaimConnection *gc, struct yahoo_packet *pkt);

void yahoo_set_buddy_icon(GaimConnection *gc, const char *iconfile);
void yahoo_buddy_icon_upload(GaimConnection *gc, struct yahoo_buddy_icon_upload_data *d);
void yahoo_buddy_icon_upload_data_free(struct yahoo_buddy_icon_upload_data *d);

#endif /* _YAHOO_PICTURE_H_ */