Return-Path: Delivered-To: apmail-mina-users-archive@www.apache.org Received: (qmail 66508 invoked from network); 7 Sep 2010 07:46:14 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 7 Sep 2010 07:46:14 -0000 Received: (qmail 27157 invoked by uid 500); 7 Sep 2010 07:46:14 -0000 Delivered-To: apmail-mina-users-archive@mina.apache.org Received: (qmail 26800 invoked by uid 500); 7 Sep 2010 07:46:11 -0000 Mailing-List: contact users-help@mina.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@mina.apache.org Delivered-To: mailing list users@mina.apache.org Received: (qmail 26787 invoked by uid 99); 7 Sep 2010 07:46:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Sep 2010 07:46:09 +0000 X-ASF-Spam-Status: No, hits=4.4 required=10.0 tests=FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of magikboo23@gmail.com designates 209.85.216.43 as permitted sender) Received: from [209.85.216.43] (HELO mail-qw0-f43.google.com) (209.85.216.43) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Sep 2010 07:46:04 +0000 Received: by qwb7 with SMTP id 7so7660796qwb.2 for ; Tue, 07 Sep 2010 00:45:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=6dmjBUygTa7aXdbuMgejLzhV4giaxzj4YU5O3kws4Js=; b=lxnUVP/Y27lqV1+DDp6Fmdo4CtBJ1ssCQIXa8JqlvnEeUo/BVTvo3erYwxtzywtto5 UsoF0zO9TbrBR4xequSphTlSe3QswMEulSyuaWwam9xSQFDO/Ayrt2Fsuz+8GPyzRAEG zWxeOKhjtHQqjysCjl7cVPUXUquQqwCzrbW38= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type; b=ImEuQnazFnuWbFOKHTzEl44xVb2IxCndQI5l3T7nfD+DlE9x8U32b92EAuOAI4ngQ7 ObmJIWmvnu//y8CryYO1HpbH51RGmf+TJdBGiBlp5Sy64hL3fd6Ce9N7THdTR5I+Dsd+ 5sR6tCanhA55TwwfcCeTSE62TXl4Zl8f1EwDQ= MIME-Version: 1.0 Received: by 10.224.11.146 with SMTP id t18mr562422qat.135.1283845542689; Tue, 07 Sep 2010 00:45:42 -0700 (PDT) Sender: magikboo23@gmail.com Received: by 10.229.142.76 with HTTP; Tue, 7 Sep 2010 00:45:42 -0700 (PDT) In-Reply-To: <4C851E89.1000503@apache.org> References: <6F56CAD6A0A497488D2B4C0DAE5C54612D8AE7@mailsrvnew.domain.local> <4C83C905.2040207@gmail.com> <4C851E89.1000503@apache.org> Date: Tue, 7 Sep 2010 09:45:42 +0200 X-Google-Sender-Auth: 4qv5F6Mci45bdusbmxDJfFCi5NI Message-ID: Subject: Re: MINA 2.0.0 GA From: FLV To: users@mina.apache.org, elecharny@apache.org Content-Type: multipart/mixed; boundary=0015175cd11c84bdb7048fa69567 --0015175cd11c84bdb7048fa69567 Content-Type: multipart/alternative; boundary=0015175cd11c84bdaf048fa69565 --0015175cd11c84bdaf048fa69565 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi, thanks for the answer, i will try to be more clear about my protocol: The protocol is simple like a Chat protocol. Client and Server send and receive XML text data under Text Data, in other words they send and receive Strings that is XML. For both Client and Server i am using Mina 2.0 and the same Coder/Decoder. So the client decoder is: public class *FlashDecoder *extends *CumulativeProtocolDecoder *{ private Map buffer =3D Collections.synchronizedMap(new HashMap()); private static final Logger log =3D LoggerFactory.getLogger(FlashCrossdomainDecoder.class); @Override protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { StringBuffer msg =3D new StringBuffer(); while (in.hasRemaining()) { byte[] data =3D new byte[in.remaining()]; in.get(data); msg.append(new String(data)); } if (msg.toString().codePointAt(msg.toString().length()-1) =3D=3D '\= 0') { if (buffer.containsKey(session.getId())) { String res =3D buffer.get(session.getId()) + msg.toString()= ; res =3D res.trim(); out.write(res); buffer.remove(session.getId()); } else { String res =3D msg.toString(); res =3D res.trim(); out.write(res); log.debug("[doDecode] out=3D" + res.trim()); return true; } } else { if (buffer.containsKey(session.getId())) { buffer.put(session.getId(), buffer.get(session.getId()) + msg.toString()); } else { buffer.put(session.getId(), msg.toString()); } } return false; } } The server encorder is: public class *FlashEncoder *extends ProtocolEncoderAdapter { private static final Logger log =3D LoggerFactory.getLogger( FlashCrossdomainEncoder.class); public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { try { out.write(IoBuffer.wrap(message.toString().getBytes())); log.debug("[encode] message=3D" + message.toString().trim()); } catch (Throwable e) { e.printStackTrace(); } } } As attach there is the complete code. "*do you deal with the fact that you may have more than one message to deal with in the decoder ?* " I thought yes, for each packet of a single message, client or server receive, i use a Map (Map buffer =3D> ) i= n order to store the single message. And it is working 9 times on 10. I don't understand where the client get this message that i can think only it is = an old message ! Server Sent 17:48:23,790 DEBUG {pool-4-thread-2} a:? - [encode] >> *tob *message=3D 17:48:23,891 DEBUG {pool-4-thread-4} a:? - [encode] >> *antares *message=3D= Client Received 17:48:23,792 DEBUG {pool-6-thread-1} Handler:543 - << *tob *RECEIVED=3D here i don't see any other received data from server by antares only this: 17:48:24,174 DEBUG {pool-3-thread-1} Handler:543 - << *antares *RECEIVED=3D= Do you have a codec that has the right way to manipulate string ? Please let me know what i can send to you in order to help you to help me. Thanks F. 2010/9/6 Emmanuel L=E9charny > On 9/6/10 6:13 PM, FLV wrote: > >> Hi all, >> >> i need your help. >> > > A few questions : > > - do you deal with the fact that you may have more than one message to de= al > with in the decoder ? (ie, the bytes you received may be the contatenatio= n > of more of one message) > - what is the protocol you are dealing with ? Its hard to know what your > codec is supposed to produce without this input > > > > -- > Regards, > Cordialement, > Emmanuel L=E9charny > www.iktek.com > > Hi all, i need your help. I am using *apache mina 2.0 RC1* for my card game and I am using OrderedThreadPoolExecutor for read and write server side. chain.addLast("readExecutor", new ExecutorFilter(new OrderedThreadPoolExecutor(), IoEventType.MESSAGE_RECEIVED)) ; chain.addLast("codec", new ProtocolCodecFilter(new FlashCrossdomainCodec())); chain.addLast("writeExecutor", new ExecutorFilter(new OrderedThreadPoolExecutor(), IoEventType.WRITE)); Also my codec is a CumulativeProtocolDecoder with the following code: public class *FlashDecoder *extends *CumulativeProtocolDecoder *{ private Map buffer =3D Collections.synchronizedMap(new HashMap()); private static final Logger log =3D LoggerFactory.getLogger(FlashCrossdomainDecoder.class); @Override protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { StringBuffer msg =3D new StringBuffer(); while (in.hasRemaining()) { byte[] data =3D new byte[in.remaining()]; in.get(data); msg.append(new String(data)); } if (msg.toString().codePointAt(msg.toString().length()-1) =3D=3D '\= 0') { if (buffer.containsKey(session.getId())) { String res =3D buffer.get(session.getId()) + msg.toString()= ; res =3D res.trim(); out.write(res); buffer.remove(session.getId()); } else { String res =3D msg.toString(); res =3D res.trim(); out.write(res); log.debug("[doDecode] out=3D" + res.trim()); return true; } } else { if (buffer.containsKey(session.getId())) { buffer.put(session.getId(), buffer.get(session.getId()) + msg.toString()); } else { buffer.put(session.getId(), msg.toString()); } } return false; } } public class *FlashEncoder *extends ProtocolEncoderAdapter { private static final Logger log =3D LoggerFactory.getLogger(FlashCrossdomainEncoder.class); public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { try { out.write(IoBuffer.wrap(message.toString().getBytes())); log.debug("[encode] message=3D" + message.toString().trim()); } catch (Throwable e) { e.printStackTrace(); } } } PROBLEM: Sometimes the server seems to send a string but the client receives other o= r (old) one ! Server Sent 17:48:23,790 DEBUG {pool-4-thread-2} a:? - [encode] message=3D 17:48:23,891 DEBUG {pool-4-thread-4} a:? - [encode] message=3D Client Received 17:48:23,792 DEBUG {pool-6-thread-1} Handler:543 - << tob RECEIVED=3D here i don't see any other received data from server by antares only this: 17:48:24,174 DEBUG {pool-3-thread-1} Handler:543 - << antares RECEIVED=3D So in order i receive: Please what is wrong ? I need to do something to the codec ? Thanks! and i like so much Mina Francesco --0015175cd11c84bdaf048fa69565 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi, thanks for the answer, i will try to be more clear about my protocol:
The protocol is simple like a Chat protocol.
Client and Server sen= d and receive XML text data under Text Data, in other words they send and r= eceive Strings that is XML.

