X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/f8999311a75bd754f11420c017f5bf93205ef2f9..c7bdebaaf134729356852918b387071c92f85e72:/doc/bugs/Error_with_external_plugins.mdwn?ds=sidebyside diff --git a/doc/bugs/Error_with_external_plugins.mdwn b/doc/bugs/Error_with_external_plugins.mdwn index f2873692e..065439de8 100644 --- a/doc/bugs/Error_with_external_plugins.mdwn +++ b/doc/bugs/Error_with_external_plugins.mdwn @@ -36,11 +36,11 @@ I hope someone will understand the problem better than I do, because I have no i Regards, -- [[Louis|spalax]] -> I wrote a plugin to monitor what is exchanged between the plugin and Ikiwiki. I ran this with [this version](https://github.com/paternal/ikiwiki-rpcbug/tree/b4ba34a8edd1b97989965af69eddac050bc0a8ba) of my minimal bug example. +> I used the debug feature provided with `proxy.py` and rebuilt the wiki. I ran this with [this version](https://github.com/paternal/ikiwiki-rpcbug/tree/b4ba34a8edd1b97989965af69eddac050bc0a8ba) of my minimal bug example. > > * The bug happens in function [preprocess](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/plugins/rpcbug#L12-17) (in call to [srcfile](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/plugins/rpcbug#L15), to be more precise). > * The directive causing the bug is called on page [foo](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/foo.mdwn). -> * Communication between Ikiwiki and the plugin is [[here|tee]]. +> * Communication between Ikiwiki and the plugin is [[here|debug]]. > * The resulting HTML (for page `foo`) looks like: > > > \[[!rpcbug Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay]] @@ -62,3 +62,29 @@ Regards, > the plugin that something went wrong. > > -- [[Louis|spalax]] + +>> Update: This can actually be a [proxy](https://github.com/joeyh/ikiwiki/blob/9c910a76e70111c50ba8cbb518277f809fc1d09d/plugins/proxy.py) error. Indeed: +>> +>> - Ikiwiki sends a `methodCall` message to the plugin (which is a call to the +>> `preprocess` function); +>> - the plugin sends a `methodCall` message to ikiwiki (which is a call to the +>> `srcfile` function); +>> - Ikiwiki answers with a `methodCall` message: +>> - Ikiwiki answers this because the function call failed, and it is already +>> processing the next directive; +>> - the plugin thinks that it is its request answer, and misinterprets it. +>> +>> Thus, I think that the bug is in the `proxy.py` python file. On receiving a +>> `methodCall` (instead of a `methodResponse`) as an answer to a `methodCall` +>> request, `proxy.py` should notice the type of request, and call the requested function. +>> +>> I know Python better than I know Perl, so I can try to fix this. +>> +>> -- [[Louis|spalax]] + +>>> [[!template id=gitbranch author="[[Louis|spalax]]" branch=spalax/paternal/rpcbug +>>> browse=https://github.com/paternal/ikiwiki/tree/paternal/rpcbug]] +>>> [I fixed this bug](https://github.com/paternal/ikiwiki/commit/32da347566a7559ca1ef145880efe961dbcc012f) in a branch on my Ikiwiki clone. +>>> Please review :) +>>> +>>> -- [[Louis|spalax]]