diff --git a/lib/http.c b/lib/http.c
index b9e8047..09ab570 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -3056,8 +3056,8 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
           break;
         case 101:
           /* Switching Protocols */
+          infof(data, "Received 101\n");
           if(k->upgr101 == UPGR101_REQUESTED) {
-            infof(data, "Received 101\n");
             k->upgr101 = UPGR101_RECEIVED;
 
             /* switch to http2 now. The bytes after response headers
@@ -3067,6 +3067,14 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
               return result;
             *nread = 0;
           }
+          else {
+            const char* ptr = Curl_checkheaders(conn, "Upgrade");
+            if(ptr && Curl_compareheader(ptr, "Upgrade:", "websocket")) {
+              infof(data, "Upgrade: Websocket\n");
+              k->keepon |= KEEP_SEND;
+              conn->writesockfd = conn->sockfd;
+            }
+          }
           break;
         default:
           break;

