[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pyamf-tickets
Subject:    Re: [pyamf-tickets] #697: Vector type not supported
From:       PyAMF list for bug and patch messages <tickets () pyamf ! org>
Date:       2011-08-03 14:40:34
Message-ID: 059.dd96ea7524b7e30c56060bd2be993727 () pyamf ! org
[Download RAW message or body]

#697: Vector type not supported
----------------------------------+----------------------
         Reporter:  FunnyMan3595  |      Owner:  nick
             Type:  defect        |     Status:  assigned
         Priority:  major         |  Milestone:  0.6.2
        Component:  AMF3          |    Version:  0.5.1
       Resolution:                |   Keywords:
           Author:                |     Branch:
Fixed in revision:                |
----------------------------------+----------------------
Description changed by thijs:

Old description:

> [wiki:Vector] appears to have its own, undocumented AMF3 data type, code
> `0x0D`.  The attached files demonstrate the problem:
>
>  - vector_test.mxml - Flex 4 source file with Vector of Strings
>  - vector_test.swf - Flash Player SWF that echoes Vector of strings to
> localhost:8000
>  - AMF3_Vector.hx - haXe source example
>  - AMF3_Vector.swf - Flash file that produces the unsupported code.
>  - AMF3_Vector.sol - Final .sol output, as produced by Flash v10.0.32.18
> (Linux).
>
> {{{
> ERROR:root:Error decoding AMF request
> Traceback (most recent call last):
>   File "/home/thijs/workspace/pyamf/pyamf/remoting/gateway/wsgi.py", line
> 85, in __call__
>     logger=self.logger, timezone_offset=timezone_offset)
>   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line
> 635, in decode
>     target, payload = _read_body(stream, decoder, strict, logger)
>   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line
> 462, in _read_body
>     data = _read_args()
>   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line
> 439, in _read_args
>     return [decoder.readElement() for i in xrange(x)]
>   File "codec.pyx", line 359, in cpyamf.codec.Decoder.readElement
> (cpyamf/codec.c:4972)
>   File "codec.pyx", line 372, in cpyamf.codec.Decoder.readElement
> (cpyamf/codec.c:4867)
>   File "amf0.pyx", line 294, in cpyamf.amf0.Decoder.readConcreteElement
> (cpyamf/amf0.c:4024)
>   File "amf0.pyx", line 262, in cpyamf.amf0.Decoder.readAMF3
> (cpyamf/amf0.c:3607)
>   File "codec.pyx", line 372, in cpyamf.codec.Decoder.readElement
> (cpyamf/codec.c:4867)
>   File "amf3.pyx", line 590, in cpyamf.amf3.Decoder.readConcreteElement
> (cpyamf/amf3.c:6579)
> DecodeError: Unsupported ActionScript type
> }}}
>
> Also added a test for
> [https://github.com/thijstriemstra/acidswf/commit/525eaf139bf5d3b1518490b41b168e622565ae6b
> AcidSWF].
>
> == AMF3 Vector with Java ==
>
> Check this [http://code.google.com/p/jpauclair-
> blog/source/browse/trunk/Experiment/AMF3/Amf3InputUpdated.java class] and
> [http://jpauclair.net/2010/01/16/reverse-engineering-amf3-vector-for-
> java/ this post] for more info about reverse engineering [wiki:Vector]
> for Java.

New description:

 [wiki:Vector] appears to have its own, undocumented AMF3 data type, code
 `0x0D`.  The attached files demonstrate the problem:

  - vector_test.mxml - Flex 4 source file with Vector of Strings
  - vector_test.swf - Flash Player SWF that echoes Vector of strings to
 localhost:8000
  - AMF3_Vector.hx - haXe source example
  - AMF3_Vector.swf - Flash file that produces the unsupported code.
  - AMF3_Vector.sol - Final .sol output, as produced by Flash v10.0.32.18
 (Linux).

 {{{
 ERROR:root:Error decoding AMF request
 Traceback (most recent call last):
   File "/home/thijs/workspace/pyamf/pyamf/remoting/gateway/wsgi.py", line
 85, in __call__
     logger=self.logger, timezone_offset=timezone_offset)
   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line 635,
 in decode
     target, payload = _read_body(stream, decoder, strict, logger)
   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line 462,
 in _read_body
     data = _read_args()
   File "/home/thijs/workspace/pyamf/pyamf/remoting/__init__.py", line 439,
 in _read_args
     return [decoder.readElement() for i in xrange(x)]
   File "codec.pyx", line 359, in cpyamf.codec.Decoder.readElement
 (cpyamf/codec.c:4972)
   File "codec.pyx", line 372, in cpyamf.codec.Decoder.readElement
 (cpyamf/codec.c:4867)
   File "amf0.pyx", line 294, in cpyamf.amf0.Decoder.readConcreteElement
 (cpyamf/amf0.c:4024)
   File "amf0.pyx", line 262, in cpyamf.amf0.Decoder.readAMF3
 (cpyamf/amf0.c:3607)
   File "codec.pyx", line 372, in cpyamf.codec.Decoder.readElement
 (cpyamf/codec.c:4867)
   File "amf3.pyx", line 590, in cpyamf.amf3.Decoder.readConcreteElement
 (cpyamf/amf3.c:6579)
 DecodeError: Unsupported ActionScript type
 }}}

 Also added a test for
 [https://github.com/thijstriemstra/acidswf/commit/525eaf139bf5d3b1518490b41b168e622565ae6b
 AcidSWF].

 == AMF3 Vector with Java ==

 Red5 implemented and [http://blog.infrared5.com/2011/08/red5-vector-
 support/ documented this]. Also check this [http://code.google.com/p
 /jpauclair-blog/source/browse/trunk/Experiment/AMF3/Amf3InputUpdated.java
 class] and [http://jpauclair.net/2010/01/16/reverse-engineering-amf3
 -vector-for-java/ this post] for more info about reverse engineering
 [wiki:Vector] for Java.

--

-- 
PyAMF - Ticket URL: <http://dev.pyamf.org/ticket/697#comment:8>
_______________________________________________
PyAMF tickets mailing list - tickets@pyamf.org
http://lists.pyamf.org/mailman/listinfo/tickets
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic