diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c
index 8500b07ffbdafc3b0f9519f9ac0cb9b9f887d408..2e6fc0e94192d5b7a911af7154f8959379f1b3a7 100644
--- a/lib/ngtcp2_conn.c
+++ b/lib/ngtcp2_conn.c
@@ -7116,6 +7116,12 @@ ssize_t ngtcp2_conn_client_write_handshake(ngtcp2_conn *conn, uint8_t *dest,
       early_datalen =
           ngtcp2_min(early_datalen, conn->tx.max_offset - conn->tx.offset) +
           NGTCP2_STREAM_OVERHEAD;
+
+      if (flags & NGTCP2_WRITE_STREAM_FLAG_MORE) {
+        wflags |= NGTCP2_WRITE_PKT_FLAG_STREAM_MORE;
+      }
+    } else {
+      strm = NULL;
     }
   }
 
@@ -7144,9 +7150,6 @@ ssize_t ngtcp2_conn_client_write_handshake(ngtcp2_conn *conn, uint8_t *dest,
   if (spktlen && was_client_initial) {
     wflags |= NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING;
   }
-  if (flags & NGTCP2_WRITE_STREAM_FLAG_MORE) {
-    wflags |= NGTCP2_WRITE_PKT_FLAG_STREAM_MORE;
-  }
 
   cwnd = conn_cwnd_left(conn);
 
@@ -7855,10 +7858,10 @@ ssize_t ngtcp2_conn_writev_stream(ngtcp2_conn *conn, ngtcp2_path *path,
     if (strm->flags & NGTCP2_STRM_FLAG_SHUT_WR) {
       return NGTCP2_ERR_STREAM_SHUT_WR;
     }
-  }
 
-  if (flags & NGTCP2_WRITE_STREAM_FLAG_MORE) {
-    wflags |= NGTCP2_WRITE_PKT_FLAG_STREAM_MORE;
+    if (flags & NGTCP2_WRITE_STREAM_FLAG_MORE) {
+      wflags |= NGTCP2_WRITE_PKT_FLAG_STREAM_MORE;
+    }
   }
 
   cwnd = conn_cwnd_left(conn);