private void handleMetaUpdate() {
        logger.debug("File meta update request");
        try {
            // Get the filemeta size
            byte[] buffer = new byte[8];
            socket.getInputStream().read(buffer);
            // Can metafiles be larger than INT.MAXVALUE?
            long filemetasize = Math.min(Utilities.bytesToLong(buffer), (long) Integer.MAX_VALUE);

            buffer = new byte[(int) filemetasize];
            socket.getInputStream().read(buffer);

            JSONObject obj = (JSONObject) JSONValue.parse(new String(buffer));

            // Create the filemeta object!
            FileMeta meta;
            try {
                meta = FileMeta.fromJSON(obj);
            } catch (ParseException ex) {
                logger.fatal("Incorrect metadata send by client. Aborting..");
                return;
            }

            // Update first in own library
            this.parent.getServermanager().getArchive().updateContentFile(meta);

            // Cascade update to other servers if came from client
            if (!this.connectedToServer) {
                // Message from client, cascade to other servers
                ClientSocket srvsock = null;
                Map<InetAddress, ServerNode> nodes = new NodeSpotter().findNodes();
                for (InetAddress addr : nodes.keySet()) {
                    try {
                        srvsock = new ClientSocket(true);
                        srvsock.openConnection(addr);
                        srvsock.sendMetaUpdate(meta);
                    } catch (IOException ex) {
                        logger.error("Failed to send metadelete to " + nodes.get(addr).getId());
                    } finally {
                        try {
                            if (srvsock != null)
                                srvsock.closeConnection();
                        } catch (IOException ex) {
                        }
                    }
                }
            }
        } catch (IOException ex) {
            logger.fatal("Error in updating metafile!", ex);
            // For a hard close (as the stream is now invalid!
        }
    }