For both Client and Server i am using Mina 2.0 and the same Coder/Decod= er.

So the client decoder is:

public class FlashDecoder extends CumulativeProtocolDecoder=A0 {
=A0=A0=A0 private Map<= ;Long, String> buffer =3D Collections.synchronizedMap(new HashMap<Lon= g, String>());
=A0=A0=A0 private static final Logger log =3D LoggerFactory.getLogger(Flash= CrossdomainDecoder.class);

=A0=A0=A0 @Override
=A0=A0=A0 protecte= d boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput ou= t) throws Exception {
=A0=A0=A0 =A0=A0=A0 StringBuffer msg =3D new StringBuffer();
=A0=A0=A0 = =A0=A0=A0 while (in.hasRemaining()) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 byte= [] data =3D new byte[in.remaining()];
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 in.g= et(data);
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 msg.append(new String(data));=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 if (ms= g.toString().codePointAt(msg.toString().length()-1) =3D=3D '\0') {<= br>=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if (buffer.containsKey(session.getId())) {=
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 String res =3D buffer.get(sessi= on.getId()) + msg.toString();
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 res =3D res.trim();
=A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 out.write(res);
=A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 buffer.remove(session.getId());
=A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 } else {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 String res =3D msg.= toString();
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 res =3D res.trim();<= br> =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 out.write(res);
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 log.debug("[doDecode] out=3D" + res.trim(= ));
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return true;
=A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0=A0 } else {
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 if (buffer.containsKey(session.getId())) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 buffer.put(session.getId(), buffer.= get(session.getId()) + msg.toString());
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 } = else {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 buffer.put(session.getId(= ), msg.toString());
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0= =A0 }
=A0=A0=A0 =A0=A0=A0 return false;
=A0=A0=A0 }
}

