winlin

fix bug of amf0 decode

1 # the listen ports, split by space. 1 # the listen ports, split by space.
2 -listen 1935; 2 +listen 1937;
3 # the default chunk size is 128, max is 65536, 3 # the default chunk size is 128, max is 65536,
4 # some client does not support chunk size change, 4 # some client does not support chunk size change,
5 # however, most clients supports it and it can improve 5 # however, most clients supports it and it can improve
@@ -734,10 +734,12 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value) @@ -734,10 +734,12 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value)
734 return ret; 734 return ret;
735 } 735 }
736 case RTMP_AMF0_Null: { 736 case RTMP_AMF0_Null: {
  737 + stream->skip(1);
737 value = new SrsAmf0Null(); 738 value = new SrsAmf0Null();
738 return ret; 739 return ret;
739 } 740 }
740 case RTMP_AMF0_Undefined: { 741 case RTMP_AMF0_Undefined: {
  742 + stream->skip(1);
741 value = new SrsAmf0Undefined(); 743 value = new SrsAmf0Undefined();
742 return ret; 744 return ret;
743 } 745 }
@@ -538,7 +538,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) @@ -538,7 +538,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg)
538 srs_assert(msg != NULL); 538 srs_assert(msg != NULL);
539 539
540 // acknowledgement 540 // acknowledgement
541 - if (skt->get_recv_bytes() - in_ack_size.acked_size > in_ack_size.ack_window_size) { 541 + if (in_ack_size.ack_window_size > 0 && skt->get_recv_bytes() - in_ack_size.acked_size > in_ack_size.ack_window_size) {
542 if ((ret = response_acknowledgement_message()) != ERROR_SUCCESS) { 542 if ((ret = response_acknowledgement_message()) != ERROR_SUCCESS) {
543 return ret; 543 return ret;
544 } 544 }
@@ -359,7 +359,7 @@ int SrsSource::on_audio(SrsCommonMessage* audio) @@ -359,7 +359,7 @@ int SrsSource::on_audio(SrsCommonMessage* audio)
359 if (codec->audio_is_sequence_header(msg->payload, msg->size)) { 359 if (codec->audio_is_sequence_header(msg->payload, msg->size)) {
360 srs_freep(cache_sh_audio); 360 srs_freep(cache_sh_audio);
361 cache_sh_audio = msg->copy(); 361 cache_sh_audio = msg->copy();
362 - srs_trace("update audio sequence header success."); 362 + srs_trace("update audio sequence header success. size=%d", msg->header.payload_length);
363 return ret; 363 return ret;
364 } 364 }
365 365
@@ -404,7 +404,7 @@ int SrsSource::on_video(SrsCommonMessage* video) @@ -404,7 +404,7 @@ int SrsSource::on_video(SrsCommonMessage* video)
404 if (codec->video_is_sequence_header(msg->payload, msg->size)) { 404 if (codec->video_is_sequence_header(msg->payload, msg->size)) {
405 srs_freep(cache_sh_video); 405 srs_freep(cache_sh_video);
406 cache_sh_video = msg->copy(); 406 cache_sh_video = msg->copy();
407 - srs_trace("update video sequence header success."); 407 + srs_trace("update video sequence header success. size=%d", msg->header.payload_length);
408 return ret; 408 return ret;
409 } 409 }
410 410