1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

fix bug of forward, earse the forwarded msgs.

This commit is contained in:
winlin 2013-12-06 10:16:24 +08:00
parent 8c5661b9ff
commit 89c0170850

View file

@ -292,7 +292,11 @@ int SrsForwarder::forward()
} }
} }
// ignore when no messages.
int count = (int)msgs.size(); int count = (int)msgs.size();
if (msgs.empty()) {
continue;
}
// reportable // reportable
if (pithy_print.can_print()) { if (pithy_print.can_print()) {
@ -301,16 +305,32 @@ int SrsForwarder::forward()
} }
// all msgs to forward. // all msgs to forward.
for (int i = 0; i < count; i++) { int i = 0;
for (i = 0; i < count; i++) {
SrsSharedPtrMessage* msg = msgs[i]; SrsSharedPtrMessage* msg = msgs[i];
msgs[i] = NULL; msgs[i] = NULL;
// we erased the sendout messages, the msg must not be NULL.
srs_assert(msg);
if ((ret = client->send_message(msg)) != ERROR_SUCCESS) { ret = client->send_message(msg);
if (ret != ERROR_SUCCESS) {
srs_error("forwarder send message to server failed. ret=%d", ret); srs_error("forwarder send message to server failed. ret=%d", ret);
return ret; break;
} }
} }
msgs.clear();
// clear sendout mesages.
if (i < count) {
srs_warn("clear forwarded msg, total=%d, forwarded=%d, ret=%d", count, i, ret);
} else {
srs_info("clear forwarded msg, total=%d, forwarded=%d, ret=%d", count, i, ret);
}
msgs.erase(msgs.begin(), msgs.begin() + i);
if (ret != ERROR_SUCCESS) {
break;
}
} }
return ret; return ret;