diff --git a/README.md b/README.md
index b13d78ba5..ec9129ea4 100755
--- a/README.md
+++ b/README.md
@@ -152,6 +152,7 @@ Please select according to languages:
### V3 changes
+* v3.0, 2019-10-04, Disable SO_REUSEPORT if not supported. 3.0.57
* v3.0, 2019-10-04, [3.0 alpha0(3.0.56)][r3.0a0] released. 107946 lines.
* v3.0, 2019-10-04, Support go-oryx rtmplb with [proxy protocol](https://github.com/ossrs/go-oryx/wiki/RtmpProxy). 3.0.56
* v3.0, 2019-10-03, Fix [#775][bug #775], Support SO_REUSEPORT to improve edge performance. 3.0.54
diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp
index 5f020c54b..fd2797f01 100644
--- a/trunk/src/core/srs_core.hpp
+++ b/trunk/src/core/srs_core.hpp
@@ -27,7 +27,7 @@
// The version config.
#define VERSION_MAJOR 3
#define VERSION_MINOR 0
-#define VERSION_REVISION 56
+#define VERSION_REVISION 57
// The macros generated by configure script.
#include
diff --git a/trunk/src/service/srs_service_st.cpp b/trunk/src/service/srs_service_st.cpp
index e4ffe2669..1f6d2266c 100644
--- a/trunk/src/service/srs_service_st.cpp
+++ b/trunk/src/service/srs_service_st.cpp
@@ -112,10 +112,15 @@ srs_error_t srs_fd_reuseaddr(int fd)
srs_error_t srs_fd_reuseport(int fd)
{
+#if defined(SO_REUSEPORT)
int v = 1;
if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &v, sizeof(int)) == -1) {
return srs_error_new(ERROR_SOCKET_SETREUSEADDR, "SO_REUSEPORT fd=%v", fd);
}
+#else
+ #warning "SO_REUSEPORT is not supported by your OS"
+ srs_warn("SO_REUSEPORT is not supported util Linux kernel 3.9");
+#endif
return srs_success;
}