]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Code clean up in common source files.
authorOliver Kurth <okurth@vmware.com>
Mon, 28 Oct 2019 23:12:41 +0000 (16:12 -0700)
committerOliver Kurth <okurth@vmware.com>
Mon, 28 Oct 2019 23:12:41 +0000 (16:12 -0700)
Fix macros so they work in the world of Log Facility newlining.

The Log Facility no longer accepts appending calls into a single
line.  As such, some macros need to be "fixed up".

open-vm-tools/lib/asyncsocket/asyncSocketBase.c
open-vm-tools/lib/asyncsocket/asyncsocket.c
open-vm-tools/lib/include/asyncsocket.h

index 2cffea909ace5475e9689b3759ac5b99147a5f62..33b94a05222b1b578d08e6006c0e35a7425f19af 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2016-2019 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
  * implicitly calls.  We don't log fd as that isn't available at the
  * base class level.
  */
-#define ASOCKLOG_NORECURSION(_level, _asock, _logargs)                  \
-   do {                                                                 \
-      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) {     \
-         Log(ASOCKPREFIX "%d ", (_asock)->id);                          \
-         Log _logargs;                                                  \
-      }                                                                 \
-   } while(0)
 
+/* gcc needs special syntax to handle zero-length variadic arguments */
+#if defined(_MSC_VER)
+#define ASOCKLOG_NORECURSION(_level, _asock, fmt, ...)               \
+   do {                                                              \
+      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) {  \
+         Log(ASOCKPREFIX "%d " fmt, (_asock)->id, __VA_ARGS__);      \
+      }                                                              \
+   } while(0)
+#else
+#define ASOCKLOG_NORECURSION(_level, _asock, fmt, ...)               \
+   do {                                                              \
+      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) {  \
+         Log(ASOCKPREFIX "%d " fmt, (_asock)->id, ##__VA_ARGS__);    \
+      }                                                              \
+   } while(0)
+#endif
 
 /*
  *-----------------------------------------------------------------------------
@@ -125,10 +134,10 @@ AsyncSocketInternalDecRef(AsyncSocket *s, // IN
 
    ASSERT(count >= 0);
    if (UNLIKELY(count == 0)) {
-      ASOCKLOG_NORECURSION(1, s, ("Final release; freeing asock struct\n"));
+      ASOCKLOG_NORECURSION(1, s, "Final release; freeing asock struct\n");
       VT(s)->destroy(s);
    } else {
-      ASOCKLOG_NORECURSION(1, s, ("Release (count now %d)\n", count));
+      ASOCKLOG_NORECURSION(1, s, "Release (count now %d)\n", count);
    }
 }
 
@@ -477,12 +486,12 @@ AsyncSocketHandleError(AsyncSocket *asock,   // IN
    ASSERT(asock);
    asock->errorSeen = TRUE;
    if (asock->errorFn) {
-      ASOCKLOG(3, asock, ("firing error callback (%s)\n",
-                          AsyncSocket_Err2String(asockErr)));
+      ASOCKLOG(3, asock, "firing error callback (%s)\n",
+               AsyncSocket_Err2String(asockErr));
       asock->errorFn(asockErr, asock, asock->errorClientData);
    } else {
-      ASOCKLOG(3, asock, ("no error callback, closing socket (%s)\n",
-                          AsyncSocket_Err2String(asockErr)));
+      ASOCKLOG(3, asock, "no error callback, closing socket (%s)\n",
+               AsyncSocket_Err2String(asockErr));
       AsyncSocket_Close(asock);
    }
 }
@@ -529,7 +538,7 @@ AsyncSocketCheckAndDispatchRecv(AsyncSocket *s,  // IN
 
    if (s->recvPos == s->recvLen || s->recvFireOnPartial) {
       void *recvBuf = s->recvBuf;
-      ASOCKLOG(3, s, ("recv buffer full, calling recvFn\n"));
+      ASOCKLOG(3, s, "recv buffer full, calling recvFn\n");
 
       /*
        * We do this dance in case the handler frees the buffer (so
@@ -544,7 +553,7 @@ AsyncSocketCheckAndDispatchRecv(AsyncSocket *s,  // IN
       s->recvBuf = NULL;
       s->recvFn(recvBuf, s->recvPos, s, s->recvClientData);
       if (s->state == AsyncSocketClosed) {
-         ASOCKLG0(s, ("owner closed connection in recv callback\n"));
+         ASOCKLG0(s, "owner closed connection in recv callback\n");
          *result = ASOCKERR_CLOSED;
          return TRUE;
       } else if (s->recvFn == NULL && s->recvLen == 0) {
@@ -605,22 +614,22 @@ AsyncSocketSetRecvBuf(AsyncSocket *asock,  // IN:
    ASSERT(AsyncSocketIsLocked(asock));
 
    if (!asock->errorFn) {
-      ASOCKWARN(asock, ("%s: no registered error handler!\n", __FUNCTION__));
+      ASOCKWARN(asock, "%s: no registered error handler!\n", __FUNCTION__);
       return ASOCKERR_INVAL;
    }
 
    if (!buf || !cb || len <= 0) {
-      ASOCKWARN(asock, ("Recv called with invalid arguments!\n"));
+      ASOCKWARN(asock, "Recv called with invalid arguments!\n");
       return ASOCKERR_INVAL;
    }
 
    if (AsyncSocketGetState(asock) != AsyncSocketConnected) {
-      ASOCKWARN(asock, ("recv called but state is not connected!\n"));
+      ASOCKWARN(asock, "recv called but state is not connected!\n");
       return ASOCKERR_NOTCONNECTED;
    }
 
    if (asock->recvBuf && asock->recvPos != 0) {
-      ASOCKWARN(asock, ("Recv called -- partially read buffer discarded.\n"));
+      ASOCKWARN(asock, "Recv called -- partially read buffer discarded.\n");
    }
 
    asock->recvBuf = buf;
index 6e6fff0c1371930f0384c6250eb9e0e0d0ddff8f..0d2abaa25798eaf9bd0db3868901167b9be9dd20 100644 (file)
@@ -545,10 +545,22 @@ AsyncTCPSocketHandleError(AsyncTCPSocket *asock, int error)
  *----------------------------------------------------------------------
  */
 
