service: Silence timeout errors
diff --git a/src/idevice.c b/src/idevice.c
index 5d5c950..745d784 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -390,7 +390,6 @@
 				debug_info("ERROR: received partial data %d/%d (%s)", received, len, strerror(-conn_error));
 				return IDEVICE_E_NOT_ENOUGH_DATA;
 			case -ETIMEDOUT:
-				debug_info("ERROR: received timeout (%s)", strerror(-conn_error));
 				return IDEVICE_E_TIMEOUT;
 			default:
 				return IDEVICE_E_UNKNOWN_ERROR;
diff --git a/src/service.c b/src/service.c
index 661c4f6..091b599 100644
--- a/src/service.c
+++ b/src/service.c
@@ -135,19 +135,19 @@
 LIBIMOBILEDEVICE_API service_error_t service_send(service_client_t client, const char* data, uint32_t size, uint32_t *sent)
 {
 	service_error_t res = SERVICE_E_UNKNOWN_ERROR;
-	int bytes = 0;
+	uint32_t bytes = 0;
 
 	if (!client || (client && !client->connection) || !data || (size == 0)) {
 		return SERVICE_E_INVALID_ARG;
 	}
 
 	debug_info("sending %d bytes", size);
-	res = idevice_to_service_error(idevice_connection_send(client->connection, data, size, (uint32_t*)&bytes));
-	if (bytes <= 0) {
+	res = idevice_to_service_error(idevice_connection_send(client->connection, data, size, &bytes));
+	if (res != SERVICE_E_SUCCESS) {
 		debug_info("ERROR: sending to device failed.");
 	}
 	if (sent) {
-		*sent = (uint32_t)bytes;
+		*sent = bytes;
 	}
 
 	return res;
@@ -156,19 +156,19 @@
 LIBIMOBILEDEVICE_API service_error_t service_receive_with_timeout(service_client_t client, char* data, uint32_t size, uint32_t *received, unsigned int timeout)
 {
 	service_error_t res = SERVICE_E_UNKNOWN_ERROR;
-	int bytes = 0;
+	uint32_t bytes = 0;
 
 	if (!client || (client && !client->connection) || !data || (size == 0)) {
 		return SERVICE_E_INVALID_ARG;
 	}
 
-	res = idevice_to_service_error(idevice_connection_receive_timeout(client->connection, data, size, (uint32_t*)&bytes, timeout));
-	if (res != SERVICE_E_SUCCESS) {
+	res = idevice_to_service_error(idevice_connection_receive_timeout(client->connection, data, size, &bytes, timeout));
+	if (res != SERVICE_E_SUCCESS && res != SERVICE_E_TIMEOUT) {
 		debug_info("could not read data");
 		return res;
 	}
 	if (received) {
-		*received = (uint32_t)bytes;
+		*received = bytes;
 	}
 
 	return res;