def stream_socket_server(interp, local_socket, w_ref_errno=None, w_ref_errstr=None, flags=12, w_ctx=None): """ Create an Internet or Unix domain server socket ('STREAM_SERVER_BIND', 4), ('STREAM_SERVER_LISTEN', 8), """ r = urlsplit(local_socket) space = interp.space bind = flags & 4 != 0 listen = flags & 8 != 0 w_res = W_SocketResource(space, r.host, r.port, r.scheme) if bind: w_res.bind() if listen: w_res.listen() return w_res
def fsockopen(interp, hostname, port=-1, w_ref_errno=None, w_ref_errstr=None, timeout=-1): """ Open Internet or Unix domain socket connection""" space = interp.space r = urlsplit(hostname) host = r.host if not host: host = r.path if port == -1: port = r.port type = 'tcp' if r.scheme: type = r.scheme cstring = "%s://%s:%d" % (type, host, port) if type not in ['tcp', 'udp']: s = 'Unable to find the socket transport "%s" - did you forget to enable it when you configured PHP?' out = s % type if w_ref_errstr is not None: w_ref_errstr.store(space.wrap(out)) space.ec.warn("fsockopen(): unable to connect to %s (%s)" % (cstring, out)) return space.w_False w_res = W_SocketResource(space, host, port, type) if timeout == -1: w_timeout = interp.config.get_ini_w('default_socket_timeout') timeout = interp.space.float_w(w_timeout) w_res.open() w_res.settimeout(timeout) if w_ref_errno is not None: w_ref_errno.store(space.wrap(w_res.errno)) if w_ref_errstr is not None: w_ref_errstr.store(space.wrap(w_res.errstr)) if w_res.errno != 0: space.ec.warn("fsockopen(): unable to connect to %s (%s)" % (cstring, w_res.errstr)) return space.w_False return w_res
def test_split_valid(self): pieces = ['scheme', 'host', 'user', 'password', 'path', 'query'] for iu, expected in VALID_URLS: r = urlsplit(iu) for key in pieces: assert getattr(r, key) == expected.get(key, None)