The server encorder is:

public class Flas= hEncoder extends ProtocolEncoderAdapter {
=A0=A0=A0 private static f= inal Logger log =3D LoggerFactory.getLogger(
FlashCrossdoma= inEncoder.class);
=A0=A0=A0 public void encode(IoSession session, Object message, ProtocolEnc= oderOutput out) throws Exception {
=A0=A0=A0 =A0=A0=A0 try {=A0=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 out.write(IoBuffer.wrap(message.toString().getBytes()));=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 log.debug(&quo= t;[encode] message=3D" + message.toString().trim());
=A0=A0=A0 =A0= =A0=A0 } catch (Throwable e) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 e.printStackTrace();
=A0=A0=A0 =A0=A0=A0 }=
=A0=A0=A0 }
}


As attach there is the complete code.


"do you deal with the fact that you may have more= than one message to deal with in the decoder ? "

I thought yes, for each packet of a single message, client or server re= ceive, i use a Map (Map<Long, String> buffer =3D> <sessionId, p= acket> ) in order to store the single message.
And it is working 9 ti= mes on 10.

I don't understand where the client get this message <game g=3D&= quot;4931" d=3D"2" s=3D"1" a=3D"0" h=3D"turn" lr=3D&qu= ot;" ia=3D"0"/> that i can think only it is an old messag= e !

