コード例 #1
0
NVTable *
nv_table_deserialize(LogMessageSerializationState *state)
{
  SerializeArchive *sa = state->sa;
  NVTableMetaData meta_data;
  NVTable *res = NULL;

  if (!_read_metadata(sa, &meta_data))
    goto error;

  if (!_read_header(sa, &res))
    goto error;

  state->nvtable_flags = meta_data.flags;
  state->nvtable = res;
  if (!_read_struct(sa, res))
    goto error;

  if (!_read_payload(sa, res))
    goto error;

  if (_has_to_swap_bytes(meta_data.flags))
    nv_table_data_swap_bytes(res);


  return res;

error:
  if (res)
    g_free(res);
  return NULL;
}
コード例 #2
0
int
read_request(int peerfd, struct request *req)
{
  int         nbytes, error;
  char        *buf = NULL;
  size_t      buf_len;

  buf_len = REQUEST_BUFFER_LEN + 1;
  if ((buf = malloc(buf_len)) == NULL) {
    return EMEMALOC; /* memory allocation error */
  }
  log_ln(MEM_DEBUG, "allocated %zuB for recv buffer\n", buf_len);

  error = nbytes = recv(peerfd, buf, REQUEST_HEAD_LEN, 0);
  buf[nbytes] = '\0';

  if (nbytes) {
    if ((_read_header(buf, req)) != 0) {
      error |= EREADHEAD; /* error reading header */
    }
    if (req->method == MPOST && req->content_len) {
      if ((_read_body(buf, req)) != 0) {
	error |= ERRORBODY; /* error reading body */
      } else {
	log_ln(DEBUG, "got data \"%s\"\n", req->body->buf);
      }

    }
  } else {
    if (nbytes == 0) {
      error = ECONNRST; /* connection reset */
    } else if (nbytes == -1) {
      error = ESOCKERR; /* read error */
    } else {
      error = EUNKNOWN;
    }
  }

  free(buf);
  log_ln(MEM_DEBUG, "freed recv buffer\n");

  return error;
}
コード例 #3
0
ファイル: nvtable-serialize.c プロジェクト: Cytrian/syslog-ng
NVTable *
nv_table_deserialize(SerializeArchive *sa)
{
  NVTableMetaData meta_data;
  NVTable *res = NULL;

  if (!_read_metadata(sa, &meta_data))
    {
      goto error;
    }

  if (!_read_header(sa, &res))
    {
      goto error;
    }

  if (!_read_struct(sa, res))
    {
      goto error;
    }

  if (!_read_payload(sa, res))
    {
      goto error;
    }

  if (_has_to_swap_bytes(meta_data.flags))
    {
      nv_table_data_swap_bytes(res);
    }

  return res;

error:
  if (res)
    g_free(res);
  return NULL;
}