-#define TCPSOCKWARN(a,b) ASOCKWARN(BaseSocket(a), b)
-#define TCPSOCKLOG(a,b,c) ASOCKLOG(a, BaseSocket(b), c)
-#define TCPSOCKLG0(a,b) ASOCKLG0(BaseSocket(a), b)
-
+/* gcc needs special syntax to handle zero-length variadic arguments */
+#if defined(_MSC_VER)
+#define TCPSOCKWARN(a, fmt, ...) \
+   ASOCKWARN(BaseSocket(a), fmt, __VA_ARGS__)
+#define TCPSOCKLOG(_level, a, fmt, ...) \
+   ASOCKLOG(_level, BaseSocket(a), fmt, __VA_ARGS__)
+#define TCPSOCKLG0(a, fmt, ...) \
+   ASOCKLG0(BaseSocket(a), fmt, __VA_ARGS__)
+#else
+#define TCPSOCKWARN(a, fmt, ...) \
+   ASOCKWARN(BaseSocket(a), fmt, ##__VA_ARGS__)
+#define TCPSOCKLOG(_level, a, fmt, ...) \
+   ASOCKLOG(_level, BaseSocket(a), fmt, ##__VA_ARGS__)
+#define TCPSOCKLG0(a, fmt, ...) \
+   ASOCKLG0(BaseSocket(a), fmt, ##__VA_ARGS__)
+#endif
 
 /*
  *----------------------------------------------------------------------------
@@ -671,7 +683,7 @@ AsyncTCPSocketGetAddr(AsyncTCPSocket *asock,             // IN
       *outAddrLen = addrLen;
       return ASOCKERR_SUCCESS;
    } else {
-      TCPSOCKWARN(tempAsock, ("%s: could not locate socket.\n", __FUNCTION__));
+      TCPSOCKWARN(tempAsock, "%s: could not locate socket.\n", __FUNCTION__);
       return ASOCKERR_GENERIC;
    }
 }
@@ -767,15 +779,14 @@ AsyncTCPSocketGetINETIPStr(AsyncSocket *base,   // IN
       char addrBuf[NI_MAXHOST];
 
       if (ipRetStr == NULL) {
-         TCPSOCKWARN(asock, ("%s: Output string is not usable.\n",
-                             __FUNCTION__));
+         TCPSOCKWARN(asock, "%s: Output string is not usable.\n", __FUNCTION__);
          ret = ASOCKERR_INVAL;
       } else if (Posix_GetNameInfo((struct sockaddr *)&addr, addrLen, addrBuf,
                                    sizeof addrBuf, NULL, 0,
                                    NI_NUMERICHOST) == 0) {
          *ipRetStr = Util_SafeStrdup(addrBuf);
       } else {
-         TCPSOCKWARN(asock, ("%s: could not find IP address.\n", __FUNCTION__));
+         TCPSOCKWARN(asock, "%s: could not find IP address.\n", __FUNCTION__);
          ret = ASOCKERR_GENERIC;
       }
    }
@@ -949,9 +960,9 @@ AsyncTCPSocketListenerCreateImpl(
 
       if (asock) {
          TCPSOCKLG0(asock,
-                  ("Created new %s %s listener for (%s)\n",
-                   addr.ss_family == AF_INET ? "IPv4" : "IPv6",
-                   "socket", ipString));
+                    "Created new %s %s listener for (%s)\n",
+                    addr.ss_family == AF_INET ? "IPv4" : "IPv6",
+                    "socket", ipString);
       } else {
          Log(ASOCKPREFIX "Could not create %s listener socket, error %d: %s\n",
              addr.ss_family == AF_INET ? "IPv4" : "IPv6", *outError,
@@ -1459,7 +1470,7 @@ AsyncTCPSocketBind(AsyncTCPSocket *asock,          // IN
    ASSERT(NULL != addr);
 
    port = AsyncTCPSocketGetPortFromAddr(addr);
-   TCPSOCKLG0(asock, ("creating new listening socket on port %d\n", port));
+   TCPSOCKLG0(asock, "creating new listening socket on port %d\n", port);
 
 #ifndef _WIN32
    /*
@@ -1611,8 +1622,7 @@ AsyncTCPSocketListen(AsyncTCPSocket *asock,             // IN
                                    AsyncTCPSocketAcceptCallback);
 
    if (pollStatus != VMWARE_STATUS_SUCCESS) {
-      TCPSOCKWARN(asock,
-                ("could not register accept callback!\n"));
+      TCPSOCKWARN(asock, "could not register accept callback!\n");
       error = ASOCKERR_POLL;
       AsyncTCPSocketUnlock(asock);
       goto error;
@@ -1949,8 +1959,8 @@ AsyncTCPSocketConnectErrorCheck(void *data)  // IN: AsyncTCPSocket *
       } else {
          asock->genericErrno = ASOCK_LASTERROR();
       }
-      TCPSOCKLG0(asock, ("Connection failed: %s\n",
-                       Err_Errno2String(asock->genericErrno)));
+      TCPSOCKLG0(asock, "Connection failed: %s\n",
+                 Err_Errno2String(asock->genericErrno));
       /* Remove connect callback. */
       removed = AsyncTCPSocketPollRemove(asock, TRUE, POLL_FLAG_WRITE,
                                       asock->internalConnectFn);
@@ -2143,7 +2153,7 @@ AsyncTCPSocketConnect(struct sockaddr_storage *addr,         // IN
       if (ASOCK_LASTERROR() == ASOCK_ECONNECTING) {
          ASSERT(!(vmx86_server && addr->ss_family == AF_UNIX));
          TCPSOCKLOG(1, asock,
-                    ("registering write callback for socket connect\n"));
+                    "registering write callback for socket connect\n");
          pollStatus = AsyncTCPSocketPollAdd(asock, TRUE, POLL_FLAG_WRITE,
                                             AsyncTCPSocketConnectCallback);
          if (vmx86_win32 && pollStatus == VMWARE_STATUS_SUCCESS &&
@@ -2158,7 +2168,7 @@ AsyncTCPSocketConnect(struct sockaddr_storage *addr,         // IN
             if (pollStatus == VMWARE_STATUS_SUCCESS) {
                asock->internalConnectFn = AsyncTCPSocketConnectCallback;
             } else {
-               TCPSOCKLG0(asock, ("failed to register periodic error check\n"));
+               TCPSOCKLG0(asock, "failed to register periodic error check\n");
                AsyncTCPSocketPollRemove(asock, TRUE, POLL_FLAG_WRITE,
                                         AsyncTCPSocketConnectCallback);
             }
@@ -2178,13 +2188,13 @@ AsyncTCPSocketConnect(struct sockaddr_storage *addr,         // IN
       }
    } else {
       TCPSOCKLOG(2, asock,
-               ("socket connected, registering RTime callback for connect\n"));
+                 "socket connected, registering RTime callback for connect\n");
       pollStatus = AsyncTCPSocketPollAdd(asock, FALSE, 0,
                                          AsyncTCPSocketConnectCallback, 0);
    }
 
    if (pollStatus != VMWARE_STATUS_SUCCESS) {
-      TCPSOCKWARN(asock, ("failed to register callback in connect!\n"));
+      TCPSOCKWARN(asock, "failed to register callback in connect!\n");
       error = ASOCKERR_POLL;
       goto errorHaveAsock;
    }
@@ -2304,7 +2314,7 @@ AsyncTCPSocketAttachToSSLSock(SSLSock sslSock,                   // IN
 
    /* From now on socket is ours. */
    SSL_SetCloseOnShutdownFlag(sslSock);
-   TCPSOCKLOG(1, s, ("new asock id %u attached to fd %d\n", s->base.id, s->fd));
+   TCPSOCKLOG(1, s, "new asock id %u attached to fd %d\n", s->base.id, s->fd);
 
    return s;
 
@@ -2449,14 +2459,14 @@ AsyncTCPSocketRegisterRecvCb(AsyncTCPSocket *asock) // IN:
        * Register the Poll callback
        */
 
-      TCPSOCKLOG(3, asock, ("installing recv periodic poll callback\n"));
+      TCPSOCKLOG(3, asock, "installing recv periodic poll callback\n");
 
       pollStatus = AsyncTCPSocketPollAdd(asock, TRUE,
                                       POLL_FLAG_READ | POLL_FLAG_PERIODIC,
                                       asock->internalRecvFn);
 
       if (pollStatus != VMWARE_STATUS_SUCCESS) {
-         TCPSOCKWARN(asock, ("failed to install recv callback!\n"));
+         TCPSOCKWARN(asock, "failed to install recv callback!\n");
          retVal = ASOCKERR_POLL;
          goto out;
       }
@@ -2464,7 +2474,7 @@ AsyncTCPSocketRegisterRecvCb(AsyncTCPSocket *asock) // IN:
    }
 
    if (AsyncTCPSocketHasDataPending(asock) && !asock->inRecvLoop) {
-      TCPSOCKLOG(0, asock, ("installing recv RTime poll callback\n"));
+      TCPSOCKLOG(0, asock, "installing recv RTime poll callback\n");
       if (AsyncTCPSocketPollAdd(asock, FALSE, 0, asock->internalRecvFn, 0) !=
           VMWARE_STATUS_SUCCESS) {
          retVal = ASOCKERR_POLL;
@@ -2535,7 +2545,7 @@ AsyncTCPSocketRecv(AsyncSocket *base,   // IN:
    int retVal;
 
    if (!asock->base.errorFn) {
-      TCPSOCKWARN(asock, ("%s: no registered error handler!\n", __FUNCTION__));
+      TCPSOCKWARN(asock, "%s: no registered error handler!\n", __FUNCTION__);
       return ASOCKERR_INVAL;
    }
 
@@ -2554,12 +2564,12 @@ AsyncTCPSocketRecv(AsyncSocket *base,   // IN:
    ASSERT(AsyncTCPSocketIsLocked(asock));
 
    if (AsyncTCPSocketGetState(asock) != AsyncSocketConnected) {
-      TCPSOCKWARN(asock, ("recv called but state is not connected!\n"));
+      TCPSOCKWARN(asock, "recv called but state is not connected!\n");
       return ASOCKERR_NOTCONNECTED;
    }
 
    if (asock->inBlockingRecv && !asock->inRecvLoop) {
-      TCPSOCKWARN(asock, ("Recv called while a blocking recv is pending.\n"));
+      TCPSOCKWARN(asock, "Recv called while a blocking recv is pending.\n");
       return ASOCKERR_INVAL;
    }
 
@@ -2602,7 +2612,7 @@ AsyncTCPSocketRecvPassedFd(AsyncSocket *base,   // IN/OUT: socket
    int err;
 
    if (!asock->base.errorFn) {
-      TCPSOCKWARN(asock, ("%s: no registered error handler!\n", __FUNCTION__));
+      TCPSOCKWARN(asock, "%s: no registered error handler!\n", __FUNCTION__);
 
       return ASOCKERR_INVAL;
    }
@@ -2733,8 +2743,8 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock,     // IN:
          /*
           * No sockets were ready within the specified time.
           */
-         TCPSOCKLG0(warnSock, ("%s: Timeout waiting for a ready socket.\n",
-                      __FUNCTION__));
+         TCPSOCKLG0(warnSock, "%s: Timeout waiting for a ready socket.\n",
+                    __FUNCTION__);
          return ASOCKERR_TIMEOUT;
 
       case -1: {
@@ -2746,8 +2756,8 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock,     // IN:
              * XXX: update the timeout by the amount we had previously waited.
              */
 
-            TCPSOCKLG0(warnSock, ("%s: Socket interrupted by a signal.\n",
-                         __FUNCTION__));
+            TCPSOCKLG0(warnSock, "%s: Socket interrupted by a signal.\n",
+                       __FUNCTION__);
             continue;
          }
 
@@ -2759,8 +2769,8 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock,     // IN:
             }
          }
 
-         TCPSOCKLG0(warnSock, ("%s: Failed with error %d: %s\n", __FUNCTION__,
-                   sysErr, Err_Errno2String(sysErr)));
+         TCPSOCKLG0(warnSock, "%s: Failed with error %d: %s\n", __FUNCTION__,
+                    sysErr, Err_Errno2String(sysErr));
          return ASOCKERR_GENERIC;
       }
       default: {
@@ -2791,16 +2801,15 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock,     // IN:
                   if (sockErr) {
                      asock[i]->genericErrno = sockErr;
                      TCPSOCKLG0(asock[i],
-                              ("%s: Socket error lookup returned %d: %s\n",
-                               __FUNCTION__, sockErr,
-                               Err_Errno2String(sockErr)));
+                                "%s: Socket error lookup returned %d: %s\n",
+                                __FUNCTION__, sockErr,
+                                Err_Errno2String(sockErr));
                   }
                } else {
                   sysErr = ASOCK_LASTERROR();
                   asock[i]->genericErrno = sysErr;
-                  TCPSOCKLG0(asock[i],
-                           ("%s: Last socket error %d: %s\n",
-                            __FUNCTION__, sysErr, Err_Errno2String(sysErr)));
+                  TCPSOCKLG0(asock[i], "%s: Last socket error %d: %s\n",
+                             __FUNCTION__, sysErr, Err_Errno2String(sysErr));
                }
             }
 
@@ -2828,8 +2837,8 @@ AsyncTCPSocketPollWork(AsyncTCPSocket **asock,     // IN:
          }
 #endif
 
-         TCPSOCKWARN(warnSock, ("%s: Failed to return a ready socket.\n",
-                         __FUNCTION__));
+         TCPSOCKWARN(warnSock, "%s: Failed to return a ready socket.\n",
+                     __FUNCTION__);
          return ASOCKERR_GENERIC;
       }
       }
@@ -2876,7 +2885,7 @@ AsyncTCPSocketPoll(AsyncTCPSocket *s,          // IN:
 
    if (read && s->fd == -1) {
       if (!s->listenAsock4 && !s->listenAsock6) {
-         TCPSOCKLG0(s, ("%s: Failed to find listener socket.\n", __FUNCTION__));
+         TCPSOCKLG0(s, "%s: Failed to find listener socket.\n", __FUNCTION__);
          return ASOCKERR_GENERIC;
       }
 
@@ -3047,7 +3056,7 @@ AsyncTCPSocketBlockingWork(AsyncTCPSocket *s,  // IN:
    }
 
    if (AsyncTCPSocketGetState(s) != AsyncSocketConnected) {
-      TCPSOCKWARN(s, ("recv called but state is not connected!\n"));
+      TCPSOCKWARN(s, "recv called but state is not connected!\n");
       return ASOCKERR_NOTCONNECTED;
    }
 
@@ -3071,13 +3080,13 @@ AsyncTCPSocketBlockingWork(AsyncTCPSocket *s,  // IN:
          }
          buf = (uint8*)buf + numBytes;
       } else if (numBytes == 0) {
-         TCPSOCKLG0(s, ("blocking %s detected peer closed connection\n",
-                        read ? "recv" : "send"));
+         TCPSOCKLG0(s, "blocking %s detected peer closed connection\n",
+                    read ? "recv" : "send");
          return ASOCKERR_REMOTE_DISCONNECT;
       } else if ((sysErr = ASOCK_LASTERROR()) != ASOCK_EWOULDBLOCK) {
          s->genericErrno = sysErr;
-         TCPSOCKWARN(s, ("blocking %s error %d: %s\n", read ? "recv" : "send",
-                         sysErr, Err_Errno2String(sysErr)));
+         TCPSOCKWARN(s, "blocking %s error %d: %s\n", read ? "recv" : "send",
+                     sysErr, Err_Errno2String(sysErr));
 
          return ASOCKERR_GENERIC;
       }
@@ -3171,7 +3180,7 @@ AsyncTCPSocketSend(AsyncSocket *base,         // IN
    ASSERT(asock->inLowLatencySendCb < 2);
 
    if (AsyncTCPSocketGetState(asock) != AsyncSocketConnected) {
-      TCPSOCKWARN(asock, ("send called but state is not connected!\n"));
+      TCPSOCKWARN(asock, "send called but state is not connected!\n");
       return ASOCKERR_NOTCONNECTED;
    }
 
@@ -3233,8 +3242,7 @@ AsyncTCPSocketSend(AsyncSocket *base,         // IN
                                    != NULL ? 1 : 0)
              != VMWARE_STATUS_SUCCESS) {
             retVal = ASOCKERR_POLL;
-            TCPSOCKLOG(1, asock,
-                       ("Failed to register poll callback for send\n"));
+            TCPSOCKLOG(1, asock, "Failed to register poll callback for send\n");
             goto outUndoAppend;
          }
          asock->sendCbTimer = TRUE;
@@ -3244,8 +3252,7 @@ AsyncTCPSocketSend(AsyncSocket *base,         // IN
                                    asock->internalSendFn)
              != VMWARE_STATUS_SUCCESS) {
             retVal = ASOCKERR_POLL;
-            TCPSOCKLOG(1, asock,
-                       ("Failed to register poll callback for send\n"));
+            TCPSOCKLOG(1, asock, "Failed to register poll callback for send\n");
             goto outUndoAppend;
          }
          asock->sendCb = TRUE;
@@ -3469,15 +3476,15 @@ AsyncTCPSocketFillRecvBuffer(AsyncTCPSocket *s)         // IN
        * unless you can preserve the system error number
        */
       if (recvd > 0) {
-         TCPSOCKLOG(3, s, ("need\t%d\trecv\t%d\tremain\t%d\n", needed, recvd,
-                           needed - recvd));
+         TCPSOCKLOG(3, s, "need\t%d\trecv\t%d\tremain\t%d\n", needed, recvd,
+                    needed - recvd);
          s->sslConnected = TRUE;
          s->base.recvPos += recvd;
          if (AsyncSocketCheckAndDispatchRecv(&s->base, &result)) {
             goto exit;
          }
       } else if (recvd == 0) {
-         TCPSOCKLG0(s, ("recv detected client closed connection\n"));
+         TCPSOCKLG0(s, "recv detected client closed connection\n");
          /*
           * We treat this as an error so that the owner can detect closing
           * of connection by peer (via the error handler callback).
@@ -3485,11 +3492,10 @@ AsyncTCPSocketFillRecvBuffer(AsyncTCPSocket *s)         // IN
          result = ASOCKERR_REMOTE_DISCONNECT;
          goto exit;
       } else if ((sysErr = ASOCK_LASTERROR()) == ASOCK_EWOULDBLOCK) {
-         TCPSOCKLOG(4, s, ("recv would block\n"));
+         TCPSOCKLOG(4, s, "recv would block\n");
          break;
       } else {
-         TCPSOCKLG0(s, ("recv error %d: %s\n", sysErr,
-                      Err_Errno2String(sysErr)));
+         TCPSOCKLG0(s, "recv error %d: %s\n", sysErr, Err_Errno2String(sysErr));
          s->genericErrno = sysErr;
          result = ASOCKERR_GENERIC;
          goto exit;
@@ -3581,7 +3587,7 @@ AsyncTCPSocketDispatchSentBuffer(AsyncTCPSocket *s)         // IN
       ASSERT(s->base.refCount > 1);
       tmp.sendFn(tmp.buf, tmp.len, BaseSocket(s), tmp.clientData);
       if (AsyncTCPSocketGetState(s) == AsyncSocketClosed) {
-         TCPSOCKLG0(s, ("owner closed connection in send callback\n"));
+         TCPSOCKLG0(s, "owner closed connection in send callback\n");
          result = ASOCKERR_CLOSED;
       }
    }
@@ -3620,7 +3626,7 @@ AsyncTCPSocketWriteBuffers(AsyncTCPSocket *s)         // IN
    }
 
    if (AsyncTCPSocketGetState(s) != AsyncSocketConnected) {
-      TCPSOCKWARN(s, ("write buffers on a disconnected socket!\n"));
+      TCPSOCKWARN(s, "write buffers on a disconnected socket!\n");
       return ASOCKERR_GENERIC;
    }
 
@@ -3640,8 +3646,8 @@ AsyncTCPSocketWriteBuffers(AsyncTCPSocket *s)         // IN
        * unless you can preserve the system error number
        */
       if (sent > 0) {
-         TCPSOCKLOG(3, s, ("left\t%d\tsent\t%d\tremain\t%d\n",
-                        left, sent, left - sent));
+         TCPSOCKLOG(3, s, "left\t%d\tsent\t%d\tremain\t%d\n",
+                    left, sent, left - sent);
          s->sendBufFull = FALSE;
          s->sslConnected = TRUE;
          if ((s->sendPos += sent) == sizeToSend) {
@@ -3651,10 +3657,10 @@ AsyncTCPSocketWriteBuffers(AsyncTCPSocket *s)         // IN
             }
          }
       } else if (sent == 0) {
-         TCPSOCKLG0(s, ("socket write() should never return 0.\n"));
+         TCPSOCKLG0(s, "socket write() should never return 0.\n");
          NOT_REACHED();
       } else if ((error = ASOCK_LASTERROR()) != ASOCK_EWOULDBLOCK) {
-         TCPSOCKLG0(s, ("send error %d: %s\n", error, Err_Errno2String(error)));
+         TCPSOCKLG0(s, "send error %d: %s\n", error, Err_Errno2String(error));
          s->genericErrno = error;
          if (error == ASOCK_EPIPE || error == ASOCK_ECONNRESET) {
             result = ASOCKERR_REMOTE_DISCONNECT;
@@ -3725,7 +3731,7 @@ AsyncTCPSocketAcceptInternal(AsyncTCPSocket *s)         // IN
       sysErr = ASOCK_LASTERROR();
       s->genericErrno = sysErr;
       if (sysErr == ASOCK_EWOULDBLOCK) {
-         TCPSOCKWARN(s, ("spurious accept notification\n"));
+         TCPSOCKWARN(s, "spurious accept notification\n");
 #if TARGET_OS_IPHONE
          /*
           * For iOS, while the app is suspended and device's screen is locked,
@@ -3748,13 +3754,13 @@ AsyncTCPSocketAcceptInternal(AsyncTCPSocket *s)         // IN
           */
 
       } else if (sysErr == ECONNABORTED) {
-         TCPSOCKLG0(s, ("accept: new connection was aborted\n"));
+         TCPSOCKLG0(s, "accept: new connection was aborted\n");
 
          return ASOCKERR_GENERIC;
 #endif
       } else {
-         TCPSOCKWARN(s, ("accept failed on fd %d, error %d: %s\n",
-                       s->fd, sysErr, Err_Errno2String(sysErr)));
+         TCPSOCKWARN(s, "accept failed on fd %d, error %d: %s\n",
+                     s->fd, sysErr, Err_Errno2String(sysErr));
 
          return ASOCKERR_ACCEPT;
       }
@@ -3771,9 +3777,8 @@ AsyncTCPSocketAcceptInternal(AsyncTCPSocket *s)         // IN
        */
 
       if (IN6_IS_ADDR_V4MAPPED(&(addr6->sin6_addr))) {
-         TCPSOCKWARN(s,
-                   ("accept rejected on fd %d due to a IPv4-mapped IPv6 "
-                    "remote connection address.\n", s->fd));
+         TCPSOCKWARN(s, "accept rejected on fd %d due to a IPv4-mapped IPv6 "
+                     "remote connection address.\n", s->fd);
          SSLGeneric_close(fd);
 
          return ASOCKERR_ACCEPT;
@@ -3846,7 +3851,7 @@ AsyncTCPSocketConnectInternal(AsyncTCPSocket *s)         // IN
 
    if (optval != 0) {
       s->genericErrno = optval;
-      TCPSOCKLOG(1, s, ("connection SO_ERROR: %s\n", Err_Errno2String(optval)));
+      TCPSOCKLOG(1, s, "connection SO_ERROR: %s\n", Err_Errno2String(optval));
 
       return ASOCKERR_GENERIC;
    }
@@ -3992,7 +3997,7 @@ AsyncTCPSocketWaitForConnection(AsyncSocket *base,  // IN:
 
       if (read) {
          if (AsyncTCPSocketAcceptInternal(asock) != ASOCKERR_SUCCESS) {
-            TCPSOCKLG0(s, ("wait for connection: accept failed\n"));
+            TCPSOCKLG0(s, "wait for connection: accept failed\n");
 
             /*
              * Just fall through, we'll loop and try again as long as we still
@@ -4076,7 +4081,7 @@ AsyncTCPSocketDoOneMsg(AsyncSocket *base, // IN
           * The recv loop would read the data if there is any and it is
           * not safe to proceed and race with the recv loop.
           */
-         TCPSOCKLG0(s, ("busy: another thread in recv loop\n"));
+         TCPSOCKLG0(s, "busy: another thread in recv loop\n");
          return ASOCKERR_BUSY;
       }
 
@@ -4098,8 +4103,8 @@ AsyncTCPSocketDoOneMsg(AsyncSocket *base, // IN
       retVal = AsyncTCPSocketPoll(s, read, timeoutMS, &asock);
       if (retVal != ASOCKERR_SUCCESS) {
          if (retVal == ASOCKERR_GENERIC) {
-            TCPSOCKWARN(s, ("%s: failed to poll on the socket during read.\n",
-                       __FUNCTION__));
+            TCPSOCKWARN(s, "%s: failed to poll on the socket during read.\n",
+                        __FUNCTION__);
          }
       } else {
          ASSERT(asock == s);
@@ -4137,8 +4142,8 @@ AsyncTCPSocketDoOneMsg(AsyncSocket *base, // IN
       retVal = AsyncTCPSocketPoll(s, read, timeoutMS, &asock);
       if (retVal != ASOCKERR_SUCCESS) {
          if (retVal == ASOCKERR_GENERIC) {
-            TCPSOCKWARN(s, ("%s: failed to poll on the socket during write.\n",
-                            __FUNCTION__));
+            TCPSOCKWARN(s, "%s: failed to poll on the socket during write.\n",
+                        __FUNCTION__);
          }
       } else {
          ASSERT(asock == s);
@@ -4207,7 +4212,7 @@ AsyncSocket_TCPDrainRecv(AsyncSocket *base, // IN
           * The recv loop would read the data if there is any and it is
           * not safe to proceed and race with the recv loop.
           */
-         TCPSOCKLG0(s, ("busy: another thread in recv loop\n"));
+         TCPSOCKLG0(s, "busy: another thread in recv loop\n");
          retVal = ASOCKERR_BUSY;
          /* Add a bit of backoff. */
          AsyncTCPSocketUnlock(s);
@@ -4230,8 +4235,8 @@ AsyncSocket_TCPDrainRecv(AsyncSocket *base, // IN
       retVal = AsyncTCPSocketPoll(s, TRUE, 0, &asock);
       if (retVal != ASOCKERR_SUCCESS) {
          if (retVal == ASOCKERR_GENERIC) {
-            TCPSOCKWARN(s, ("%s: failed to poll on the socket during read.\n",
-                       __FUNCTION__));
+            TCPSOCKWARN(s, "%s: failed to poll on the socket during read.\n",
+                        __FUNCTION__);
          }
       } else if (AsyncTCPSocketGetState(s) == AsyncSocketConnected) {
          ASSERT(asock == s);
@@ -4323,7 +4328,7 @@ AsyncTCPSocketFlush(AsyncSocket *base,  // IN
    AsyncTCPSocketAddRef(s);
 
    if (AsyncTCPSocketGetState(s) != AsyncSocketConnected) {
-      TCPSOCKWARN(s, ("flush called but state is not connected!\n"));
+      TCPSOCKWARN(s, "flush called but state is not connected!\n");
       retVal = ASOCKERR_INVAL;
       goto outHaveLock;
    }
@@ -4336,7 +4341,7 @@ AsyncTCPSocketFlush(AsyncSocket *base,  // IN
 
       retVal = AsyncTCPSocketPoll(s, FALSE, done - now, &asock);
       if (retVal != ASOCKERR_SUCCESS) {
-         TCPSOCKWARN(s, ("flush failed\n"));
+         TCPSOCKWARN(s, "flush failed\n");
          goto outHaveLock;
       }
 
@@ -4352,7 +4357,7 @@ AsyncTCPSocketFlush(AsyncSocket *base,  // IN
 
          /* Don't timeout if you've sent everything */
          if (now > done && s->sendBufList) {
-            TCPSOCKWARN(s, ("flush timed out\n"));
+            TCPSOCKWARN(s, "flush timed out\n");
             retVal = ASOCKERR_TIMEOUT;
             goto outHaveLock;
          }
@@ -4426,7 +4431,7 @@ AsyncTCPSocketAddListenCb(AsyncTCPSocket *asock)  // IN:
                                       AsyncTCPSocketAcceptCallback);
 
    if (pollStatus != VMWARE_STATUS_SUCCESS) {
-      TCPSOCKWARN(asock, ("failed to install listen accept callback!\n"));
+      TCPSOCKWARN(asock, "failed to install listen accept callback!\n");
    }
 
    return pollStatus == VMWARE_STATUS_SUCCESS;
@@ -4462,7 +4467,7 @@ AsyncTCPSocketCancelRecvCb(AsyncTCPSocket *asock)  // IN:
    if (asock->recvCb) {
       Bool removed;
       TCPSOCKLOG(1, asock,
-                 ("Removing poll recv callback while cancelling recv.\n"));
+                 "Removing poll recv callback while cancelling recv.\n");
       removed = AsyncTCPSocketPollRemove(asock, TRUE,
                                          POLL_FLAG_READ | POLL_FLAG_PERIODIC,
                                          asock->internalRecvFn);
@@ -4548,7 +4553,7 @@ AsyncTCPSocketCancelCbForClose(AsyncSocket *base)  // IN:
       asock->recvCbTimer = FALSE;
    }
    if (asock->recvCb) {
-      TCPSOCKLOG(1, asock, ("recvCb is non-NULL, removing recv callback\n"));
+      TCPSOCKLOG(1, asock, "recvCb is non-NULL, removing recv callback\n");
       removed = AsyncTCPSocketPollRemove(asock, TRUE,
                                          POLL_FLAG_READ | POLL_FLAG_PERIODIC,
                                          asock->internalRecvFn);
@@ -4563,7 +4568,7 @@ AsyncTCPSocketCancelCbForClose(AsyncSocket *base)  // IN:
 
    if (asock->sendCb) {
       TCPSOCKLOG(1, asock,
-                 ("sendBufList is non-NULL, removing send callback\n"));
+                 "sendBufList is non-NULL, removing send callback\n");
 
       /*
        * The send callback could be either a device or RTime callback, so
@@ -4726,8 +4731,8 @@ AsyncTCPSocketClose(AsyncSocket *base)   // IN
                                        asock->flushEnabledMaxWaitMsec);
          if (ret != ASOCKERR_SUCCESS) {
             TCPSOCKWARN(asock,
-                        ("AsyncTCPSocket_Flush failed: %s. Closing now.\n",
-                         AsyncSocket_Err2String(ret)));
+                        "AsyncTCPSocket_Flush failed: %s. Closing now.\n",
+                        AsyncSocket_Err2String(ret));
          }
       }
 
@@ -4736,34 +4741,34 @@ AsyncTCPSocketClose(AsyncSocket *base)   // IN
        * right thing accordingly
        */
 
-      TCPSOCKLOG(1, asock, ("closing socket\n"));
+      TCPSOCKLOG(1, asock, "closing socket\n");
       oldState = AsyncTCPSocketGetState(asock);
       AsyncTCPSocketSetState(asock, AsyncSocketClosed);
 
       switch(oldState) {
       case AsyncSocketListening:
-         TCPSOCKLOG(1, asock, ("old state was listening, removing accept "
-                               "callback\n"));
+         TCPSOCKLOG(1, asock,
+                    "old state was listening, removing accept callback\n");
          AsyncTCPSocketCancelListenCb(asock);
          break;
 
       case AsyncSocketConnecting:
-         TCPSOCKLOG(1, asock, ("old state was connecting, removing connect "
-                               "callback\n"));
+         TCPSOCKLOG(1, asock,
+                    "old state was connecting, removing connect callback\n");
          removed = AsyncTCPSocketCancelCbForConnectingClose(asock);
          if (!removed) {
-            TCPSOCKLOG(1, asock, ("connect callback is not present in the poll "
-                                  "list.\n"));
+            TCPSOCKLOG(1, asock,
+                       "connect callback is not present in the poll list.\n");
          }
          break;
 
       case AsyncSocketConnected:
-         TCPSOCKLOG(1, asock, ("old state was connected\n"));
+         TCPSOCKLOG(1, asock, "old state was connected\n");
          AsyncTCPSocketCancelCbForClose(BaseSocket(asock));
          break;
 
       case AsyncSocketCBCancelled:
-         TCPSOCKLOG(1, asock, ("old state was CB-cancelled\n"));
+         TCPSOCKLOG(1, asock, "old state was CB-cancelled\n");
          break;
 
       default:
@@ -5080,9 +5085,9 @@ AsyncTCPSocketIPollRecvCallback(void *clientData)  // IN:
                                 asock->internalRecvFn, asock->fd);
       }
    } else {
-      TCPSOCKLG0(asock, ("Skip recv because %s\n",
-                         asock->recvCb ? "blocking recv is in progress"
-                                       : "recv callback is cancelled"));
+      TCPSOCKLG0(asock, "Skip recv because %s\n",
+                 asock->recvCb ? "blocking recv is in progress"
+                               : "recv callback is cancelled");
    }
 
    /* This is a one-shot callback so we always release the reference taken. */
@@ -5205,7 +5210,7 @@ AsyncTCPSocketIPollSendCallback(void *clientData)  // IN:
    if (s->sendCb) {
       AsyncTCPSocketSendCallback(s);
    } else {
-      TCPSOCKLG0(s, ("cancelled send callback fired\n"));
+      TCPSOCKLG0(s, "cancelled send callback fired\n");
    }
 
    s->inIPollCb &= ~IN_IPOLL_SEND;
@@ -5671,7 +5676,7 @@ AsyncTCPSocketSslConnectCallback(void *clientData)  // IN
                                       AsyncTCPSocketSslConnectCallback);
 
       if (pollStatus != VMWARE_STATUS_SUCCESS) {
-         TCPSOCKWARN(asock, ("failed to reinstall ssl connect callback!\n"));
+         TCPSOCKWARN(asock, "failed to reinstall ssl connect callback!\n");
          asock->sslPollFlags = 0;
          (*asock->sslConnectFn)(FALSE, BaseSocket(asock), asock->clientData);
       }
@@ -5728,7 +5733,7 @@ AsyncTCPSocketStartSslConnect(AsyncSocket *base,                    // IN
    ASSERT(AsyncTCPSocketIsLocked(asock));
 
    if (asock->sslConnectFn || asock->sslAcceptFn) {
-      TCPSOCKWARN(asock, ("An SSL operation was already initiated.\n"));
+      TCPSOCKWARN(asock, "An SSL operation was already initiated.\n");
       return ASOCKERR_GENERIC;
    }
 
@@ -5797,7 +5802,7 @@ AsyncTCPSocketSslAcceptCallback(void *clientData)         // IN
                                       AsyncTCPSocketSslAcceptCallback);
 
       if (pollStatus != VMWARE_STATUS_SUCCESS) {
-         TCPSOCKWARN(asock, ("failed to reinstall ssl accept callback!\n"));
+         TCPSOCKWARN(asock, "failed to reinstall ssl accept callback!\n");
          asock->sslPollFlags = 0;
          (*asock->sslAcceptFn)(FALSE, BaseSocket(asock), asock->clientData);
       }
@@ -5851,7 +5856,7 @@ AsyncTCPSocketStartSslAccept(AsyncSocket *base,                  // IN
    ASSERT(AsyncTCPSocketIsLocked(asock));
 
    if (asock->sslAcceptFn || asock->sslConnectFn) {
-      TCPSOCKWARN(asock, ("An SSL operation was already initiated.\n"));
+      TCPSOCKWARN(asock, "An SSL operation was already initiated.\n");
       return ASOCKERR_GENERIC;
    }
 
@@ -5921,9 +5926,9 @@ AsyncTCPSocketSetOption(AsyncSocket *asyncSocket,     // IN/OUT
       break;
    default:
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer [%d] (option [%d]) is not "
+                 "%s: Option layer [%d] (option [%d]) is not "
                      "supported for TCP socket.\n",
-                  __FUNCTION__, (int)layer, optID));
+                  __FUNCTION__, (int)layer, optID);
       return ASOCKERR_INVAL;
    }
 
@@ -5936,9 +5941,8 @@ AsyncTCPSocketSetOption(AsyncSocket *asyncSocket,     // IN/OUT
        (optID == ASYNC_SOCKET_OPT_SEND_LOW_LATENCY_MODE)) {
       ASSERT(inBufLen == sizeof(Bool));
       tcpSocket->sendLowLatency = *((const Bool *)valuePtr);
-      TCPSOCKLG0(tcpSocket,
-                 ("%s: sendLowLatencyMode set to [%d].\n",
-                  __FUNCTION__, (int)tcpSocket->sendLowLatency));
+      TCPSOCKLG0(tcpSocket, "%s: sendLowLatencyMode set to [%d].\n",
+                 __FUNCTION__, (int)tcpSocket->sendLowLatency);
       return ASOCKERR_SUCCESS;
    }
 
@@ -5984,10 +5988,10 @@ AsyncTCPSocketSetOption(AsyncSocket *asyncSocket,     // IN/OUT
 
    if (!isSupported) {
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer/level [%d], option/name [%d]: "
+                 "%s: Option layer/level [%d], option/name [%d]: "
                      "could not set OS option for TCP socket; "
                      "option not supported.\n",
-                  __FUNCTION__, (int)layer, optID));
+                  __FUNCTION__, (int)layer, optID);
       return ASOCKERR_INVAL;
    }
 
@@ -5997,19 +6001,19 @@ AsyncTCPSocketSetOption(AsyncSocket *asyncSocket,     // IN/OUT
                   valuePtr, inBufLen) != 0) {
       tcpSocket->genericErrno = Err_Errno();
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer/level [%d], option/name [%d]: "
+                 "%s: Option layer/level [%d], option/name [%d]: "
                      "could not set OS option for TCP socket; "
                      "error [%d: %s].\n",
                   __FUNCTION__, (int)layer, optID,
                   tcpSocket->genericErrno,
-                  Err_Errno2String(tcpSocket->genericErrno)));
+                  Err_Errno2String(tcpSocket->genericErrno));
       return ASOCKERR_GENERIC;
    }
 
    TCPSOCKLG0(tcpSocket,
-              ("%s: Option layer/level [%d], option/name [%d]: successfully "
+              "%s: Option layer/level [%d], option/name [%d]: successfully "
                   "set OS option for TCP socket.\n",
-               __FUNCTION__, (int)layer, optID));
+               __FUNCTION__, (int)layer, optID);
 
    return ASOCKERR_SUCCESS;
 }
@@ -6058,9 +6062,9 @@ AsyncTCPSocketGetOption(AsyncSocket *asyncSocket,     // IN/OUT
       break;
    default:
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer [%d] (option [%d]) is not "
+                 "%s: Option layer [%d] (option [%d]) is not "
                      "supported for TCP socket.\n",
-                  __FUNCTION__, (int)layer, optID));
+                  __FUNCTION__, (int)layer, optID);
       return ASOCKERR_INVAL;
    }
 
