I'm not going to summarise your changes in detail, basically this is inline images and pushing the useralerts.
SPECIFIC COMMITS: 7a08229da7d564c2832c867e126830ec7c7b36c9 - doing it the right way, good - appending the script at the end is okay but it must be in the right charset. - it might be easier to merge this into the tag replacer callback, have it written just before </html> - ParsedTag.getAttributesAsMap : should be more robust - TagReplacerCallback : shouldn't this be an interface? - TagReplacerCallback.processTag : use the relative URI resolution code from GenericReadFilterCallback 7d390d53e691237f2c2aa5e1fc45ba6b4f6eb243 - logwriteback : potential for abuse by e.g. malicious websites? Can we authenticate it? - can't we figure out the actual font size and render once rather than rendering into a buffer and then shrinking or expanding it? 614cd1ee326f02467bf37d9bd216fb334f1d1818 - ImageElement.dispose() : is it safe to run() here, w.r.t. infinite recursion etc? should we schedule a job instead? 4313301cd6885833f361e65aba7036d79b0e5c47 - ImageCreatorToadlet last modified handling: huh?! there is only one image?! - where is disableContentEscaping called exactly? check that it is safe to do so e.g. we escape urls, content etc. - in fact, we should use addChild("%", <content>) ... why is a separate mechanism needed? 6e4a31b83cc3596ac2c27a684a66c52792751475 - application/xml+xhtml ??? any other html types? TESTING RESULTS: Pushing cancelled message while waiting for the node to start up. I didn't think there was any pushing on this page? Deadlock: INFO | jvm 1 | 2009/08/01 16:32:32 | Java stack information for the threads listed above: INFO | jvm 1 | 2009/08/01 16:32:32 | =================================================== INFO | jvm 1 | 2009/08/01 16:32:32 | "HTTP socket handler at 2032530416(143)": INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.updateableelements.PushDataManager.keepAliveReceived(PushDataManager.java:175) INFO | jvm 1 | 2009/08/01 16:32:32 | - waiting to lock <0x00007f2464a7d9e0> (a freenet.clients.http.updateableelements.PushDataManager) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.PushKeepaliveToadlet.handleGet(PushKeepaliveToadlet.java:31) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.ToadletContextImpl.handle(ToadletContextImpl.java:380) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.SimpleToadletServer$SocketHandler.run(SimpleToadletServer.java:732) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.support.PooledExecutor$MyThread.run(PooledExecutor.java:224) INFO | jvm 1 | 2009/08/01 16:32:32 | "HTTP socket handler at 826873157(27)": INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.useralerts.UserAlertManager.getAlerts(UserAlertManager.java:172) INFO | jvm 1 | 2009/08/01 16:32:32 | - waiting to lock <0x00007f2464776a78> (a java.util.TreeSet) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.updateableelements.ShortAlertElement.updateState(ShortAlertElement.java:63) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.updateableelements.PushDataManager.getRenderedElement(PushDataManager.java:120) INFO | jvm 1 | 2009/08/01 16:32:32 | - locked <0x00007f2464a7d9e0> (a freenet.clients.http.updateableelements.PushDataManager) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.PushDataToadlet.handleGet(PushDataToadlet.java:38) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.ToadletContextImpl.handle(ToadletContextImpl.java:380) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.SimpleToadletServer$SocketHandler.run(SimpleToadletServer.java:732) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.support.PooledExecutor$MyThread.run(PooledExecutor.java:224) INFO | jvm 1 | 2009/08/01 16:32:32 | "WrapperListener_start_runner": INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.updateableelements.PushDataManager.updateElement(PushDataManager.java:53) INFO | jvm 1 | 2009/08/01 16:32:32 | - waiting to lock <0x00007f2464a7d9e0> (a freenet.clients.http.updateableelements.PushDataManager) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.clients.http.updateableelements.ShortAlertElement$1.alertsChanged(ShortAlertElement.java:32) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.useralerts.UserAlertManager.notifyListeners(UserAlertManager.java:93) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.useralerts.UserAlertManager.register(UserAlertManager.java:54) INFO | jvm 1 | 2009/08/01 16:32:32 | - locked <0x00007f2464776a78> (a java.util.TreeSet) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.DarknetPeerNode.handleFproxyN2NTM(DarknetPeerNode.java:1448) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.Node.handleFproxyNodeToNodeTextMessageSimpleFieldSet(Node.java:4856) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.Node.handleNodeToNodeTextMessageSimpleFieldSet(Node.java:4847) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.DarknetPeerNode.parseExtraPeerData(DarknetPeerNode.java:473) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.DarknetPeerNode.readExtraPeerDataFile(DarknetPeerNode.java:452) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.DarknetPeerNode.readExtraPeerData(DarknetPeerNode.java:378) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.PeerManager.readExtraPeerData(PeerManager.java:1282) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.Node.start(Node.java:3508) INFO | jvm 1 | 2009/08/01 16:32:32 | at freenet.node.NodeStarter.start(NodeStarter.java:159) INFO | jvm 1 | 2009/08/01 16:32:32 | at org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:2979) INFO | jvm 1 | 2009/08/01 16:32:32 | INFO | jvm 1 | 2009/08/01 16:32:32 | Found 1 deadlock. Also, NPEs in wrapper.log: INFO | jvm 1 | 2009/08/01 16:35:55 | java.lang.NullPointerException INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.ClientGet.onFailure(ClientGet.java:608) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.ClientGet.start(ClientGet.java:337) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.FCPConnectionHandler.startClientGet(FCPConnectionHandler.java:342) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.ClientGetMessage.run(ClientGetMessage.java:228) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.FCPConnectionInputHandler.realRun(FCPConnectionInputHandler.java:140) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.node.fcp.FCPConnectionInputHandler.run(FCPConnectionInputHandler.java:49) INFO | jvm 1 | 2009/08/01 16:35:55 | at freenet.support.PooledExecutor$MyThread.run(PooledExecutor.java:224) INFO | jvm 1 | 2009/08/01 16:36:05 | java.lang.NullPointerException INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.ClientGet.onFailure(ClientGet.java:608) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.ClientGet.start(ClientGet.java:337) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.FCPConnectionHandler.startClientGet(FCPConnectionHandler.java:342) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.ClientGetMessage.run(ClientGetMessage.java:228) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.FCPConnectionInputHandler.realRun(FCPConnectionInputHandler.java:140) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.node.fcp.FCPConnectionInputHandler.run(FCPConnectionInputHandler.java:49) INFO | jvm 1 | 2009/08/01 16:36:05 | at freenet.support.PooledExecutor$MyThread.run(PooledExecutor.java:224) Also, after restarting, I get a pushing cancelled message while on the progress bar page prior to loading the activelink index. I get FetchException's for new URIs logged to wrapper.log, and the load doesn't make any progress in 2 minutes plus even with shift+reload. The deadlock is not visible. Please let me know when these various issues are fixed! Thanks. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 835 bytes Desc: This is a digitally signed message part. URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20090801/583aaf7f/attachment.pgp>