Server Sent
17:48:23,790 DEBUG {pool-4-thread-2} a:? - [encode] >= > tob message=3D<game g=3D"4931" d=3D"2" s= =3D"2" a=3D"0" h=3D"turn" lr=3D"check&qu= ot; ia=3D"0"/>
17:48:23,891 DEBUG {pool-4-thread-4} a:? - [encode] >> antares message=3D<game g=3D"4931" d=3D"2" s=3D"2"= ; a=3D"0" h=3D"turn" lr=3D"check" ia=3D"= 0"/>

Client Received
17:48:23,792 DEBUG {pool-6-thread-1} Handler:543 - << tob=20 RECEIVED=3D<game g=3D"4931" d=3D"2" s=3D"2&= quot; a=3D"0" h=3D"turn" lr=3D"check"=20 ia=3D"0"/>

here i don't see any other received data= from server by antares only this:
17:48:24,174 DEBUG {pool-3-thread-1} Handler:543 - << antares = RECEIVED=3D<game g=3D"4931" d=3D"2" s=3D"1" a=3D"0" h=3D= "turn" lr=3D"" ia=3D"0"/>


Do you have a codec that has the right way to manipulate string=A0 = ?

Please let me know what i can send to you in order to help you to = help me.

Thanks
F.




2010/9/6 Emmanuel L=E9charny <elecharny@apache.org>
=A0On 9/6/10 6:13 PM, FLV wrote:
Hi all,

i need your help.

A few questions :

- do you deal with the fact that you may have more than one message to deal= with in the decoder ? (ie, the bytes you received may be the contatenation= of more of one message)
- what is the protocol you are dealing with ? Its hard to know what your co= dec is supposed to produce without this input



--
Regards,
Cordialement,
Emmanuel L=E9charny
www.iktek.com


Hi all,

i need your help.
<= br>I am using apache mina 2.0 RC1 for my card game and

I am u= sing OrderedThreadPoolExecutor for read and write server side.

=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 chain.addLast("readExecutor", new E= xecutorFilter(new OrderedThreadPoolExecutor(), IoEventType.MESSAGE_RECEIVED= ))
;
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 chain.addLast("codec", new Protocol= CodecFilter(new FlashCrossdomainCodec()));=A0=A0 =A0=A0=A0 =A0=A0=A0
= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 chain.addLast("writeExecutor", new = ExecutorFilter(new OrderedThreadPoolExecutor(), IoEventType.WRITE)); =A0=A0= =A0