@@ -6070,8 +6074,8 @@ AsyncTCPSocketGetOption(AsyncSocket *asyncSocket,     // IN/OUT
       *outBufLen = sizeof(Bool);
       *((Bool *)valuePtr) = tcpSocket->sendLowLatency;
       TCPSOCKLG0(tcpSocket,
-                 ("%s: sendLowLatencyMode is [%d].\n",
-                  __FUNCTION__, (int)tcpSocket->sendLowLatency));
+                 "%s: sendLowLatencyMode is [%d].\n",
+                  __FUNCTION__, (int)tcpSocket->sendLowLatency);
       return ASOCKERR_SUCCESS;
    }
 
@@ -6098,10 +6102,10 @@ AsyncTCPSocketGetOption(AsyncSocket *asyncSocket,     // IN/OUT
 
    if (!isSupported) {
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer/level [%d], option/name [%d]: "
+                 "%s: Option layer/level [%d], option/name [%d]: "
                      "could not get OS option for TCP socket; "
                      "option not supported.\n",
-                  __FUNCTION__, (int)layer, optID));
+                  __FUNCTION__, (int)layer, optID);
       return ASOCKERR_INVAL;
    }
 
@@ -6109,19 +6113,19 @@ AsyncTCPSocketGetOption(AsyncSocket *asyncSocket,     // IN/OUT
                   valuePtr, outBufLen) != 0) {
       tcpSocket->genericErrno = Err_Errno();
       TCPSOCKLG0(tcpSocket,
-                 ("%s: Option layer/level [%d], option/name [%d]: "
+                 "%s: Option layer/level [%d], option/name [%d]: "
                      "could not get OS option for TCP socket; "
                      "error [%d: %s].\n",
                   __FUNCTION__, (int)layer, optID,
                   tcpSocket->genericErrno,
-                  Err_Errno2String(tcpSocket->genericErrno)));
+                  Err_Errno2String(tcpSocket->genericErrno));
       return ASOCKERR_GENERIC;
    }
 
    TCPSOCKLG0(tcpSocket,
-              ("%s: Option layer/level [%d], option/name [%d]: successfully "
+              "%s: Option layer/level [%d], option/name [%d]: successfully "
                   "got OS option for TCP socket.\n",
-               __FUNCTION__, (int)layer, optID));
+               __FUNCTION__, (int)layer, optID);
 
    return ASOCKERR_SUCCESS;
 }
