diff --git a/README.md b/README.md
index 09607a07e..3e94c13f3 100755
--- a/README.md
+++ b/README.md
@@ -228,8 +228,9 @@ Supported operating systems and hardware:
* 2013-10-17, Created.
## History
-* v1.0, 2014-05-25, fix [#84](https://github.com/winlinvip/simple-rtmp-server/issues/84), unpublish when edge disconnect. 0.9.119
-* v1.0, 2014-05-25, fix [#89](https://github.com/winlinvip/simple-rtmp-server/issues/89), config to /dev/null to disable ffmpeg log. 0.9.117
+* v1.0, 2014-05-27, fix [#87](https://github.com/winlinvip/simple-rtmp-server/issues/87), add source id for full trackable log. 0.9.120
+* v1.0, 2014-05-27, fix [#84](https://github.com/winlinvip/simple-rtmp-server/issues/84), unpublish when edge disconnect. 0.9.119
+* v1.0, 2014-05-27, fix [#89](https://github.com/winlinvip/simple-rtmp-server/issues/89), config to /dev/null to disable ffmpeg log. 0.9.117
* v1.0, 2014-05-25, fix [#76](https://github.com/winlinvip/simple-rtmp-server/issues/76), allow edge vhost to add or remove. 0.9.114
* v1.0, 2014-05-24, Johnny contribute [ossrs.net](http://ossrs.net). karthikeyan start to translate wiki to English.
* v1.0, 2014-05-22, fix [#78](https://github.com/winlinvip/simple-rtmp-server/issues/78), st joinable thread must be stop by other threads, 0.9.113
diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp
index cd368b98c..b4c9ddb94 100644
--- a/trunk/src/app/srs_app_rtmp_conn.cpp
+++ b/trunk/src/app/srs_app_rtmp_conn.cpp
@@ -571,7 +571,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
// when edge, ignore the publish event, directly proxy it.
- if (vhost_is_edge) {
+ if (!vhost_is_edge) {
// notify the hls to prepare when publish start.
if ((ret = source->on_publish()) != ERROR_SUCCESS) {
srs_error("fmle hls on_publish failed. ret=%d", ret);
@@ -650,7 +650,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
// when edge, ignore the publish event, directly proxy it.
- if (vhost_is_edge) {
+ if (!vhost_is_edge) {
// notify the hls to prepare when publish start.
if ((ret = source->on_publish()) != ERROR_SUCCESS) {
srs_error("flash hls on_publish failed. ret=%d", ret);
diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp
index 6a8481f5c..43ea18ff5 100644
--- a/trunk/src/app/srs_app_server.cpp
+++ b/trunk/src/app/srs_app_server.cpp
@@ -176,7 +176,7 @@ int SrsListener::cycle()
if(client_stfd == NULL){
// ignore error.
- srs_warn("ignore accept thread stoppped for accept client error");
+ srs_error("ignore accept thread stoppped for accept client error");
return ret;
}
srs_verbose("get a client. fd=%d", st_netfd_fileno(client_stfd));
diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp
index 0c96a7a6d..e8e50a5c4 100644
--- a/trunk/src/app/srs_app_source.cpp
+++ b/trunk/src/app/srs_app_source.cpp
@@ -248,6 +248,7 @@ SrsConsumer::SrsConsumer(SrsSource* _source)
paused = false;
jitter = new SrsRtmpJitter();
queue = new SrsMessageQueue();
+ should_update_source_id = false;
}
SrsConsumer::~SrsConsumer()
@@ -262,6 +263,11 @@ void SrsConsumer::set_queue_size(double queue_size)
queue->set_queue_size(queue_size);
}
+void SrsConsumer::update_source_id()
+{
+ should_update_source_id = true;
+}
+
int SrsConsumer::get_time()
{
return jitter->get_time();
@@ -287,6 +293,11 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* msg, int tba, int tbv)
int SrsConsumer::get_packets(int max_count, SrsSharedPtrMessage**& pmsgs, int& count)
{
+ if (should_update_source_id) {
+ srs_trace("update source_id=%d", source->source_id());
+ should_update_source_id = false;
+ }
+
// paused, return nothing.
if (paused) {
return ERROR_SUCCESS;
@@ -802,6 +813,13 @@ int SrsSource::on_source_id_changed(int id)
_source_id = id;
+ // notice all consumer
+ std::vector::iterator it;
+ for (it = consumers.begin(); it != consumers.end(); ++it) {
+ SrsConsumer* consumer = *it;
+ consumer->update_source_id();
+ }
+
return ret;
}
diff --git a/trunk/src/app/srs_app_source.hpp b/trunk/src/app/srs_app_source.hpp
index 48a454223..fce1c7bc8 100644
--- a/trunk/src/app/srs_app_source.hpp
+++ b/trunk/src/app/srs_app_source.hpp
@@ -134,11 +134,20 @@ private:
SrsSource* source;
SrsMessageQueue* queue;
bool paused;
+ // when source id changed, notice all consumers
+ bool should_update_source_id;
public:
SrsConsumer(SrsSource* _source);
virtual ~SrsConsumer();
public:
+ /**
+ * set the size of queue.
+ */
virtual void set_queue_size(double queue_size);
+ /**
+ * when source id changed, notice client to print.
+ */
+ virtual void update_source_id();
public:
/**
* get current client time, the last packet time.
diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp
index 39304e46d..94d343860 100644
--- a/trunk/src/core/srs_core.hpp
+++ b/trunk/src/core/srs_core.hpp
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version
#define VERSION_MAJOR "0"
#define VERSION_MINOR "9"
-#define VERSION_REVISION "119"
+#define VERSION_REVISION "120"
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
// server info.
#define RTMP_SIG_SRS_KEY "SRS"