Mercurial > pidgin
comparison libfaim/aim_rxqueue.c @ 889:e1da6a6ec42b
[gaim-migrate @ 899]
Oscar works again
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 12 Sep 2000 20:21:36 +0000 |
parents | 595ac7759563 |
children | efcacae6acdb |
comparison
equal
deleted
inserted
replaced
888:38ffd1faa31a | 889:e1da6a6ec42b |
---|---|
5 * (incoming packet) queue. The actual packet handlers are in | 5 * (incoming packet) queue. The actual packet handlers are in |
6 * aim_rxhandlers.c. | 6 * aim_rxhandlers.c. |
7 */ | 7 */ |
8 | 8 |
9 #include <faim/aim.h> | 9 #include <faim/aim.h> |
10 | |
11 #ifndef _WIN32 | |
10 #include <sys/socket.h> | 12 #include <sys/socket.h> |
13 #endif | |
11 | 14 |
12 /* | 15 /* |
13 * Since not all implementations support MSG_WAITALL, define | 16 * Since not all implementations support MSG_WAITALL, define |
14 * an alternate guarenteed read function... | 17 * an alternate guarenteed read function... |
15 * | 18 * |
16 * We keep recv() for systems that can do it because it means | 19 * We keep recv() for systems that can do it because it means |
17 * a single system call for the entire packet, where read may | 20 * a single system call for the entire packet, where read may |
18 * take more for a badly fragmented packet. | 21 * take more for a badly fragmented packet. |
19 * | 22 * |
20 */ | 23 */ |
21 static int aim_recv(int fd, void *buf, size_t count) | 24 faim_internal int aim_recv(int fd, void *buf, size_t count) |
22 { | 25 { |
23 #ifdef MSG_WAITALL | 26 #ifdef MSG_WAITALL |
24 return recv(fd, buf, count, MSG_WAITALL); | 27 return recv(fd, buf, count, MSG_WAITALL); |
25 #else | 28 #else |
26 int left, ret, cur = 0; | 29 int left, ret, cur = 0; |
27 | 30 |
28 left = count; | 31 left = count; |
29 | 32 |
30 while (left) { | 33 while (left) { |
31 ret = read(fd, ((unsigned char *)buf)+cur, left); | 34 ret = recv(fd, ((unsigned char *)buf)+cur, left, 0); |
32 if (ret == -1) | 35 if (ret == -1) |
33 return -1; | 36 return -1; |
34 if (ret == 0) | 37 if (ret == 0) |
35 return cur; | 38 return cur; |
36 | 39 |