Variant f_stream_socket_recvfrom(CObjRef socket, int length, int flags /* = 0 */, CStrRef address /* = null_string */) { String host; int port; parse_host(address, host, port); Variant ret; Variant retval = f_socket_recvfrom(socket, ref(ret), length, flags, host, port); if (!same(retval, false) && retval.toInt64() >= 0) { return ret.toString(); // watch out, "ret", not "retval" } return false; }
Variant f_stream_socket_recvfrom(const Resource& socket, int length, int flags /* = 0 */, VRefParam address /* = null_string */) { Variant ret, host, port; Variant retval = f_socket_recvfrom(socket, ref(ret), length, flags, ref(host), ref(port)); if (!same(retval, false) && retval.toInt64() >= 0) { Socket *sock = socket.getTyped<Socket>(); if (sock->getType() == AF_INET6) { address = "[" + host.toString() + "]:" + port.toInt32(); } else { address = host.toString() + ":" + port.toInt32(); } return ret.toString(); // watch out, "ret", not "retval" } return false; }