else {
/* else {
    public void run( ) {        while (running) {            try {                packet = new DatagramPacket(data, MTU);                socket.receive(packet);                if(running) {                    // need to find the correct callback object.                    ByteArrayInputStream stream = new ByteArrayInputStream(packet.getData());                    SLPInputStream sis = new SLPInputStream(stream);                    //System.out.println("Getting XID");                    int xid;                    if( (sis.skip(XID_POSITION)) == XID_POSITION) {                        xid = sis.readShort();                        //System.out.println("XID = " + xid);                        callback = (SlpUdpCallback)callbackMap.get(Integer.toString(xid));                        if(callback != null) {                            if(!callback.udpReceived(packet)) running = false;                            callback = null;                        }                        else {                            System.out.println("SLP: No callback for XID = " + xid);                        }                    }                }            } catch (InterruptedIOException e) {                e.printStackTrace();                // should never get a timeout.                // we try to continue.            }            catch (Exception e) {                // If we get here, something strange has happened.                // Notify callback objects, and kill thread.                synchronized(callbackMap) {                    Iterator iter = callbackMap.values().iterator();                    while(iter.hasNext()) {                        ((SlpUdpCallback)iter.next()).udpError(e);                    }                    callbackMap.clear();                }                callbackMap = null;                running = false;            }        }                // try to close socket.        try {            socket.close();        }catch(Exception e) { } // ignore error    }