Also my codec is a CumulativeProtocolDecoder with the following code:
public class FlashDecoder extends CumulativeProtocolDecoder= =A0 {
=A0=A0=A0 private Map<Long, String> buffer =3D Collectio= ns.synchronizedMap(new HashMap<Long, String>());
=A0=A0=A0 private static final Logger log =3D LoggerFactory.getLogger(Flash= CrossdomainDecoder.class);
=A0=A0=A0 @Override
=A0=A0=A0 protected bo= olean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) t= hrows Exception {
=A0=A0=A0 =A0=A0=A0 StringBuffer msg =3D new StringBuffer();
=A0=A0=A0 = =A0=A0=A0 while (in.hasRemaining()) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 byte= [] data =3D new byte[in.remaining()];
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 in.g= et(data);
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 msg.append(new String(data));=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 if (ms= g.toString().codePointAt(msg.toString().length()-1) =3D=3D '\0') {<= br>=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if (buffer.containsKey(session.getId())) {=
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 String res =3D buffer.get(sessi= on.getId()) + msg.toString();
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 res =3D res.trim();
=A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 out.write(res);
=A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 buffer.remove(session.getId());
=A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 } else {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 String res =3D msg.= toString();
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 res =3D res.trim();<= br> =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 out.write(res);
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 log.debug("[doDecode] out=3D" + res.trim(= ));
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return true;
=A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0=A0 } else {
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 if (buffer.containsKey(session.getId())) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 buffer.put(session.getId(), buffer.= get(session.getId()) + msg.toString());
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 } = else {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 buffer.put(session.getId(= ), msg.toString());
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }
=A0=A0=A0 =A0=A0= =A0 }
=A0=A0=A0 =A0=A0=A0 return false;
=A0=A0=A0 }
}


public class FlashEncoder extends Protoc= olEncoderAdapter {
=A0=A0=A0 private static final Logger log =3D LoggerF= actory.getLogger(FlashCrossdomainEncoder.class);
=A0=A0=A0 public void e= ncode(IoSession session, Object message, ProtocolEncoderOutput out) throws = Exception {
=A0=A0=A0 =A0=A0=A0 try {=A0=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 out.write(IoBuffer.wrap(message.toString().getBytes()));=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 log.debug(&quo= t;[encode] message=3D" + message.toString().trim());
=A0=A0=A0 =A0= =A0=A0 } catch (Throwable e) {
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 e.printStackTrace();
=A0=A0=A0 =A0=A0=A0 }=
=A0=A0=A0 }
}

PROBLEM:
Sometimes the server seems to send = a string but the client receives other or (old) one !


Server Sen= t
17:48:23,790 DEBUG {pool-4-thread-2} a:? - [encode] message=3D<game= g=3D"4931" d=3D"2" s=3D"2" a=3D"0"= h=3D"turn" lr=3D"check" ia=3D"0"/>
17:48:23,891 DEBUG {pool-4-thread-4} a:? - [encode] message=3D<game g=3D= "4931" d=3D"2" s=3D"2" a=3D"0" h=3D= "turn" lr=3D"check" ia=3D"0"/>

Clie= nt Received
17:48:23,792 DEBUG {pool-6-thread-1} Handler:543 - << tob=20 RECEIVED=3D<game g=3D"4931" d=3D"2" s=3D"2"= ; a=3D"0" h=3D"turn" lr=3D"check"=20 ia=3D"0"/>

here i don't see any other received data= from server by antares only this:
17:48:24,174 DEBUG {pool-3-thread-1} Handler:543 - << antares RECEIVE= D=3D<game g=3D"4931" d=3D"2" s=3D"1" a=3D"0" h=3D"t= urn" lr=3D"" ia=3D"0"/>

So in order i receive:

<game g=3D"4931" d=3D"2= " s=3D"1" a=3D"0" h=3D"burningandturn" l= r=3D"check" ia=3D"0"/>
<game g=3D"4931&qu= ot; d=3D"2" s=3D"1" a=3D"0" h=3D"burning= andturn" lr=3D"check" ia=3D"0"/>
<game g=3D"4931" d=3D"2" s=3D"1" a=3D"= ;0" h=3D"turn" lr=3D"" ia=3D"0"/>
= <game g=3D"4931" d=3D"2" s=3D"2" a=3D"= ;0" h=3D"turn" lr=3D"check" ia=3D"0"/>= ;
<game g=3D"4931" d=3D"2" s=3D"1" a=3D"0" h=3D"turn&q= uot; lr=3D"" ia=3D"0"/>


Please what is wrong ? I need to do something to the codec ?

Thanks! and i like so much Mina
Francesco
=A0
=
--0015175cd11c84bdaf048fa69565-- --0015175cd11c84bdb7048fa69567--