]> git.saurik.com Git - cycript.git/blob - Network.cpp
Found the garbage collection bug from hell (classes apparently really need /something...
[cycript.git] / Network.cpp
1 #include "cycript.hpp"
2
3 /* Cycript - Remove Execution Server and Disassembler
4 * Copyright (C) 2009 Jay Freeman (saurik)
5 */
6
7 /* Modified BSD License {{{ */
8 /*
9 * Redistribution and use in source and binary
10 * forms, with or without modification, are permitted
11 * provided that the following conditions are met:
12 *
13 * 1. Redistributions of source code must retain the
14 * above copyright notice, this list of conditions
15 * and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the
17 * above copyright notice, this list of conditions
18 * and the following disclaimer in the documentation
19 * and/or other materials provided with the
20 * distribution.
21 * 3. The name of the author may not be used to endorse
22 * or promote products derived from this software
23 * without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
27 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
30 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
32 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
36 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
38 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 */
40 /* }}} */
41
42 #include <sys/types.h>
43 #include <sys/socket.h>
44
45 bool CYRecvAll_(int socket, uint8_t *data, size_t size) {
46 while (size != 0) if (size_t writ = _syscall(recv(socket, data, size, 0))) {
47 data += writ;
48 size -= writ;
49 } else
50 return false;
51 return true;
52 }
53
54 bool CYSendAll_(int socket, const uint8_t *data, size_t size) {
55 while (size != 0) if (size_t writ = _syscall(send(socket, data, size, 0))) {
56 data += writ;
57 size -= writ;
58 } else
59 return false;
60 return true;
61 }