正在显示
5 个修改的文件
包含
116 行增加
和
28 行删除
| @@ -203,13 +203,61 @@ Please select your language: | @@ -203,13 +203,61 @@ Please select your language: | ||
| 203 | 203 | ||
| 204 | ### V2 changes | 204 | ### V2 changes |
| 205 | 205 | ||
| 206 | +* v2.0, 2017-01-06, for #730, reset ack follow flash player rules. 2.0.225 | ||
| 207 | +* v2.0, 2016-12-15, for #513, remove hls ram from srs2 to srs3+. 2.0.224 | ||
| 206 | * <strong>v2.0, 2016-12-13, [2.0 beta3(2.0.223)][r2.0b3] released. 86685 lines.</strong> | 208 | * <strong>v2.0, 2016-12-13, [2.0 beta3(2.0.223)][r2.0b3] released. 86685 lines.</strong> |
| 209 | +* v2.0, 2016-12-13, fix #713, disable the source cleanup. 2.0.223 | ||
| 210 | +* v2.0, 2016-12-13, fix #713, refine source to avoid critical fetch and create. 2.0.222 | ||
| 207 | * <strong>v2.0, 2016-11-09, [2.0 beta2(2.0.221)][r2.0b2] released. 86691 lines.</strong> | 211 | * <strong>v2.0, 2016-11-09, [2.0 beta2(2.0.221)][r2.0b2] released. 86691 lines.</strong> |
| 212 | +* v2.0, 2016-11-05, fix #654, crash when source cleanup for edge. 2.0.221 | ||
| 213 | +* v2.0, 2016-10-26, fix #666, crash when source cleanup for http-flv. 2.0.220 | ||
| 214 | +* v2.0, 2016-10-10, fix #661, close fd after thread stopped. 2.0.219 | ||
| 215 | +* v2.0, 2016-09-23, support asprocess for oryx. 2.0.218 | ||
| 216 | +* v2.0, 2016-09-23, support change work_dir for oryx. | ||
| 217 | +* v2.0, 2016-09-15, fix #640, typo for rtmp type. 2.0.217 | ||
| 218 | +* v2.0, 2016-09-12, fix fast stream error bug. 2.0.216 | ||
| 208 | * <strong>v2.0, 2016-09-09, [2.0 beta1(2.0.215)][r2.0b1] released. 89941 lines.</strong> | 219 | * <strong>v2.0, 2016-09-09, [2.0 beta1(2.0.215)][r2.0b1] released. 89941 lines.</strong> |
| 220 | +* v2.0, 2016-09-09, refine librtmp comments about NALUs. 2.0.215 | ||
| 221 | +* v2.0, 2016-09-05, fix memory leak at source. 2.0.214 | ||
| 222 | +* v2.0, 2016-09-05, fix memory leak at handshake. 2.0.213 | ||
| 223 | +* v2.0, 2016-09-04, support valgrind for [patched st](https://github.com/ossrs/state-threads/issues/2). | ||
| 224 | +* v2.0, 2016-09-03, support all arm for [patched st](https://github.com/ossrs/state-threads/issues/1). 2.0.212 | ||
| 225 | +* v2.0, 2016-09-01, workaround [#511][bug #511] the fly stfd in close. 2.0.211 | ||
| 226 | +* v2.0, 2016-08-30, comment the pcr. | ||
| 227 | +* v2.0, 2016-08-18, fix [srs-librtmp#4](https://github.com/ossrs/srs-librtmp/issues/4) filter frame. | ||
| 228 | +* v2.0, 2016-08-10, fix socket timeout for librtmp. | ||
| 229 | +* v2.0, 2016-08-08, fix the crash by srs_info log. | ||
| 209 | * <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong> | 230 | * <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong> |
| 231 | +* v2.0, 2016-05-17, fix the sps pps parse bug. | ||
| 232 | +* v2.0, 2016-01-13, fix http reader bug, support infinite chunked. 2.0.209 | ||
| 233 | +* v2.0, 2016-01-09, merge [#559][pr #559] fix memory leak bug. 2.0.208 | ||
| 234 | +* v2.0, 2016-01-09, merge [#558][pr #558] add tcUrl for on_publish. | ||
| 235 | +* v2.0, 2016-01-05, add keyword XCORE for coredump to identify the version. 2.0.207 | ||
| 210 | * <strong>v2.0, 2015-12-23, [2.0 alpha3(2.0.205)][r2.0a3] released. 89544 lines.</strong> | 236 | * <strong>v2.0, 2015-12-23, [2.0 alpha3(2.0.205)][r2.0a3] released. 89544 lines.</strong> |
| 237 | +* v2.0, 2015-12-22, for [#509][bug #509] always alloc big object at heap. 2.0.205 | ||
| 238 | +* v2.0, 2015-12-22, for [#418][bug #418] ignore null connect props to make RED5 happy. 2.0.204 | ||
| 239 | +* v2.0, 2015-12-22, for [#546][bug #546] thread terminate normally dispose bug. 2.0.203 | ||
| 240 | +* v2.0, 2015-12-22, for [#541][bug #541] failed when chunk size too small. 2.0.202 | ||
| 241 | +* v2.0, 2015-12-15, default hls_on_error to continue. 2.0.201 | ||
| 242 | +* v2.0, 2015-11-16, for [#518][bug #518] fix fd leak bug when fork. 2.0.200 | ||
| 243 | +* v2.0, 2015-11-05, for [#511][bug #511] fix bug for restart thread. 2.0.199 | ||
| 244 | +* v2.0, 2015-11-02, for [#515][bug #515] use srs_freepa and SrsAutoFreeA for array. 2.0.198 | ||
| 245 | +* v2.0, 2015-10-28, for [ExoPlayer #828][exo #828], remove duration for live. | ||
| 246 | +* v2.0, 2015-10-28, for [ExoPlayer #828][exo #828], add av tag in flv header. 2.0.197 | ||
| 247 | +* v2.0, 2015-10-27, for [#512][bug #512] partial hotfix the hls pure audio. 2.0.196 | ||
| 211 | * <strong>v2.0, 2015-10-08, [2.0 alpha2(2.0.195)][r2.0a2] released. 89358 lines.</strong> | 248 | * <strong>v2.0, 2015-10-08, [2.0 alpha2(2.0.195)][r2.0a2] released. 89358 lines.</strong> |
| 249 | +* v2.0, 2015-10-04, for [#448][bug #448] fix the bug of response of http hooks. 2.0.195 | ||
| 250 | +* v2.0, 2015-10-01, for [#497][bug #497] response error when client not found to kickoff. 2.0.194 | ||
| 251 | +* v2.0, 2015-10-01, for [#495][bug #495] decrease the srs-librtmp size. 2.0.193 | ||
| 252 | +* v2.0, 2015-09-23, for [#485][bug #485] error when arm glibc 2.15+ or not i386/x86_64/amd64. 2.0.192 | ||
| 253 | +* v2.0, 2015-09-23, for [#485][bug #485] srs for respberrypi and cubieboard. 2.0.191 | ||
| 254 | +* v2.0, 2015-09-21, fix [#484][bug #484] hotfix the openssl build script 2.0.190 | ||
| 212 | * <strong>v2.0, 2015-09-14, [2.0 alpha1(2.0.189)][r2.0a1] released. 89269 lines.</strong> | 255 | * <strong>v2.0, 2015-09-14, [2.0 alpha1(2.0.189)][r2.0a1] released. 89269 lines.</strong> |
| 256 | +* v2.0, 2015-09-14, fix [#474][bug #474] config to donot parse width/height from sps. 2.0.189 | ||
| 257 | +* v2.0, 2015-09-14, for [#474][bug #474] always release publish for source. | ||
| 258 | +* v2.0, 2015-09-14, for [#458][bug #458] http hooks use source thread cid. 2.0.188 | ||
| 259 | +* v2.0, 2015-09-14, for [#475][bug #475] fix http hooks crash for st context switch. 2.0.187 | ||
| 260 | +* v2.0, 2015-09-09, support reload utc_time. 2.0.186 | ||
| 213 | * <strong>v2.0, 2015-08-23, [2.0 alpha0(2.0.185)][r2.0a0] released. 89022 lines.</strong> | 261 | * <strong>v2.0, 2015-08-23, [2.0 alpha0(2.0.185)][r2.0a0] released. 89022 lines.</strong> |
| 214 | * v2.0, 2015-08-22, HTTP API support JSONP by specifies the query string callback=xxx. | 262 | * v2.0, 2015-08-22, HTTP API support JSONP by specifies the query string callback=xxx. |
| 215 | * v2.0, 2015-08-20, fix [#380][bug #380], srs-librtmp send sequence header when sps or pps changed. | 263 | * v2.0, 2015-08-20, fix [#380][bug #380], srs-librtmp send sequence header when sps or pps changed. |
| @@ -325,7 +373,7 @@ Please select your language: | @@ -325,7 +373,7 @@ Please select your language: | ||
| 325 | * v2.0, 2014-11-21, srs-librtmp add rtmp prefix for rtmp/utils/human apis. 2.0.29. | 373 | * v2.0, 2014-11-21, srs-librtmp add rtmp prefix for rtmp/utils/human apis. 2.0.29. |
| 326 | * v2.0, 2014-11-21, refine examples of srs-librtmp, add srs_print_rtmp_packet. 2.0.28. | 374 | * v2.0, 2014-11-21, refine examples of srs-librtmp, add srs_print_rtmp_packet. 2.0.28. |
| 327 | * v2.0, 2014-11-20, fix [#212][bug #212], support publish audio raw frames. 2.0.27 | 375 | * v2.0, 2014-11-20, fix [#212][bug #212], support publish audio raw frames. 2.0.27 |
| 328 | -* v2.0, 2014-11-19, fix [#213][bug #213], support compile [srs-librtmp on windows][srs-librtmp], [bug #213][bug #213]. 2.0.26 | 376 | +* v2.0, 2014-11-19, fix [#213][bug #213], support compile [srs-librtmp on windows](https://github.com/winlinvip/srs.librtmp), [bug #213][bug #213]. 2.0.26 |
| 329 | * v2.0, 2014-11-18, all wiki translated to English. 2.0.23. | 377 | * v2.0, 2014-11-18, all wiki translated to English. 2.0.23. |
| 330 | * v2.0, 2014-11-15, fix [#204][bug #204], srs-librtmp drop duplicated sps/pps(sequence header). 2.0.22. | 378 | * v2.0, 2014-11-15, fix [#204][bug #204], srs-librtmp drop duplicated sps/pps(sequence header). 2.0.22. |
| 331 | * v2.0, 2014-11-15, fix [#203][bug #203], srs-librtmp drop any video before sps/pps(sequence header). 2.0.21. | 379 | * v2.0, 2014-11-15, fix [#203][bug #203], srs-librtmp drop any video before sps/pps(sequence header). 2.0.21. |
| @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | // current release version | 31 | // current release version |
| 32 | #define VERSION_MAJOR 3 | 32 | #define VERSION_MAJOR 3 |
| 33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
| 34 | -#define VERSION_REVISION 12 | 34 | +#define VERSION_REVISION 13 |
| 35 | 35 | ||
| 36 | // generated by configure, only macros. | 36 | // generated by configure, only macros. |
| 37 | #include <srs_auto_headers.hpp> | 37 | #include <srs_auto_headers.hpp> |
| @@ -210,8 +210,8 @@ int SrsPacket::encode_packet(SrsBuffer* stream) | @@ -210,8 +210,8 @@ int SrsPacket::encode_packet(SrsBuffer* stream) | ||
| 210 | 210 | ||
| 211 | SrsProtocol::AckWindowSize::AckWindowSize() | 211 | SrsProtocol::AckWindowSize::AckWindowSize() |
| 212 | { | 212 | { |
| 213 | - ack_window_size = 0; | ||
| 214 | - acked_size = 0; | 213 | + window = 0; |
| 214 | + sequence_number = nb_recv_bytes = 0; | ||
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | SrsProtocol::SrsProtocol(ISrsProtocolReaderWriter* io) | 217 | SrsProtocol::SrsProtocol(ISrsProtocolReaderWriter* io) |
| @@ -1457,13 +1457,9 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | @@ -1457,13 +1457,9 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | ||
| 1457 | 1457 | ||
| 1458 | srs_assert(msg != NULL); | 1458 | srs_assert(msg != NULL); |
| 1459 | 1459 | ||
| 1460 | - // acknowledgement | ||
| 1461 | - if (in_ack_size.ack_window_size > 0 | ||
| 1462 | - && skt->get_recv_bytes() - in_ack_size.acked_size > in_ack_size.ack_window_size | ||
| 1463 | - ) { | ||
| 1464 | - if ((ret = response_acknowledgement_message()) != ERROR_SUCCESS) { | ||
| 1465 | - return ret; | ||
| 1466 | - } | 1460 | + // try to response acknowledgement |
| 1461 | + if ((ret = response_acknowledgement_message()) != ERROR_SUCCESS) { | ||
| 1462 | + return ret; | ||
| 1467 | } | 1463 | } |
| 1468 | 1464 | ||
| 1469 | SrsPacket* packet = NULL; | 1465 | SrsPacket* packet = NULL; |
| @@ -1492,7 +1488,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | @@ -1492,7 +1488,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | ||
| 1492 | srs_assert(pkt != NULL); | 1488 | srs_assert(pkt != NULL); |
| 1493 | 1489 | ||
| 1494 | if (pkt->ackowledgement_window_size > 0) { | 1490 | if (pkt->ackowledgement_window_size > 0) { |
| 1495 | - in_ack_size.ack_window_size = pkt->ackowledgement_window_size; | 1491 | + in_ack_size.window = (uint32_t)pkt->ackowledgement_window_size; |
| 1496 | // @remark, we ignore this message, for user noneed to care. | 1492 | // @remark, we ignore this message, for user noneed to care. |
| 1497 | // but it's important for dev, for client/server will block if required | 1493 | // but it's important for dev, for client/server will block if required |
| 1498 | // ack msg not arrived. | 1494 | // ack msg not arrived. |
| @@ -1526,7 +1522,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | @@ -1526,7 +1522,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | ||
| 1526 | } | 1522 | } |
| 1527 | 1523 | ||
| 1528 | in_chunk_size = pkt->chunk_size; | 1524 | in_chunk_size = pkt->chunk_size; |
| 1529 | - srs_trace("input chunk size to %d", pkt->chunk_size); | 1525 | + srs_info("in.chunk=%d", pkt->chunk_size); |
| 1530 | 1526 | ||
| 1531 | break; | 1527 | break; |
| 1532 | } | 1528 | } |
| @@ -1535,7 +1531,8 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | @@ -1535,7 +1531,8 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) | ||
| 1535 | srs_assert(pkt != NULL); | 1531 | srs_assert(pkt != NULL); |
| 1536 | 1532 | ||
| 1537 | if (pkt->event_type == SrcPCUCSetBufferLength) { | 1533 | if (pkt->event_type == SrcPCUCSetBufferLength) { |
| 1538 | - srs_trace("ignored. set buffer length to %d", pkt->extra_data); | 1534 | + srs_trace("buffer=%d, in.ack=%d, out.ack=%d, in.chunk=%d, out.chunk=%d", pkt->extra_data, |
| 1535 | + in_ack_size.window, out_ack_size.window, in_chunk_size, out_chunk_size); | ||
| 1539 | } | 1536 | } |
| 1540 | if (pkt->event_type == SrcPCUCPingRequest) { | 1537 | if (pkt->event_type == SrcPCUCPingRequest) { |
| 1541 | if ((ret = response_ping_message(pkt->event_data)) != ERROR_SUCCESS) { | 1538 | if ((ret = response_ping_message(pkt->event_data)) != ERROR_SUCCESS) { |
| @@ -1563,11 +1560,13 @@ int SrsProtocol::on_send_packet(SrsMessageHeader* mh, SrsPacket* packet) | @@ -1563,11 +1560,13 @@ int SrsProtocol::on_send_packet(SrsMessageHeader* mh, SrsPacket* packet) | ||
| 1563 | switch (mh->message_type) { | 1560 | switch (mh->message_type) { |
| 1564 | case RTMP_MSG_SetChunkSize: { | 1561 | case RTMP_MSG_SetChunkSize: { |
| 1565 | SrsSetChunkSizePacket* pkt = dynamic_cast<SrsSetChunkSizePacket*>(packet); | 1562 | SrsSetChunkSizePacket* pkt = dynamic_cast<SrsSetChunkSizePacket*>(packet); |
| 1566 | - srs_assert(pkt != NULL); | ||
| 1567 | - | ||
| 1568 | out_chunk_size = pkt->chunk_size; | 1563 | out_chunk_size = pkt->chunk_size; |
| 1569 | - | ||
| 1570 | - srs_trace("out chunk size to %d", pkt->chunk_size); | 1564 | + srs_info("out.chunk=%d", pkt->chunk_size); |
| 1565 | + break; | ||
| 1566 | + } | ||
| 1567 | + case RTMP_MSG_WindowAcknowledgementSize: { | ||
| 1568 | + SrsSetWindowAckSizePacket* pkt = dynamic_cast<SrsSetWindowAckSizePacket*>(packet); | ||
| 1569 | + out_ack_size.window = (uint32_t)pkt->ackowledgement_window_size; | ||
| 1571 | break; | 1570 | break; |
| 1572 | } | 1571 | } |
| 1573 | case RTMP_MSG_AMF0CommandMessage: | 1572 | case RTMP_MSG_AMF0CommandMessage: |
| @@ -1606,9 +1605,27 @@ int SrsProtocol::response_acknowledgement_message() | @@ -1606,9 +1605,27 @@ int SrsProtocol::response_acknowledgement_message() | ||
| 1606 | { | 1605 | { |
| 1607 | int ret = ERROR_SUCCESS; | 1606 | int ret = ERROR_SUCCESS; |
| 1608 | 1607 | ||
| 1608 | + if (in_ack_size.window <= 0) { | ||
| 1609 | + return ret; | ||
| 1610 | + } | ||
| 1611 | + | ||
| 1612 | + // ignore when delta bytes not exceed half of window(ack size). | ||
| 1613 | + uint32_t delta = (uint32_t)(skt->get_recv_bytes() - in_ack_size.nb_recv_bytes); | ||
| 1614 | + if (delta < in_ack_size.window / 2) { | ||
| 1615 | + return ret; | ||
| 1616 | + } | ||
| 1617 | + in_ack_size.nb_recv_bytes = skt->get_recv_bytes(); | ||
| 1618 | + | ||
| 1619 | + // when the sequence number overflow, reset it. | ||
| 1620 | + uint32_t sequence_number = in_ack_size.sequence_number + delta; | ||
| 1621 | + if (sequence_number > 0xf0000000) { | ||
| 1622 | + sequence_number = delta; | ||
| 1623 | + } | ||
| 1624 | + in_ack_size.sequence_number = sequence_number; | ||
| 1625 | + | ||
| 1609 | SrsAcknowledgementPacket* pkt = new SrsAcknowledgementPacket(); | 1626 | SrsAcknowledgementPacket* pkt = new SrsAcknowledgementPacket(); |
| 1610 | - in_ack_size.acked_size = skt->get_recv_bytes(); | ||
| 1611 | - pkt->sequence_number = (int32_t)in_ack_size.acked_size; | 1627 | + pkt->sequence_number = sequence_number; |
| 1628 | + srs_warn("ack sequence=%#x", sequence_number); | ||
| 1612 | 1629 | ||
| 1613 | // cache the message and use flush to send. | 1630 | // cache the message and use flush to send. |
| 1614 | if (!auto_response_when_recv) { | 1631 | if (!auto_response_when_recv) { |
| @@ -5079,6 +5096,22 @@ SrsAcknowledgementPacket::~SrsAcknowledgementPacket() | @@ -5079,6 +5096,22 @@ SrsAcknowledgementPacket::~SrsAcknowledgementPacket() | ||
| 5079 | { | 5096 | { |
| 5080 | } | 5097 | } |
| 5081 | 5098 | ||
| 5099 | +int SrsAcknowledgementPacket::decode(SrsBuffer* stream) | ||
| 5100 | +{ | ||
| 5101 | + int ret = ERROR_SUCCESS; | ||
| 5102 | + | ||
| 5103 | + if (!stream->require(4)) { | ||
| 5104 | + ret = ERROR_RTMP_MESSAGE_DECODE; | ||
| 5105 | + srs_error("decode acknowledgement failed. ret=%d", ret); | ||
| 5106 | + return ret; | ||
| 5107 | + } | ||
| 5108 | + | ||
| 5109 | + sequence_number = (uint32_t)stream->read_4bytes(); | ||
| 5110 | + srs_info("decode acknowledgement success"); | ||
| 5111 | + | ||
| 5112 | + return ret; | ||
| 5113 | +} | ||
| 5114 | + | ||
| 5082 | int SrsAcknowledgementPacket::get_prefer_cid() | 5115 | int SrsAcknowledgementPacket::get_prefer_cid() |
| 5083 | { | 5116 | { |
| 5084 | return RTMP_CID_ProtocolControl; | 5117 | return RTMP_CID_ProtocolControl; |
| @@ -190,8 +190,11 @@ private: | @@ -190,8 +190,11 @@ private: | ||
| 190 | class AckWindowSize | 190 | class AckWindowSize |
| 191 | { | 191 | { |
| 192 | public: | 192 | public: |
| 193 | - int ack_window_size; | ||
| 194 | - int64_t acked_size; | 193 | + uint32_t window; |
| 194 | + // number of received bytes. | ||
| 195 | + int64_t nb_recv_bytes; | ||
| 196 | + // previous responsed sequence number. | ||
| 197 | + uint32_t sequence_number; | ||
| 195 | 198 | ||
| 196 | AckWindowSize(); | 199 | AckWindowSize(); |
| 197 | }; | 200 | }; |
| @@ -227,10 +230,11 @@ private: | @@ -227,10 +230,11 @@ private: | ||
| 227 | * input chunk size, default to 128, set by peer packet. | 230 | * input chunk size, default to 128, set by peer packet. |
| 228 | */ | 231 | */ |
| 229 | int32_t in_chunk_size; | 232 | int32_t in_chunk_size; |
| 230 | - /** | ||
| 231 | - * input ack size, when to send the acked packet. | ||
| 232 | - */ | 233 | + // The input ack window, to response acknowledge to peer, |
| 234 | + // for example, to respose the encoder, for server got lots of packets. | ||
| 233 | AckWindowSize in_ack_size; | 235 | AckWindowSize in_ack_size; |
| 236 | + // The output ack window, to require peer to response the ack. | ||
| 237 | + AckWindowSize out_ack_size; | ||
| 234 | /** | 238 | /** |
| 235 | * whether auto response when recv messages. | 239 | * whether auto response when recv messages. |
| 236 | * default to true for it's very easy to use the protocol stack. | 240 | * default to true for it's very easy to use the protocol stack. |
| @@ -1847,10 +1851,13 @@ protected: | @@ -1847,10 +1851,13 @@ protected: | ||
| 1847 | class SrsAcknowledgementPacket : public SrsPacket | 1851 | class SrsAcknowledgementPacket : public SrsPacket |
| 1848 | { | 1852 | { |
| 1849 | public: | 1853 | public: |
| 1850 | - int32_t sequence_number; | 1854 | + uint32_t sequence_number; |
| 1851 | public: | 1855 | public: |
| 1852 | SrsAcknowledgementPacket(); | 1856 | SrsAcknowledgementPacket(); |
| 1853 | virtual ~SrsAcknowledgementPacket(); | 1857 | virtual ~SrsAcknowledgementPacket(); |
| 1858 | +// decode functions for concrete packet to override. | ||
| 1859 | +public: | ||
| 1860 | + virtual int decode(SrsBuffer* stream); | ||
| 1854 | // encode functions for concrete packet to override. | 1861 | // encode functions for concrete packet to override. |
| 1855 | public: | 1862 | public: |
| 1856 | virtual int get_prefer_cid(); | 1863 | virtual int get_prefer_cid(); |
| @@ -31,12 +31,12 @@ using namespace std; | @@ -31,12 +31,12 @@ using namespace std; | ||
| 31 | VOID TEST(CoreAutoFreeTest, Free) | 31 | VOID TEST(CoreAutoFreeTest, Free) |
| 32 | { | 32 | { |
| 33 | char* data = new char[32]; | 33 | char* data = new char[32]; |
| 34 | - srs_freep(data); | 34 | + srs_freepa(data); |
| 35 | EXPECT_TRUE(data == NULL); | 35 | EXPECT_TRUE(data == NULL); |
| 36 | 36 | ||
| 37 | if (true) { | 37 | if (true) { |
| 38 | data = new char[32]; | 38 | data = new char[32]; |
| 39 | - SrsAutoFree(char, data); | 39 | + SrsAutoFreeA(char, data); |
| 40 | } | 40 | } |
| 41 | EXPECT_TRUE(data == NULL); | 41 | EXPECT_TRUE(data == NULL); |
| 42 | } | 42 | } |
-
请 注册 或 登录 后发表评论