+ if (h->flags & AVIO_FLAG_READ) {
+#ifdef _WIN32
+ /* recvfrom() is not a cancellation point for win32, so we shutdown
+ * the socket and abort pending IO, subsequent recvfrom() calls
+ * will fail with WSAESHUTDOWN causing the thread to exit. */
+ shutdown(s->udp_fd, SD_RECEIVE);
+ CancelIoEx((HANDLE)(SOCKET)s->udp_fd, NULL);
+#else