[Gambas-user] Bug fixed XMLRPC server
Benoît Minisini
gambas at ...1...
Wed Nov 18 22:40:31 CET 2009
> Benoit,
>
> I have found a bug in the file
> gambas/2.0/gb.xml/src/rpc/gb.xml.rpc/RpcServer.class
>
> I had to comment out one line to get more than one parameter to work.
>
> This line ' IF Xml.Node.Type = XmlReaderNodeType.EndElement THEN BREAK
> in the code snippet below
> is responsable for a premature break of parseing the xml data file.
>
> With this line, after looping once it breaks out there always and the
> rest of the <param> fields (if any) are not processed.
> ---
> PUBLIC SUB miniSrv_ProcessData(Data AS String)
>
> DIM Xml AS NEW XmlReader
> DIM Bucle AS Integer
> DIM hPar AS NEW Variant[]
> DIM hP AS RpcAtom
> DIM Counter AS Integer
>
> Xml = NEW XmlReader
> Xml.FromString(Data)
>
> tools.Find(Xml, "methodCall")
> TRY Xml.Read()
> IF NOT tools.Find(Xml, "params") THEN
> miniSrv.SetReply(tools.FaultReply(4, "params field not found"))
> CurrIndex = - 1
> RETURN
> END IF
>
> TRY Xml.Read()
>
> DO WHILE TRUE
>
> ' IF Xml.Node.Type = XmlReaderNodeType.EndElement THEN BREAK
> <-----------------------
> IF NOT Tools.Find(Xml, "param") THEN BREAK
> hP = Tools.GetParam(Xml)
> IF hP = NULL THEN
> miniSrv.SetReply(tools.FaultReply(5, "malformed parameters"))
> CurrIndex = - 1
> RETURN
> END IF
>
> hPar.Add(hP.Data)
> ---
>
> Have tested it without, with one and with more than one (3) parameters
> of type boolean, string and integer and it seems to works ok.
>
> Using Gambas 2.17, but I think the Gambas 3 component code is the same.
>
> Kind regards,
> Ron_2nd.
>
By reading the code, I'm not sure that your fix is the cleanest, but if it
works...
--
Benoît Minisini
More information about the User
mailing list