Beispiel #1
0
 def send(self, data, flags=0, timeout=timeout_default):
     if timeout is timeout_default:
         timeout = self.timeout
     if self._sslobj:
         if flags != 0:
             raise ValueError(
                 "non-zero flags not allowed in calls to send() on %s" %
                 self.__class__)
         while True:
             try:
                 v = self._sslobj.write(data)
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     sys.exc_clear()
                     try:
                         wait_read(self.fileno(), timeout=timeout, event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise
                 elif x.args[0] == SSL_ERROR_WANT_WRITE:
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     sys.exc_clear()
                     try:
                         wait_write(self.fileno(), timeout=timeout, event=self._write_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise
Beispiel #2
0
 def write(self, data):
     """Write DATA to the underlying SSL channel.  Returns
     number of bytes of DATA actually transmitted."""
     while True:
         try:
             return self._sslobj.write(data)
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_read(self.fileno(), timeout=self.timeout, event=self._read_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return 0
                     raise
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_write(self.fileno(), timeout=self.timeout, event=self._write_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return 0
                     raise
Beispiel #3
0
 def read(self, len=1024):
     """Read up to LEN bytes and return them.
     Return zero-length string on EOF."""
     while True:
         try:
             return self._sslobj.read(len)
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
                 return ''
             elif ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_read(self.fileno(),
                               timeout=self.timeout,
                               event=self._read_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return ''
                     raise
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_write(self.fileno(),
                                timeout=self.timeout,
                                event=self._write_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return ''
                     raise
Beispiel #4
0
 def recv_into(self, buffer, nbytes=None, flags=0):
     if buffer and (nbytes is None):
         nbytes = len(buffer)
     elif nbytes is None:
         nbytes = 1024
     if self._sslobj:
         if flags != 0:
             raise ValueError(
               "non-zero flags not allowed in calls to recv_into() on %s" %
               self.__class__)
         while True:
             try:
                 tmp_buffer = self.read(nbytes)
                 v = len(tmp_buffer)
                 buffer[:v] = tmp_buffer
                 return v
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     sys.exc_clear()
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     try:
                         wait_read(self.fileno(), timeout=self.timeout, event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise
                     continue
                 else:
                     raise
Beispiel #5
0
 def recv_into(self, buffer, nbytes=None, flags=0):
     if buffer and (nbytes is None):
         nbytes = len(buffer)
     elif nbytes is None:
         nbytes = 1024
     if self._sslobj:
         if flags != 0:
             raise ValueError(
                 "non-zero flags not allowed in calls to recv_into() on %s"
                 % self.__class__)
         while True:
             try:
                 tmp_buffer = self.read(nbytes)
                 v = len(tmp_buffer)
                 buffer[:v] = tmp_buffer
                 return v
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     sys.exc_clear()
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     try:
                         wait_read(self.fileno(),
                                   timeout=self.timeout,
                                   event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise
                     continue
                 else:
                     raise
Beispiel #6
0
 def recv(self, buflen=1024, flags=0):
     if self._sslobj:
         if flags != 0:
             raise ValueError(
                 "non-zero flags not allowed in calls to recv() on %s" %
                 self.__class__)
         while True:
             try:
                 return self.read(buflen)
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     sys.exc_clear()
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     try:
                         wait_read(self.fileno(),
                                   timeout=self.timeout,
                                   event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return ''
                         raise
                     continue
                 else:
                     raise
Beispiel #7
0
 def read(self, len=1024):
     """Read up to LEN bytes and return them.
     Return zero-length string on EOF."""
     while True:
         try:
             return self._sslobj.read(len)
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
                 return ''
             elif ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_read(self.fileno(), timeout=self.timeout, event=self._read_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return ''
                     raise
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_write(self.fileno(), timeout=self.timeout, event=self._write_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return ''
                     raise
Beispiel #8
0
 def write(self, data):
     """Write DATA to the underlying SSL channel.  Returns
     number of bytes of DATA actually transmitted."""
     while True:
         try:
             return self._sslobj.write(data)
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_read(self.fileno(),
                               timeout=self.timeout,
                               event=self._read_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return 0
                     raise
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 try:
                     wait_write(self.fileno(),
                                timeout=self.timeout,
                                event=self._write_event)
                 except socket_error, ex:
                     if ex[0] == EBADF:
                         return 0
                     raise
Beispiel #9
0
 def do_handshake(self):
     while True:
         try:
             self._sock.do_handshake()
             break
         except SSL.WantReadError:
             sys.exc_clear()
             wait_read(self.fileno())
         except SSL.WantWriteError:
             sys.exc_clear()
             wait_write(self.fileno())
         except SSL.SysCallError, ex:
             raise sslerror(SysCallError_code_mapping.get(ex.args[0], ex.args[0]), ex.args[1])
         except SSL.Error, ex:
             raise sslerror(str(ex))
Beispiel #10
0
 def do_handshake(self):
     while True:
         try:
             self._sock.do_handshake()
             break
         except SSL.WantReadError:
             sys.exc_clear()
             wait_read(self.fileno())
         except SSL.WantWriteError:
             sys.exc_clear()
             wait_write(self.fileno())
         except SSL.SysCallError, ex:
             raise sslerror(
                 SysCallError_code_mapping.get(ex.args[0], ex.args[0]),
                 ex.args[1])
         except SSL.Error, ex:
             raise sslerror(str(ex))
Beispiel #11
0
 def do_handshake(self):
     """Perform a TLS/SSL handshake."""
     while True:
         try:
             return self._sslobj.do_handshake()
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=self.timeout, event=self._read_event)
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 wait_write(self.fileno(), timeout=self.timeout, event=self._write_event)
             else:
                 raise
Beispiel #12
0
 def send(self, data, flags=0, timeout=timeout_default):
     if timeout is timeout_default:
         timeout = self.timeout
     while True:
         try:
             return self._sock.send(data, flags)
         except SSL.WantWriteError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_write(self.fileno(), timeout=timeout)
         except SSL.WantReadError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=timeout)
Beispiel #13
0
 def send(self, data, flags=0, timeout=timeout_default):
     if timeout is timeout_default:
         timeout = self.timeout
     while True:
         try:
             return self._sock.send(data, flags)
         except SSL.WantWriteError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_write(self.fileno(), timeout=timeout)
         except SSL.WantReadError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=timeout)
Beispiel #14
0
 def recv(self, buflen):
     pending = self._sock.pending()
     if pending:
         return self._sock.recv(min(pending, buflen))
     while True:
         try:
             return self._sock.recv(buflen)
         except SSL.WantReadError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=self.timeout)
         except SSL.WantWriteError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=self.timeout)
Beispiel #15
0
 def recv(self, buflen):
     pending = self._sock.pending()
     if pending:
         return self._sock.recv(min(pending, buflen))
     while True:
         try:
             return self._sock.recv(buflen)
         except SSL.WantReadError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=self.timeout)
         except SSL.WantWriteError, ex:
             if self.timeout == 0.0:
                 raise timeout(str(ex))
             else:
                 sys.exc_clear()
                 wait_read(self.fileno(), timeout=self.timeout)
Beispiel #16
0
 def do_handshake(self):
     """Perform a TLS/SSL handshake."""
     while True:
         try:
             return self._sslobj.do_handshake()
         except SSLError, ex:
             if ex.args[0] == SSL_ERROR_WANT_READ:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 wait_read(self.fileno(),
                           timeout=self.timeout,
                           event=self._read_event)
             elif ex.args[0] == SSL_ERROR_WANT_WRITE:
                 if self.timeout == 0.0:
                     raise
                 sys.exc_clear()
                 wait_write(self.fileno(),
                            timeout=self.timeout,
                            event=self._write_event)
             else:
                 raise
Beispiel #17
0
 def recv(self, buflen=1024, flags=0):
     if self._sslobj:
         if flags != 0:
             raise ValueError(
                 "non-zero flags not allowed in calls to recv() on %s" %
                 self.__class__)
         while True:
             try:
                 return self.read(buflen)
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     sys.exc_clear()
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     try:
                         wait_read(self.fileno(), timeout=self.timeout, event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return ''
                         raise
                     continue
                 else:
                     raise
Beispiel #18
0
 def send(self, data, flags=0, timeout=timeout_default):
     if timeout is timeout_default:
         timeout = self.timeout
     if self._sslobj:
         if flags != 0:
             raise ValueError(
                 "non-zero flags not allowed in calls to send() on %s" %
                 self.__class__)
         while True:
             try:
                 v = self._sslobj.write(data)
             except SSLError, x:
                 if x.args[0] == SSL_ERROR_WANT_READ:
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     sys.exc_clear()
                     try:
                         wait_read(self.fileno(),
                                   timeout=timeout,
                                   event=self._read_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise
                 elif x.args[0] == SSL_ERROR_WANT_WRITE:
                     if self.timeout == 0.0:
                         raise timeout(str(x))
                     sys.exc_clear()
                     try:
                         wait_write(self.fileno(),
                                    timeout=timeout,
                                    event=self._write_event)
                     except socket_error, ex:
                         if ex[0] == EBADF:
                             return 0
                         raise