index df5e1017085a1a186562e10de4c2a129a1f7e435..123714b98f0b7d3c9728264a0930182b8eb6351f 100644 (file)
@@ -755,28 +755,40 @@ unsigned AsyncSocket_WebSocketGetNumAccepted(AsyncSocket *asock);
  */
 #define ASOCKPREFIX "SOCKET "
 
-#define ASOCKWARN(_asock, _warnargs)                                 \
-   do {                                                              \
-      Warning(ASOCKPREFIX "%d (%d) ",                                \
-              AsyncSocket_GetID(_asock), AsyncSocket_GetFd(_asock)); \
-      Warning _warnargs;                                             \
+/* gcc needs special syntax to handle zero-length variadic arguments */
+#if defined(_MSC_VER)
+#define ASOCKWARN(_asock, fmt, ...)                               \
+   Warning(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+           AsyncSocket_GetFd(_asock), __VA_ARGS__)
+
+#define ASOCKLG0(_asock, fmt, ...)                            \
+   Log(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+       AsyncSocket_GetFd(_asock), __VA_ARGS__)
+
+#define ASOCKLOG(_level, _asock, fmt, ...)                          \
+   do {                                                             \
+      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) { \
+         Log(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+             AsyncSocket_GetFd(_asock), __VA_ARGS__);               \
+      }                                                             \
    } while (0)
-
-#define ASOCKLG0(_asock, _logargs)                               \
-   do {                                                          \
-      Log(ASOCKPREFIX "%d (%d) ",                                \
-          AsyncSocket_GetID(_asock), AsyncSocket_GetFd(_asock)); \
-      Log _logargs;                                              \
+#else
+#define ASOCKWARN(_asock, fmt, ...)                               \
+   Warning(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+           AsyncSocket_GetFd(_asock), ##__VA_ARGS__)
+
+#define ASOCKLG0(_asock, fmt, ...)                            \
+   Log(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+       AsyncSocket_GetFd(_asock), ##__VA_ARGS__)
+
+#define ASOCKLOG(_level, _asock, fmt, ...)                          \
+   do {                                                             \
+      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) { \
+         Log(ASOCKPREFIX "%d (%d) " fmt, AsyncSocket_GetID(_asock), \
+             AsyncSocket_GetFd(_asock), ##__VA_ARGS__);             \
+      }                                                             \
    } while (0)
-
-#define ASOCKLOG(_level, _asock, _logargs)                            \
-   do {                                                               \
-      if (((_level) == 0) || DOLOG_BYNAME(asyncsocket, (_level))) {   \
-         Log(ASOCKPREFIX "%d (%d) ",                                  \
-             AsyncSocket_GetID((_asock)), AsyncSocket_GetFd(_asock)); \
-         Log _logargs;                                                \
-      }                                                               \
-   } while(0)
+#endif
 
 #if defined(__cplusplus)
 }  // extern "C"