I took another look around the wiki last night and noticed the error I
got from my modified proggy is exactly like the other error described
here:

http://jira.red5.org/browse/SN-5

Shud the 2 be merged?

And Luke, thanks for the directions. I tried manually firing the
disconnect events when streams are unsubscribed and unpublished and
used the closeChannel command to close the audio/video/data channels
but it still doesn't seem to work for me =( but I'm super confused by
all the code so I must be doing something wrong ( probably I'm doing
it in the wrong sequence or other additional resources needs to be
released elsewhere. )

thanks
NK

On 1/24/07, Luke Hubbard <[EMAIL PROTECTED]> wrote:
> I also have a go at fixing this bug last night but got lost in the stream
> code. Basically I think the problem is ConnectionConsumer grabs some
> channels, and does not release them. There is even a todo in there about
> releasing them. However the event to tell the connection consumer to that
> the provider has disconnected doesnt seem to make it to the connection
> consumer. I will ask steven for help as he should know.
>
> - Luke
>
>
> On 1/25/07, Nankun Huang <[EMAIL PROTECTED]> wrote:
> > oops, I sent the previous email prematured.. damn google mail enter
> > key.. anyway to continue where I left off...
> >
> > 1, When a stream is deleted by the
> > deleteStreamById(streamId) function, it did not call the
> > unreserveStreamId(int streamId)  function!! Therefore, it causes the
> > reservedStreams variable to show that the stream is still reserved
> > EVEN THOUGH its actually gone from the streams[] Array.
> >
> > 2, I tried to trace who is the one that is called the
> > deleteStreamById() function and came to the
> > org.red5.server.stream.StreamService  class. From there,
> I found that
> > the function which calls the delete stream is the: closeStream()
> > function on line 59. So I thought maybe, by changing
> > deleteStreamById(streamId) to unreserveStreamId(streamId) ( since
> > unreserve stream function calls delete stream anyways ), it'll remove
> > the offending problem.
> >
> > However when I did that, it choose to give me a DIFFERENT error
> > instead!! Here's the error
> >
> > [ERROR] 233079 SocketAcceptorIoProcessor-0.0:(
> > org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.error
> ) Error in
> > packet at 140
> > java.lang.NullPointerException
> >         at
> org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeHeader(RTMPProtocolDecoder.java:295)
> >         at
> org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodePacket(RTMPProtocolDecoder.java:217)
> >         at
> org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decode
> (RTMPProtocolDecoder.java:114)
> >         at
> org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeBuffer(RTMPProtocolDecoder.java:87)
> >         at
> org.red5.server.net.rtmp.codec.RTMPMinaProtocolDecoder.decode(RTMPMinaProtocolDecoder.java
> :48)
> >         at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:157)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java
> :501)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:51)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java
> :787)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(AbstractIoFilterChain.java:110)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java
> :501)
> >         at
> org.apache.mina.common.support.AbstractIoFilterChain.messageReceived(AbstractIoFilterChain.java:492)
> >         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:284)
> >         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:244)
> >         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:41)
> >         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:565)
> >
> > It seems to me that its calling the decoding function over and over
> > again with some kind of a null pointer. blah. I dunno. hope this
> > helps. I wish I could be more of a help but I dunno any of this spring
> > mina stuff =( so this is as far as I'll go.
> >
> > NK
> >
> > On 1/24/07, Nankun Huang <[EMAIL PROTECTED] > wrote:
> > > I did a bit more of an investigation into this with the wild hope that
> > > I might debug this ( with my noob java skillz ). So I set up the
> > > eclipse debugger and fired it away. Now I finally give up after 3
> > > hours. However I did have some interesting finds.
> > >
> > > Firstly, I started noticing the problem in:
> > > org.red5.server.net.rtmp.RTMPConnection.java
> > > As i used my program to subscribe and unsubscribe to my own streams, I
> > > noticed something:
> > >
> > > 1, When a stream is deleted by the
> > > deleteStreamById(streamId) function, it did not call the
> > > unreserveStreamId(int streamId)  function!! therefore, this causes the
> > >
> > > On 1/24/07, Nankun Huang <[EMAIL PROTECTED]> wrote:
> > > > Hi,
> > > >      Ok, sorry I didn't look at the wiki more carefully =) This
> > > > actually happens on the playback side too. When a client subscribe to
> > > > more than 12 streams ( one after another ), the client will not be
> > > > able to subscribe to any new ones anymore. Thnx
> > > >
> > > > NK
> > > >
> > > >
> > > > On 1/24/07, Chris Allen <[EMAIL PROTECTED]> wrote:
> > > > > Sorry for the confusion. I thought that it had been fixed already.
> It is a
> > > > > priority to have it fixed before the rc2 release though.
> > > > >
> > > > > -Chris
> > > > >
> > > > >
> > > > > On 1/24/07, Thijs Triemstra < [EMAIL PROTECTED]> wrote:
> > > > > > There's a bug for this issue on
> > > > > http://jira.red5.org/browse/SN-14
> > > > > >
> > > > > > Thijs
> > > > > >
> > > > > >
> > > > > > Op 24-jan-2007, om 11:27 heeft Nankun Huang het volgende
> geschreven:
> > > > > >
> > > > > > > Hi all,
> > > > > > > According to an email which I got from this list yesterday, it
> was
> > > > > > > stated that the 12 connection limit bug is fixed. I was
> overjoyed and
> > > > > > > rushed to test out if this was the case. However after
> downloading the
> > > > > > > lattest trunk and compiling, this does not seem to be the case.
> There
> > > > > > > also isn't a bug report on the wiki about this and when the bug
> was
> > > > > > > reported unto the mailing list earlier ( by someone else, not me
> ), it
> > > > > > > was December and the issue didn't seem to have gotten much
> attention
> > > > > > > from the dev team. Here's a simple adobe flex program which I
> made
> > > > > > > that illustrates the bug. the MXML source file is below:
> > > > > > >
> > > > > > > The bug happens when a user publishes a stream, unpublish it,
> publish
> > > > > > > a new stream with a different stream name and then unpublish it
> > > > > > > again... rinse and repeat about 12 times and it stops working (
> I no
> > > > > > > longer get the publish success message ). I guess the intended
> > > > > > > functionality is that each user shouldnt' publish more than 12
> > > > > > > simultaneous streams which makes sense.. however in this case,
> once a
> > > > > > > stream is unpublished, it should just get deleted and no longer
> > > > > > > "count" toward the user.  Thanks for your attention.
> > > > > > >
> > > > > > > It seems that when I reach the limit of the number of streams
> that can
> > > > > > > be published, red5 gives me this error in the console
> > > > > > >
> > > > > > >      [java] [WARN] 575703 pool-1-thread-2:
> > > > > > > ( org.red5.server.net.rtmp.RTMPHandler
> > > > > > > .warn ) Unhandled ping: Ping: 3, 0, 0, -1
> > > > > > >      [java] 00 03 00 00 00 00 00 00 00 00
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > ------ and here's the mxml file
> > > > > > >
> > > > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > > > <mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml";
> > > > > > > layout="absolute">
> > > > > > >     <mx:Script>
> > > > > > >         <![CDATA[
> > > > > > >             import mx.utils.UIDUtil ;
> > > > > > >             import flash.net.NetStream;
> > > > > > >             import flash.net.NetConnection;
> > > > > > >             import flash.net.ObjectEncoding;
> > > > > > >             import flash.media.Microphone;
> > > > > > >             import flash.events.NetStatusEvent;
> > > > > > >             import mx.controls.Alert ;
> > > > > > >
> > > > > > >             //set to AMF0 for red5
> > > > > > >             NetConnection.defaultObjectEncoding
> =
> > > > > ObjectEncoding.AMF0;
> > > > > > >
> > > > > > >             private var nc: NetConnection;
> > > > > > >             private var ns:NetStream;
> > > > > > >             private var ns_play:NetStream;
> > > > > > >             private var stream_name:String;
> > > > > > >
> > > > > > >             //connect to server
> > > > > > >             private function connect():void{
> > > > > > >                 nc = new NetConnection();
> > > > > > >                 nc.client = this;
> > > > > > >                 nc.addEventListener(NetStatusEvent.NET_STATUS,
> > > > > > > netStatusHandler);
> > > > > > >                 nc.connect ( "rtmp://localhost/fitcDemo");
> > > > > > >             }
> > > > > > >
> > > > > > >             //useless callbcks from fitcDemo
> > > > > > >             public function setId( id:String):void{
> > > > > > >                 trace("server invoked set ID: "+ id);
> > > > > > >             }
> > > > > > >
> > > > > > >             public function newStream( id:String):void{
> > > > > > >                 trace("server invoked newStream: "+ id);
> > > > > > >             }
> > > > > > >             //start to publish the stream
> > > > > > >             public function startPub():void{
> > > > > > >                 var mic:Microphone = Microphone.getMicrophone();
> > > > > > >                 // generate a unique stream name every time with
> the
> > > > > > > unique ID generator
> > > > > > >                 stream_name = UIDUtil.createUID();
> > > > > > >
> > > > > > >                 this.btnPub.enabled = false;
> > > > > > >                 ns = new NetStream(nc);
> > > > > > >                 ns.attachAudio( mic )
> > > > > > >                 ns.addEventListener( NetStatusEvent.NET_STATUS,
> > > > > > > netStreamStatusHandler);
> > > > > > >                 ns.publish( stream_name );
> > > > > > >
> > > > > > >             }
> > > > > > >
> > > > > > >             //stop publishing the stream
> > > > > > >             public function stopPub():void{
> > > > > > >                 ns_play.close();
> > > > > > >                 ns.close();
> > > > > > >                 this.btnPub.enabled = true;
> > > > > > >                 this.btnStop.enabled= false;
> > > > > > >             }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >             private function netStatusHandler
> > > > > > > (event:NetStatusEvent):void{
> > > > > > >                 trace(event.info.code);
> > > > > > >                 if(event.info.code ==
> > > > > > > " NetConnection.Connect.Success") {
> > > > > > >                     this.btnPub.enabled = true;
> > > > > > >                     Alert.show('connected to server!!');
> > > > > > >                 }
> > > > > > >             }
> > > > > > >
> > > > > > >
> > > > > > >             //when publish is successful, play the stream
> > > > > > >             private function netStreamStatusHandler
> > > > > > > (event:NetStatusEvent):void{
> > > > > > >                 if( event.info.code == "NetStream.Publish.Start"
> ) {
> > > > > > >                     trace(event.info.code );
> > > > > > >                     ns_play = new NetStream(nc);
> > > > > > >                     ns_play.play( stream_name );
> > > > > > >                     this.btnStop.enabled = true;
> > > > > > >                 }
> > > > > > >             }
> > > > > > >
> > > > > > >
> > > > > > >         ]]>
> > > > > > >     </mx:Script>
> > > > > > >     <mx:Panel x="10" y="10" width="284" height="256"
> layout="absolute"
> > > > > > > title="Red5 12 connection limit bug ">
> > > > > > >         <mx:Button x="10" y="10" label="Connect"
> click="connect()"/>
> > > > > > >         <mx:Button x="10" y="40" label="Publish &amp; Play"
> > > > > > > mouseDown="startPub()" enabled="false" id="btnPub"/>
> > > > > > >         <mx:Button x="125" y="40" label="Stop"
> mouseDown="stopPub()"
> > > > > > > enabled="false" id="btnStop"/>
> > > > > > >         <mx:Text x="10" y="70" text="Press connect to connect to
> > > > > > > server (pop up will inform you that its connected), when
> connected
> > > > > > > press publish &amp; play to publish with your own mic and play
> the
> > > > > > > same stream you published. Press stop to stop the publishing and
> > > > > > > playing. Do this for 12 times, it'll die on the 13th time,
> > > > > > > illustrating the bug. Somtiems it fails before 12 times."
> > > > > > > width="251"/>
> > > > > > >     </mx:Panel>
> > > > > > > </mx:Application>
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Red5 mailing list
> > > > > > > [email protected]
> > > > > > >
> http://osflash.org/mailman/listinfo/red5_osflash.org
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Red5 mailing list
> > > > > > [email protected]
> > > > > >
> http://osflash.org/mailman/listinfo/red5_osflash.org
> > > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Red5 mailing list
> > > > > [email protected]
> > > > >
> http://osflash.org/mailman/listinfo/red5_osflash.org
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> > _______________________________________________
> > Red5 mailing list
> > [email protected]
> > http://osflash.org/mailman/listinfo/red5_osflash.org
> >
>
>
> _______________________________________________
> Red5 mailing list
> [email protected]
> http://osflash.org/mailman/listinfo/red5_osflash.org
>
>
>

_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org

Reply via email to