winlin

refine the http request parse. edge retry timeout.

@@ -144,6 +144,11 @@ void SrsEdgeRtmpUpstream::close() @@ -144,6 +144,11 @@ void SrsEdgeRtmpUpstream::close()
144 sdk->close(); 144 sdk->close();
145 } 145 }
146 146
  147 +void SrsEdgeRtmpUpstream::set_recv_timeout(int64_t timeout)
  148 +{
  149 + sdk->set_recv_timeout(timeout);
  150 +}
  151 +
147 void SrsEdgeRtmpUpstream::kbps_sample(const char* label, int64_t age) 152 void SrsEdgeRtmpUpstream::kbps_sample(const char* label, int64_t age)
148 { 153 {
149 sdk->kbps_sample(label, age); 154 sdk->kbps_sample(label, age);
@@ -161,7 +166,7 @@ SrsEdgeIngester::SrsEdgeIngester() @@ -161,7 +166,7 @@ SrsEdgeIngester::SrsEdgeIngester()
161 } 166 }
162 167
163 SrsEdgeIngester::~SrsEdgeIngester() 168 SrsEdgeIngester::~SrsEdgeIngester()
164 -{ 169 +{
165 stop(); 170 stop();
166 171
167 srs_freep(upstream); 172 srs_freep(upstream);
@@ -238,6 +243,9 @@ int SrsEdgeIngester::ingest() @@ -238,6 +243,9 @@ int SrsEdgeIngester::ingest()
238 SrsPithyPrint* pprint = SrsPithyPrint::create_edge(); 243 SrsPithyPrint* pprint = SrsPithyPrint::create_edge();
239 SrsAutoFree(SrsPithyPrint, pprint); 244 SrsAutoFree(SrsPithyPrint, pprint);
240 245
  246 + // set to larger timeout to read av data from origin.
  247 + upstream->set_recv_timeout(SRS_EDGE_INGESTER_TIMEOUT_US);
  248 +
241 while (!pthread->interrupted()) { 249 while (!pthread->interrupted()) {
242 pprint->elapse(); 250 pprint->elapse();
243 251
@@ -409,6 +417,7 @@ void SrsEdgeForwarder::stop() @@ -409,6 +417,7 @@ void SrsEdgeForwarder::stop()
409 } 417 }
410 418
411 #define SYS_MAX_EDGE_SEND_MSGS 128 419 #define SYS_MAX_EDGE_SEND_MSGS 128
  420 +
412 int SrsEdgeForwarder::cycle() 421 int SrsEdgeForwarder::cycle()
413 { 422 {
414 int ret = ERROR_SUCCESS; 423 int ret = ERROR_SUCCESS;
@@ -89,6 +89,8 @@ public: @@ -89,6 +89,8 @@ public:
89 virtual int recv_message(SrsCommonMessage** pmsg) = 0; 89 virtual int recv_message(SrsCommonMessage** pmsg) = 0;
90 virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket) = 0; 90 virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket) = 0;
91 virtual void close() = 0; 91 virtual void close() = 0;
  92 +public:
  93 + virtual void set_recv_timeout(int64_t timeout) = 0;
92 virtual void kbps_sample(const char* label, int64_t age) = 0; 94 virtual void kbps_sample(const char* label, int64_t age) = 0;
93 }; 95 };
94 96
@@ -104,6 +106,8 @@ public: @@ -104,6 +106,8 @@ public:
104 virtual int recv_message(SrsCommonMessage** pmsg); 106 virtual int recv_message(SrsCommonMessage** pmsg);
105 virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket); 107 virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket);
106 virtual void close(); 108 virtual void close();
  109 +public:
  110 + virtual void set_recv_timeout(int64_t timeout);
107 virtual void kbps_sample(const char* label, int64_t age); 111 virtual void kbps_sample(const char* label, int64_t age);
108 }; 112 };
109 113
@@ -830,6 +830,11 @@ SrsRequest* SrsHttpMessage::to_request(string vhost) @@ -830,6 +830,11 @@ SrsRequest* SrsHttpMessage::to_request(string vhost)
830 srs_discovery_tc_url(req->tcUrl, req->schema, req->host, req->vhost, req->app, req->port, req->param); 830 srs_discovery_tc_url(req->tcUrl, req->schema, req->host, req->vhost, req->app, req->port, req->param);
831 req->strip(); 831 req->strip();
832 832
  833 + // reset the host to http request host.
  834 + if (req->host == SRS_CONSTS_RTMP_DEFAULT_VHOST) {
  835 + req->host = _uri->get_host();
  836 + }
  837 +
833 return req; 838 return req;
834 } 839 }
835 840