Fixed method visibility in mobilebackup2.pxi API
diff --git a/cython/mobilebackup2.pxi b/cython/mobilebackup2.pxi
index 4eccae6..4b47e5b 100644
--- a/cython/mobilebackup2.pxi
+++ b/cython/mobilebackup2.pxi
@@ -58,10 +58,10 @@
     cdef inline BaseError _error(self, int16_t ret):
         return MobileBackup2Error(ret)
 
-    cdef send_message(self, bytes message, plist.Node options):
+    cpdef send_message(self, bytes message, plist.Node options):
         self.handle_error(mobilebackup2_send_message(self._c_client, message, options._c_node))
 
-    cdef tuple receive_message(self):
+    cpdef tuple receive_message(self):
         cdef:
             char* dlmessage = NULL
             plist.plist_t c_node = NULL
@@ -77,29 +77,34 @@
                 free(dlmessage)
             raise
 
-    cdef int send_raw(self, bytes data, int length):
+    cpdef int send_raw(self, bytes data, int length):
         cdef:
-            uint32_t bytes = 0
+            uint32_t bytes_recvd = 0
             mobilebackup2_error_t err
-        err = mobilebackup2_send_raw(self._c_client, data, length, &bytes)
+        err = mobilebackup2_send_raw(self._c_client, data, length, &bytes_recvd)
         try:
             self.handle_error(err)
-            return <bint>bytes
+            return <bint>bytes_recvd
         except BaseError, e:
             raise
 
-    cdef int receive_raw(self, bytes data, int length):
+    cpdef int receive_raw(self, bytearray data, int length):
         cdef:
-            uint32_t bytes = 0
+            uint32_t bytes_recvd = 0
             mobilebackup2_error_t err
-        err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes)
+        err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes_recvd)
+
+        # Throwing an exception when we test if theres more data to read is excessive
+        if err == -1 and bytes_recvd == 0:
+            return 0
+
         try:
             self.handle_error(err)
-            return <bint>bytes
+            return <bint>bytes_recvd
         except BaseError, e:
             raise
 
-    cdef float version_exchange(self, double[::1] local_versions):
+    cpdef float version_exchange(self, double[::1] local_versions):
         cdef:
             double[::1] temp = None
             double remote_version = 0.0
@@ -111,8 +116,8 @@
         except BaseError, e:
             raise
 
-    cdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options):
+    cpdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options):
         self.handle_error(mobilebackup2_send_request(self._c_client, request, target_identifier, source_identifier, options._c_node))
 
-    cdef send_status_response(self, int status_code, bytes status1, plist.Node status2):
+    cpdef send_status_response(self, int status_code, bytes status1, plist.Node status2):
         self.handle_error(mobilebackup2_send_status_response(self._c_client, status_code, status1, status2._c_node))