diff --git a/examples/h09client.cc b/examples/h09client.cc
index 19b3fbea42f20a624e9eee94b621a233ed2348e7..5fbfc0f702e15abb1343f1978f4f1e22e3953446 100644
--- a/examples/h09client.cc
+++ b/examples/h09client.cc
@@ -510,7 +510,7 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id,
                              uint64_t offset, uint64_t datalen, void *user_data,
                              void *stream_user_data) {
   auto c = static_cast<Client *>(user_data);
-  if (c->acked_stream_data_offset(stream_id, datalen) != 0) {
+  if (c->acked_stream_data_offset(stream_id, offset, datalen) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
@@ -1651,12 +1651,13 @@ int Client::recv_stream_data(uint32_t flags, int64_t stream_id,
   return 0;
 }
 
-int Client::acked_stream_data_offset(int64_t stream_id, uint64_t datalen) {
+int Client::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                                     uint64_t datalen) {
   auto it = streams_.find(stream_id);
   assert(it != std::end(streams_));
   auto &stream = (*it).second;
-  assert(static_cast<uint64_t>(stream->reqbuf.end - stream->reqbuf.begin) <=
-         datalen);
+  assert(static_cast<uint64_t>(stream->reqbuf.end - stream->reqbuf.begin) >=
+         offset + datalen);
   return 0;
 }
 
diff --git a/examples/h09client.h b/examples/h09client.h
index 08658387f50ec823436b37d653322dae426fbee0..3181e0897a2536527165bc181855f2bf7dd99c5c 100644
--- a/examples/h09client.h
+++ b/examples/h09client.h
@@ -266,7 +266,8 @@ public:
   int submit_http_request(Stream *stream);
   int recv_stream_data(uint32_t flags, int64_t stream_id, const uint8_t *data,
                        size_t datalen);
-  int acked_stream_data_offset(int64_t stream_id, uint64_t datalen);
+  int acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                               uint64_t datalen);
   int extend_max_stream_data(int64_t stream_id, uint64_t max_data);
 
   void reset_idle_timer();