Mercurial > pidgin
changeset 27893:3157a8ea0012
Just add a note that this code sucks
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 13 Aug 2009 01:47:54 +0000 |
parents | 4f7eded28919 |
children | 9ff5bf0dc670 |
files | libpurple/protocols/msn/directconn.c |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/directconn.c Thu Aug 13 01:31:15 2009 +0000 +++ b/libpurple/protocols/msn/directconn.c Thu Aug 13 01:47:54 2009 +0000 @@ -259,6 +259,19 @@ directconn = data; /* Let's read the length of the data. */ +#error This code is broken. See the note below. + /* + * TODO: This has problems! First of all, sizeof(body_len) will be + * different on 32bit systems and on 64bit systems (4 bytes + * vs. 8 bytes). + * Secondly, we're reading from a TCP stream. There is no + * guarantee that we have received the number of bytes we're + * trying to read. We need to read into a buffer. If read + * returns <0 then we need to check errno. If errno is EAGAIN + * then don't destroy anything, just exit and wait for more + * data. See every other function in libpurple that does this + * correctly for an example. + */ len = read(directconn->fd, &body_len, sizeof(body_len)); if (len <= 0)