diff --git a/trunk/configure b/trunk/configure
index bc525c891..53fa3152c 100755
--- a/trunk/configure
+++ b/trunk/configure
@@ -168,7 +168,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
MODULE_ID="APP"
MODULE_DEPENDS=("CORE" "KERNEL" "PROTOCOL")
ModuleLibIncs=(${LibSTRoot} ${LibHttpParserRoot} ${SRS_OBJS_DIR})
- MODULE_FILES=("srs_app_server" "srs_app_conn" "srs_app_rtmp_conn" "srs_app_st_socket" "srs_app_source"
+ MODULE_FILES=("srs_app_server" "srs_app_conn" "srs_app_rtmp_conn" "srs_app_source"
"srs_app_refer" "srs_app_hls" "srs_app_forward" "srs_app_encoder"
"srs_app_thread" "srs_app_bandwidth" "srs_app_st" "srs_app_log" "srs_app_config"
"srs_app_pithy_print" "srs_app_reload" "srs_app_http_api" "srs_app_http_conn" "srs_app_http_hooks"
diff --git a/trunk/ide/srs_upp/srs_upp.upp b/trunk/ide/srs_upp/srs_upp.upp
index b8eeba9dd..e06c05bb9 100755
--- a/trunk/ide/srs_upp/srs_upp.upp
+++ b/trunk/ide/srs_upp/srs_upp.upp
@@ -131,8 +131,6 @@ file
../../src/app/srs_app_server.cpp,
../../src/app/srs_app_st.hpp,
../../src/app/srs_app_st.cpp,
- ../../src/app/srs_app_st_socket.hpp,
- ../../src/app/srs_app_st_socket.cpp,
../../src/app/srs_app_statistic.hpp,
../../src/app/srs_app_statistic.cpp,
../../src/app/srs_app_source.hpp,
diff --git a/trunk/ide/srs_vs2010/srs.vcxproj b/trunk/ide/srs_vs2010/srs.vcxproj
index b2d0fea37..98b514de1 100755
--- a/trunk/ide/srs_vs2010/srs.vcxproj
+++ b/trunk/ide/srs_vs2010/srs.vcxproj
@@ -95,7 +95,6 @@
-
@@ -176,7 +175,6 @@
-
diff --git a/trunk/ide/srs_vs2010/srs.vcxproj.filters b/trunk/ide/srs_vs2010/srs.vcxproj.filters
index 568d30380..8cff84e3f 100755
--- a/trunk/ide/srs_vs2010/srs.vcxproj.filters
+++ b/trunk/ide/srs_vs2010/srs.vcxproj.filters
@@ -103,9 +103,6 @@
srs
-
- srs
-
srs
@@ -327,9 +324,6 @@
srs
-
- srs
-
srs
diff --git a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj
index 490ee5273..1307b19e5 100644
--- a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj
+++ b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj
@@ -63,7 +63,6 @@
3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232841AAE81D900CE8F6C /* srs_app_security.cpp */; };
3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232861AAE81D900CE8F6C /* srs_app_server.cpp */; };
3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */; };
- 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */; };
3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */; };
3C1232B51AAE81D900CE8F6C /* srs_app_statistic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */; };
3C1232B61AAE81D900CE8F6C /* srs_app_thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232901AAE81D900CE8F6C /* srs_app_thread.cpp */; };
@@ -235,8 +234,6 @@
3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_server.hpp; path = ../../../src/app/srs_app_server.hpp; sourceTree = ""; };
3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_source.cpp; path = ../../../src/app/srs_app_source.cpp; sourceTree = ""; };
3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_source.hpp; path = ../../../src/app/srs_app_source.hpp; sourceTree = ""; };
- 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st_socket.cpp; path = ../../../src/app/srs_app_st_socket.cpp; sourceTree = ""; };
- 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st_socket.hpp; path = ../../../src/app/srs_app_st_socket.hpp; sourceTree = ""; };
3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st.cpp; path = ../../../src/app/srs_app_st.cpp; sourceTree = ""; };
3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st.hpp; path = ../../../src/app/srs_app_st.hpp; sourceTree = ""; };
3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_statistic.cpp; path = ../../../src/app/srs_app_statistic.cpp; sourceTree = ""; };
@@ -582,8 +579,6 @@
3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */,
3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */,
3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */,
- 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */,
- 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */,
3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */,
3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */,
3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */,
@@ -901,7 +896,6 @@
3C663F121AB0155100286D8B /* srs_detect_rtmp.c in Sources */,
3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */,
3C689F9F1AB6AAC800C9CEEE /* sched.c in Sources */,
- 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */,
3C1232061AAE812C00CE8F6C /* srs_main_server.cpp in Sources */,
3C1232281AAE814D00CE8F6C /* srs_kernel_mp3.cpp in Sources */,
3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */,
diff --git a/trunk/src/app/srs_app_caster_flv.cpp b/trunk/src/app/srs_app_caster_flv.cpp
index 2f7112d69..1a05c8714 100644
--- a/trunk/src/app/srs_app_caster_flv.cpp
+++ b/trunk/src/app/srs_app_caster_flv.cpp
@@ -38,7 +38,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_edge.cpp b/trunk/src/app/srs_app_edge.cpp
index 86f060539..ef57a237b 100644
--- a/trunk/src/app/srs_app_edge.cpp
+++ b/trunk/src/app/srs_app_edge.cpp
@@ -35,7 +35,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_forward.cpp b/trunk/src/app/srs_app_forward.cpp
index 673c191d2..eab350a5c 100644
--- a/trunk/src/app/srs_app_forward.cpp
+++ b/trunk/src/app/srs_app_forward.cpp
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
using namespace std;
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp
index 910c6fb59..b21fadedc 100644
--- a/trunk/src/app/srs_app_http_api.cpp
+++ b/trunk/src/app/srs_app_http_api.cpp
@@ -30,7 +30,7 @@ using namespace std;
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_http_client.cpp b/trunk/src/app/srs_app_http_client.cpp
index 07c8cfe43..23ef1f3af 100644
--- a/trunk/src/app/srs_app_http_client.cpp
+++ b/trunk/src/app/srs_app_http_client.cpp
@@ -31,7 +31,7 @@ using namespace std;
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_http_conn.cpp b/trunk/src/app/srs_app_http_conn.cpp
index 9a04a0cc2..7e38341e0 100644
--- a/trunk/src/app/srs_app_http_conn.cpp
+++ b/trunk/src/app/srs_app_http_conn.cpp
@@ -37,7 +37,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_http_hooks.cpp b/trunk/src/app/srs_app_http_hooks.cpp
index ea3908814..3c1eda3ea 100644
--- a/trunk/src/app/srs_app_http_hooks.cpp
+++ b/trunk/src/app/srs_app_http_hooks.cpp
@@ -30,7 +30,7 @@ using namespace std;
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_mpegts_udp.cpp b/trunk/src/app/srs_app_mpegts_udp.cpp
index 21c824e5e..c9d5f342b 100644
--- a/trunk/src/app/srs_app_mpegts_udp.cpp
+++ b/trunk/src/app/srs_app_mpegts_udp.cpp
@@ -43,7 +43,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp
index 362d69d35..a199a17f7 100644
--- a/trunk/src/app/srs_app_rtmp_conn.cpp
+++ b/trunk/src/app/srs_app_rtmp_conn.cpp
@@ -42,7 +42,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_rtsp.cpp b/trunk/src/app/srs_app_rtsp.cpp
index cad3a8546..f480b8309 100644
--- a/trunk/src/app/srs_app_rtsp.cpp
+++ b/trunk/src/app/srs_app_rtsp.cpp
@@ -29,7 +29,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_app_st.cpp b/trunk/src/app/srs_app_st.cpp
index 453560795..be57af3eb 100644
--- a/trunk/src/app/srs_app_st.cpp
+++ b/trunk/src/app/srs_app_st.cpp
@@ -26,6 +26,162 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
+SrsStSocket::SrsStSocket(st_netfd_t client_stfd)
+{
+ stfd = client_stfd;
+ send_timeout = recv_timeout = ST_UTIME_NO_TIMEOUT;
+ recv_bytes = send_bytes = 0;
+}
+
+SrsStSocket::~SrsStSocket()
+{
+}
+
+bool SrsStSocket::is_never_timeout(int64_t timeout_us)
+{
+ return timeout_us == (int64_t)ST_UTIME_NO_TIMEOUT;
+}
+
+void SrsStSocket::set_recv_timeout(int64_t timeout_us)
+{
+ recv_timeout = timeout_us;
+}
+
+int64_t SrsStSocket::get_recv_timeout()
+{
+ return recv_timeout;
+}
+
+void SrsStSocket::set_send_timeout(int64_t timeout_us)
+{
+ send_timeout = timeout_us;
+}
+
+int64_t SrsStSocket::get_send_timeout()
+{
+ return send_timeout;
+}
+
+int64_t SrsStSocket::get_recv_bytes()
+{
+ return recv_bytes;
+}
+
+int64_t SrsStSocket::get_send_bytes()
+{
+ return send_bytes;
+}
+
+int SrsStSocket::read(void* buf, size_t size, ssize_t* nread)
+{
+ int ret = ERROR_SUCCESS;
+
+ ssize_t nb_read = st_read(stfd, buf, size, recv_timeout);
+ if (nread) {
+ *nread = nb_read;
+ }
+
+ // On success a non-negative integer indicating the number of bytes actually read is returned
+ // (a value of 0 means the network connection is closed or end of file is reached).
+ // Otherwise, a value of -1 is returned and errno is set to indicate the error.
+ if (nb_read <= 0) {
+ // @see https://github.com/simple-rtmp-server/srs/issues/200
+ if (nb_read < 0 && errno == ETIME) {
+ return ERROR_SOCKET_TIMEOUT;
+ }
+
+ if (nb_read == 0) {
+ errno = ECONNRESET;
+ }
+
+ return ERROR_SOCKET_READ;
+ }
+
+ recv_bytes += nb_read;
+
+ return ret;
+}
+
+int SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread)
+{
+ int ret = ERROR_SUCCESS;
+
+ ssize_t nb_read = st_read_fully(stfd, buf, size, recv_timeout);
+ if (nread) {
+ *nread = nb_read;
+ }
+
+ // On success a non-negative integer indicating the number of bytes actually read is returned
+ // (a value less than nbyte means the network connection is closed or end of file is reached)
+ // Otherwise, a value of -1 is returned and errno is set to indicate the error.
+ if (nb_read != (ssize_t)size) {
+ // @see https://github.com/simple-rtmp-server/srs/issues/200
+ if (nb_read < 0 && errno == ETIME) {
+ return ERROR_SOCKET_TIMEOUT;
+ }
+
+ if (nb_read >= 0) {
+ errno = ECONNRESET;
+ }
+
+ return ERROR_SOCKET_READ_FULLY;
+ }
+
+ recv_bytes += nb_read;
+
+ return ret;
+}
+
+int SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite)
+{
+ int ret = ERROR_SUCCESS;
+
+ ssize_t nb_write = st_write(stfd, buf, size, send_timeout);
+ if (nwrite) {
+ *nwrite = nb_write;
+ }
+
+ // On success a non-negative integer equal to nbyte is returned.
+ // Otherwise, a value of -1 is returned and errno is set to indicate the error.
+ if (nb_write <= 0) {
+ // @see https://github.com/simple-rtmp-server/srs/issues/200
+ if (nb_write < 0 && errno == ETIME) {
+ return ERROR_SOCKET_TIMEOUT;
+ }
+
+ return ERROR_SOCKET_WRITE;
+ }
+
+ send_bytes += nb_write;
+
+ return ret;
+}
+
+int SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite)
+{
+ int ret = ERROR_SUCCESS;
+
+ ssize_t nb_write = st_writev(stfd, iov, iov_size, send_timeout);
+ if (nwrite) {
+ *nwrite = nb_write;
+ }
+
+ // On success a non-negative integer equal to nbyte is returned.
+ // Otherwise, a value of -1 is returned and errno is set to indicate the error.
+ if (nb_write <= 0) {
+ // @see https://github.com/simple-rtmp-server/srs/issues/200
+ if (nb_write < 0 && errno == ETIME) {
+ return ERROR_SOCKET_TIMEOUT;
+ }
+
+ return ERROR_SOCKET_WRITE;
+ }
+
+ send_bytes += nb_write;
+
+ return ret;
+}
+
#ifdef __linux__
#include
diff --git a/trunk/src/app/srs_app_st.hpp b/trunk/src/app/srs_app_st.hpp
index 37581e737..ef70cd08e 100644
--- a/trunk/src/app/srs_app_st.hpp
+++ b/trunk/src/app/srs_app_st.hpp
@@ -32,6 +32,45 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
+#include
+#include
+
+/**
+ * the socket provides TCP socket over st,
+ * that is, the sync socket mechanism.
+ */
+class SrsStSocket : public ISrsProtocolReaderWriter
+{
+private:
+ int64_t recv_timeout;
+ int64_t send_timeout;
+ int64_t recv_bytes;
+ int64_t send_bytes;
+ st_netfd_t stfd;
+public:
+ SrsStSocket(st_netfd_t client_stfd);
+ virtual ~SrsStSocket();
+public:
+ virtual bool is_never_timeout(int64_t timeout_us);
+ virtual void set_recv_timeout(int64_t timeout_us);
+ virtual int64_t get_recv_timeout();
+ virtual void set_send_timeout(int64_t timeout_us);
+ virtual int64_t get_send_timeout();
+ virtual int64_t get_recv_bytes();
+ virtual int64_t get_send_bytes();
+public:
+ /**
+ * @param nread, the actual read bytes, ignore if NULL.
+ */
+ virtual int read(void* buf, size_t size, ssize_t* nread);
+ virtual int read_fully(void* buf, size_t size, ssize_t* nread);
+ /**
+ * @param nwrite, the actual write bytes, ignore if NULL.
+ */
+ virtual int write(void* buf, size_t size, ssize_t* nwrite);
+ virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite);
+};
+
// initialize st, requires epoll.
extern int srs_st_init();
diff --git a/trunk/src/app/srs_app_st_socket.cpp b/trunk/src/app/srs_app_st_socket.cpp
deleted file mode 100644
index d4da0369c..000000000
--- a/trunk/src/app/srs_app_st_socket.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2013-2015 SRS(simple-rtmp-server)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include
-
-#include
-
-SrsStSocket::SrsStSocket(st_netfd_t client_stfd)
-{
- stfd = client_stfd;
- send_timeout = recv_timeout = ST_UTIME_NO_TIMEOUT;
- recv_bytes = send_bytes = 0;
-}
-
-SrsStSocket::~SrsStSocket()
-{
-}
-
-bool SrsStSocket::is_never_timeout(int64_t timeout_us)
-{
- return timeout_us == (int64_t)ST_UTIME_NO_TIMEOUT;
-}
-
-void SrsStSocket::set_recv_timeout(int64_t timeout_us)
-{
- recv_timeout = timeout_us;
-}
-
-int64_t SrsStSocket::get_recv_timeout()
-{
- return recv_timeout;
-}
-
-void SrsStSocket::set_send_timeout(int64_t timeout_us)
-{
- send_timeout = timeout_us;
-}
-
-int64_t SrsStSocket::get_send_timeout()
-{
- return send_timeout;
-}
-
-int64_t SrsStSocket::get_recv_bytes()
-{
- return recv_bytes;
-}
-
-int64_t SrsStSocket::get_send_bytes()
-{
- return send_bytes;
-}
-
-int SrsStSocket::read(void* buf, size_t size, ssize_t* nread)
-{
- int ret = ERROR_SUCCESS;
-
- ssize_t nb_read = st_read(stfd, buf, size, recv_timeout);
- if (nread) {
- *nread = nb_read;
- }
-
- // On success a non-negative integer indicating the number of bytes actually read is returned
- // (a value of 0 means the network connection is closed or end of file is reached).
- // Otherwise, a value of -1 is returned and errno is set to indicate the error.
- if (nb_read <= 0) {
- // @see https://github.com/simple-rtmp-server/srs/issues/200
- if (nb_read < 0 && errno == ETIME) {
- return ERROR_SOCKET_TIMEOUT;
- }
-
- if (nb_read == 0) {
- errno = ECONNRESET;
- }
-
- return ERROR_SOCKET_READ;
- }
-
- recv_bytes += nb_read;
-
- return ret;
-}
-
-int SrsStSocket::read_fully(void* buf, size_t size, ssize_t* nread)
-{
- int ret = ERROR_SUCCESS;
-
- ssize_t nb_read = st_read_fully(stfd, buf, size, recv_timeout);
- if (nread) {
- *nread = nb_read;
- }
-
- // On success a non-negative integer indicating the number of bytes actually read is returned
- // (a value less than nbyte means the network connection is closed or end of file is reached)
- // Otherwise, a value of -1 is returned and errno is set to indicate the error.
- if (nb_read != (ssize_t)size) {
- // @see https://github.com/simple-rtmp-server/srs/issues/200
- if (nb_read < 0 && errno == ETIME) {
- return ERROR_SOCKET_TIMEOUT;
- }
-
- if (nb_read >= 0) {
- errno = ECONNRESET;
- }
-
- return ERROR_SOCKET_READ_FULLY;
- }
-
- recv_bytes += nb_read;
-
- return ret;
-}
-
-int SrsStSocket::write(void* buf, size_t size, ssize_t* nwrite)
-{
- int ret = ERROR_SUCCESS;
-
- ssize_t nb_write = st_write(stfd, buf, size, send_timeout);
- if (nwrite) {
- *nwrite = nb_write;
- }
-
- // On success a non-negative integer equal to nbyte is returned.
- // Otherwise, a value of -1 is returned and errno is set to indicate the error.
- if (nb_write <= 0) {
- // @see https://github.com/simple-rtmp-server/srs/issues/200
- if (nb_write < 0 && errno == ETIME) {
- return ERROR_SOCKET_TIMEOUT;
- }
-
- return ERROR_SOCKET_WRITE;
- }
-
- send_bytes += nb_write;
-
- return ret;
-}
-
-int SrsStSocket::writev(const iovec *iov, int iov_size, ssize_t* nwrite)
-{
- int ret = ERROR_SUCCESS;
-
- ssize_t nb_write = st_writev(stfd, iov, iov_size, send_timeout);
- if (nwrite) {
- *nwrite = nb_write;
- }
-
- // On success a non-negative integer equal to nbyte is returned.
- // Otherwise, a value of -1 is returned and errno is set to indicate the error.
- if (nb_write <= 0) {
- // @see https://github.com/simple-rtmp-server/srs/issues/200
- if (nb_write < 0 && errno == ETIME) {
- return ERROR_SOCKET_TIMEOUT;
- }
-
- return ERROR_SOCKET_WRITE;
- }
-
- send_bytes += nb_write;
-
- return ret;
-}
-
-
diff --git a/trunk/src/app/srs_app_st_socket.hpp b/trunk/src/app/srs_app_st_socket.hpp
deleted file mode 100644
index 6e074fb0e..000000000
--- a/trunk/src/app/srs_app_st_socket.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2013-2015 SRS(simple-rtmp-server)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef SRS_APP_ST_SOCKET_HPP
-#define SRS_APP_ST_SOCKET_HPP
-
-/*
-#include
-*/
-
-#include
-
-#include
-#include
-
-/**
-* the socket provides TCP socket over st,
-* that is, the sync socket mechanism.
-*/
-class SrsStSocket : public ISrsProtocolReaderWriter
-{
-private:
- int64_t recv_timeout;
- int64_t send_timeout;
- int64_t recv_bytes;
- int64_t send_bytes;
- st_netfd_t stfd;
-public:
- SrsStSocket(st_netfd_t client_stfd);
- virtual ~SrsStSocket();
-public:
- virtual bool is_never_timeout(int64_t timeout_us);
- virtual void set_recv_timeout(int64_t timeout_us);
- virtual int64_t get_recv_timeout();
- virtual void set_send_timeout(int64_t timeout_us);
- virtual int64_t get_send_timeout();
- virtual int64_t get_recv_bytes();
- virtual int64_t get_send_bytes();
-public:
- /**
- * @param nread, the actual read bytes, ignore if NULL.
- */
- virtual int read(void* buf, size_t size, ssize_t* nread);
- virtual int read_fully(void* buf, size_t size, ssize_t* nread);
- /**
- * @param nwrite, the actual write bytes, ignore if NULL.
- */
- virtual int write(void* buf, size_t size, ssize_t* nwrite);
- virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite);
-};
-
-#endif
diff --git a/trunk/src/main/srs_main_ingest_hls.cpp b/trunk/src/main/srs_main_ingest_hls.cpp
index 0c283b0a6..5f7771140 100644
--- a/trunk/src/main/srs_main_ingest_hls.cpp
+++ b/trunk/src/main/srs_main_ingest_hls.cpp
@@ -42,7 +42,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include