summaryrefslogtreecommitdiffstats
path: root/cython/lockdown.pxi
diff options
context:
space:
mode:
authorGravatar Bryan Forbes2010-04-30 13:35:57 -0500
committerGravatar Martin Szulecki2012-03-20 23:25:55 +0100
commit3877711296cbfa4a0bcafc3c5560609a1ce2d079 (patch)
tree751f1fd27ce3ee5d8dd9d748600381c0d2e5d6bd /cython/lockdown.pxi
parent74943414c8e04a92f42dcbc4fac1599c7f9deed2 (diff)
downloadlibimobiledevice-3877711296cbfa4a0bcafc3c5560609a1ce2d079.tar.gz
libimobiledevice-3877711296cbfa4a0bcafc3c5560609a1ce2d079.tar.bz2
More memory leak plugging. Some code cleanup too.
Diffstat (limited to 'cython/lockdown.pxi')
-rw-r--r--cython/lockdown.pxi29
1 files changed, 15 insertions, 14 deletions
diff --git a/cython/lockdown.pxi b/cython/lockdown.pxi
index be9d25f..a904d12 100644
--- a/cython/lockdown.pxi
+++ b/cython/lockdown.pxi
@@ -90,18 +90,17 @@ cdef class LockdownPairRecord:
90cdef class LockdownClient(PropertyListService): 90cdef class LockdownClient(PropertyListService):
91 def __cinit__(self, iDevice device not None, bytes label="", bool handshake=True, *args, **kwargs): 91 def __cinit__(self, iDevice device not None, bytes label="", bool handshake=True, *args, **kwargs):
92 cdef: 92 cdef:
93 iDevice dev = device
94 lockdownd_error_t err 93 lockdownd_error_t err
95 char* c_label = NULL 94 char* c_label = NULL
96 if label: 95 if label:
97 c_label = label 96 c_label = label
98 if handshake: 97 if handshake:
99 err = lockdownd_client_new_with_handshake(dev._c_dev, &self._c_client, c_label) 98 err = lockdownd_client_new_with_handshake(device._c_dev, &self._c_client, c_label)
100 else: 99 else:
101 err = lockdownd_client_new(dev._c_dev, &self._c_client, c_label) 100 err = lockdownd_client_new(device._c_dev, &self._c_client, c_label)
102 self.handle_error(err) 101 self.handle_error(err)
103 102
104 self.device = dev 103 self.device = device
105 104
106 def __dealloc__(self): 105 def __dealloc__(self):
107 cdef lockdownd_error_t err 106 cdef lockdownd_error_t err
@@ -117,15 +116,15 @@ cdef class LockdownClient(PropertyListService):
117 err = lockdownd_query_type(self._c_client, &c_type) 116 err = lockdownd_query_type(self._c_client, &c_type)
118 try: 117 try:
119 self.handle_error(err) 118 self.handle_error(err)
119 result = c_type
120
121 return result
120 except BaseError, e: 122 except BaseError, e:
121 raise 123 raise
122 finally: 124 finally:
123 if c_type != NULL: 125 if c_type != NULL:
124 result = c_type
125 stdlib.free(c_type) 126 stdlib.free(c_type)
126 127
127 return result
128
129 cpdef plist.Node get_value(self, bytes domain=None, bytes key=None): 128 cpdef plist.Node get_value(self, bytes domain=None, bytes key=None):
130 cdef: 129 cdef:
131 lockdownd_error_t err 130 lockdownd_error_t err
@@ -136,16 +135,18 @@ cdef class LockdownClient(PropertyListService):
136 c_domain = domain 135 c_domain = domain
137 if key is not None: 136 if key is not None:
138 c_key = key 137 c_key = key
138
139 err = lockdownd_get_value(self._c_client, c_domain, c_key, &c_node) 139 err = lockdownd_get_value(self._c_client, c_domain, c_key, &c_node)
140
140 try: 141 try:
141 self.handle_error(err) 142 self.handle_error(err)
143
144 return plist.plist_t_to_node(c_node)
142 except BaseError, e: 145 except BaseError, e:
143 if c_node != NULL: 146 if c_node != NULL:
144 plist.plist_free(c_node) 147 plist.plist_free(c_node)
145 raise 148 raise
146 149
147 return plist.plist_t_to_node(c_node)
148
149 cpdef set_value(self, bytes domain, bytes key, object value): 150 cpdef set_value(self, bytes domain, bytes key, object value):
150 cdef plist.plist_t c_node = plist.native_to_plist_t(value) 151 cdef plist.plist_t c_node = plist.native_to_plist_t(value)
151 try: 152 try:
@@ -175,11 +176,11 @@ cdef class LockdownClient(PropertyListService):
175 176
176 try: 177 try:
177 self.handle_error(lockdownd_start_service(self._c_client, c_service_name, &port)) 178 self.handle_error(lockdownd_start_service(self._c_client, c_service_name, &port))
179
180 return port
178 except BaseError, e: 181 except BaseError, e:
179 raise 182 raise
180 183
181 return port
182
183 cpdef object get_service_client(self, object service_class): 184 cpdef object get_service_client(self, object service_class):
184 cdef: 185 cdef:
185 uint16_t port = 0 186 uint16_t port = 0
@@ -202,15 +203,15 @@ cdef class LockdownClient(PropertyListService):
202 err = lockdownd_start_session(self._c_client, host_id, &c_session_id, &ssl_enabled) 203 err = lockdownd_start_session(self._c_client, host_id, &c_session_id, &ssl_enabled)
203 try: 204 try:
204 self.handle_error(err) 205 self.handle_error(err)
206
207 session_id = c_session_id
208 return (session_id, ssl_enabled)
205 except BaseError, e: 209 except BaseError, e:
206 raise 210 raise
207 finally: 211 finally:
208 if c_session_id != NULL: 212 if c_session_id != NULL:
209 session_id = c_session_id
210 stdlib.free(c_session_id) 213 stdlib.free(c_session_id)
211 214
212 return (session_id, ssl_enabled)
213
214 cpdef stop_session(self, bytes session_id): 215 cpdef stop_session(self, bytes session_id):
215 self.handle_error(lockdownd_stop_session(self._c_client, session_id)) 216 self.handle_error(lockdownd_stop_session(self._c_client, session_id))
216 217