diff --git a/src/core/iomgr/tcp_server_windows.c b/src/core/iomgr/tcp_server_windows.c
index dfd56f9c40222c6923a49382040ce8f8cc3aa25e..e6e1d1499e5ece0ec2894d33565bd5ee0d702002 100644
--- a/src/core/iomgr/tcp_server_windows.c
+++ b/src/core/iomgr/tcp_server_windows.c
@@ -243,6 +243,9 @@ static void on_accept(void *arg, int from_iocp) {
   SOCKET sock = sp->new_socket;
   grpc_winsocket_callback_info *info = &sp->socket->read_info;
   grpc_endpoint *ep = NULL;
+  DWORD transfered_bytes;
+  DWORD flags;
+  BOOL wsa_success;
 
   /* The general mechanism for shutting down is to queue abortion calls. While
      this is necessary in the read/write case, it's useless for the accept
@@ -251,9 +254,8 @@ static void on_accept(void *arg, int from_iocp) {
 
   /* The IOCP notified us of a completed operation. Let's grab the results,
       and act accordingly. */
-  DWORD transfered_bytes = 0;
-  DWORD flags;
-  BOOL wsa_success = WSAGetOverlappedResult(sock, &info->overlapped,
+  transfered_bytes = 0;
+  wsa_success = WSAGetOverlappedResult(sock, &info->overlapped,
                                             &transfered_bytes, FALSE, &flags);
   if (!wsa_success) {
     if (sp->shutting_down) {