diff --git a/doc/APIchanges b/doc/APIchanges
index 018481522496aa06088ad9dbbe34134bac4afb47..76993658794e5cf128ae445bf592a8d77d540ac3 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,12 @@ libavutil:     2017-10-21
 
 API changes, most recent first:
 
+2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h
+  Explicitly make avformat_network_init() and avformat_network_deinit() optional.
+  If these are not called, network initialization and deinitialization is
+  automatic, and unlike in older versions, fully supported, unless libavformat
+  is linked to ancient GnuTLS and OpenSSL.
+
 2018-01-xx - xxxxxxx - lavf 58.4.100 - avformat.h
   Deprecate AVStream.recommended_encoder_configuration. It was useful only for
   FFserver, which has been removed.
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 8556f80372af79d14ced7809fba02772b4144652..b0387214c53f7dcaf7b033965ec56e1009523c61 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1998,17 +1998,24 @@ void av_register_input_format(AVInputFormat *format);
 void av_register_output_format(AVOutputFormat *format);
 
 /**
- * Do global initialization of network components. This is optional,
- * but recommended, since it avoids the overhead of implicitly
- * doing the setup for each session.
+ * Do global initialization of network libraries. This is optional,
+ * and not recommended anymore.
  *
- * Calling this function will become mandatory if using network
- * protocols at some major version bump.
+ * This functions only exists to work around thread-safety issues
+ * with older GnuTLS or OpenSSL libraries. If libavformat is linked
+ * to newer versions of those libraries, or if you do not use them,
+ * calling this function is unnecessary. Otherwise, you need to call
+ * this function before any other threads using them are started.
+ *
+ * This function will be deprecated once support for older GnuTLS and
+ * OpenSSL libraries is removed, and this function has no purpose
+ * anymore.
  */
 int avformat_network_init(void);
 
 /**
- * Undo the initialization done by avformat_network_init.
+ * Undo the initialization done by avformat_network_init. Call it only
+ * once for each time you called avformat_network_init.
  */
 int avformat_network_deinit(void);
 
diff --git a/libavformat/network.c b/libavformat/network.c
index e9eb4b443a0e692687db1597be66613aadb90681..d5c82e9ab9ba83645c97a13d4bc2857dea1b0775 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -54,20 +54,11 @@ void ff_tls_deinit(void)
 #endif
 }
 
-int ff_network_inited_globally;
-
 int ff_network_init(void)
 {
 #if HAVE_WINSOCK2_H
     WSADATA wsaData;
-#endif
 
-    if (!ff_network_inited_globally)
-        av_log(NULL, AV_LOG_WARNING, "Using network protocols without global "
-                                     "network initialization. Please use "
-                                     "avformat_network_init(), this will "
-                                     "become mandatory later.\n");
-#if HAVE_WINSOCK2_H
     if (WSAStartup(MAKEWORD(1,1), &wsaData))
         return 0;
 #endif
diff --git a/libavformat/network.h b/libavformat/network.h
index 3c0f8732799fe4809889981fa8a9a8c1d0e9de4b..e3fda4d5e2da1975a99e636caa5d6cd3671443f1 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -75,7 +75,6 @@ int ff_neterrno(void);
 
 int ff_socket_nonblock(int socket, int enable);
 
-extern int ff_network_inited_globally;
 int ff_network_init(void);
 void ff_network_close(void);
 
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 00226395738ad66e7c7c791630f8d33d3ac1aa6e..3d733417e19dfa4f0846db09e0d39c98eefc01c8 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4885,7 +4885,6 @@ int avformat_network_init(void)
 {
 #if CONFIG_NETWORK
     int ret;
-    ff_network_inited_globally = 1;
     if ((ret = ff_network_init()) < 0)
         return ret;
     if ((ret = ff_tls_init()) < 0)
@@ -4899,7 +4898,6 @@ int avformat_network_deinit(void)
 #if CONFIG_NETWORK
     ff_network_close();
     ff_tls_deinit();
-    ff_network_inited_globally = 0;
 #endif
     return 0;
 }
diff --git a/libavformat/version.h b/libavformat/version.h
index d566e255e53d387baa63aa67fd90871b142a8199..87758b027ce878ee48d4e9a570c5f2d052995474 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
 // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
 // Also please add any ticket numbers that you believe might be affected here
 #define LIBAVFORMAT_VERSION_MAJOR  58
-#define LIBAVFORMAT_VERSION_MINOR   4
+#define LIBAVFORMAT_VERSION_MINOR   5
 #define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \