message: Fix write buffer.
diff: @@ -698,6 +698,7 @@ ssize_t Socket::write(const void *__buf, size_t __n)
  return -1;
  }
  + bool copied = false;
  while (true)
  {
  int events = SW_EVENT_WRITE;
  @@ -715,13 +716,17 @@ ssize_t Socket::write(const void *__buf, size_t __n)
  {
  return -1;
  }
  + if (!copied)
  + {
  copy_to_write_buffer(__buf, __n);
  + copied = true;
  + }
  yield(events == SW_EVENT_READ ? SOCKET_LOCK_RW : SOCKET_LOCK_WRITE);
  if (errCode == ETIMEDOUT)
  {
  return -1;
  }
  - retval = ::write(socket->fd, (void *) write_buffer, __n);
  + retval = ::write(socket->fd, (void *) write_buffer->str, __n);
  if (retval < 0)
  {
  if (swConnection_error(errno) == SW_WAIT)
  @@ -809,6 +814,7 @@ ssize_t Socket::send(const void *__buf, size_t __n)
  return -1;
  }
  + bool copied = false;
  while (true)
  {
  int events = SW_EVENT_WRITE;
  @@ -826,13 +832,17 @@ ssize_t Socket::send(const void *__buf, size_t __n)
  {
  return -1;
  }
  + if (!copied)
  + {
  copy_to_write_buffer(__buf, __n);
  + copied = true;
  + }
  yield(events == SW_EVENT_READ ? SOCKET_LOCK_RW : SOCKET_LOCK_WRITE);
  if (errCode == ETIMEDOUT)
  {
  return -1;
  }
  - retval = swConnection_send(socket, (void *) write_buffer, __n, 0);
  + retval = swConnection_send(socket, (void *) write_buffer->str, __n, 0);
  if (retval < 0)
  {
  if (swConnection_error(errno) == SW_WAIT)
  