Skip to content

Commit

Permalink
update pack & pidfile
Browse files Browse the repository at this point in the history
  • Loading branch information
ixqbar committed Dec 29, 2015
1 parent 14235fd commit ec78844
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
35 changes: 34 additions & 1 deletion yar_pack.c
Expand Up @@ -128,7 +128,8 @@ int yar_pack_push_double(yar_packager *packager, double num) /* {{{ */ {
int yar_pack_push_string(yar_packager *packager, char *str, uint len) /* {{{ */ {
int ret;
msgpack_packer *pk = packager->pk;


#if defined(MSGPACK_OBJECT_RAW)
ret = msgpack_pack_raw(pk, len);

if (ret < 0) {
Expand All @@ -138,6 +139,17 @@ int yar_pack_push_string(yar_packager *packager, char *str, uint len) /* {{{ */
if (msgpack_pack_raw_body(pk, str, len) < 0) {
return 0;
}
#else
ret = msgpack_pack_str(pk, len);

if (ret < 0) {
return 0;
}

if (msgpack_pack_str_body(pk, str, len) < 0) {
return 0;
}
#endif

return 1;
}
Expand Down Expand Up @@ -208,11 +220,22 @@ yar_data_type yar_unpack_data_type(const yar_data *data, uint *size) /* {{{ */ {
return YAR_DATA_ULONG;
case MSGPACK_OBJECT_NEGATIVE_INTEGER:
return YAR_DATA_LONG;
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
case MSGPACK_OBJECT_DOUBLE:
return YAR_DATA_DOUBLE;
#elif defined(MSGPACK_OBJECT_FLOAT)
case MSGPACK_OBJECT_FLOAT:
return YAR_DATA_DOUBLE;
#endif
#if defined(MSGPACK_OBJECT_RAW)
case MSGPACK_OBJECT_RAW:
*size = obj->via.raw.size;
return YAR_DATA_STRING;
#elif defined(MSGPACK_OBJECT_STR)
case MSGPACK_OBJECT_STR:
*size = obj->via.str.size;
return YAR_DATA_STRING;
#endif
case MSGPACK_OBJECT_ARRAY:
*size = obj->via.array.size;
return YAR_DATA_ARRAY;
Expand Down Expand Up @@ -240,11 +263,21 @@ int yar_unpack_data_value(const yar_data *data, void *arg) /* {{{ */ {
case MSGPACK_OBJECT_NEGATIVE_INTEGER:
*(long *)arg = obj->via.i64;
return YAR_DATA_LONG;
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
case MSGPACK_OBJECT_DOUBLE:
*(double *)arg = obj->via.dec;
#elif defined(MSGPACK_OBJECT_FLOAT)
case MSGPACK_OBJECT_FLOAT:
#endif
*(double *)arg = obj->via.f64;
return YAR_DATA_DOUBLE;
#if defined(MSGPACK_OBJECT_RAW)
case MSGPACK_OBJECT_RAW:
*(const char **)arg = obj->via.raw.ptr;
#elif defined(MSGPACK_OBJECT_STR)
case MSGPACK_OBJECT_STR:
*(const char **)arg = obj->via.str.ptr;
#endif
return YAR_DATA_STRING;
case MSGPACK_OBJECT_ARRAY:
*(const yar_data **)arg = (yar_data *)obj->via.array.ptr;
Expand Down
12 changes: 10 additions & 2 deletions yar_server.c
Expand Up @@ -164,11 +164,15 @@ static int yar_server_start_daemon(void) /* {{{ */ {
/* }}} */

static int yar_check_previous_run(char *pfile) /* {{{ */ {
FILE *fp;
if (access(pfile, F_OK) == 0) {
alog(YAR_ERROR, "There is already a yar_sever run, pid '%s'", pfile);
return 0;
}
return 1;
} /* }}} */

static int yar_record_pid(char *pfile) /* {{{ */ {
FILE *fp;
fp = fopen(pfile, "w+");
if (!fp) {
alog(YAR_ERROR, "Failed to write pid file '%s'", strerror(errno));
Expand Down Expand Up @@ -318,6 +322,10 @@ static void yar_server_parent_init() /* {{{ */ {
sigaction(SIGINT, &act, NULL);
sigaction(SIGQUIT, &act, NULL);

if (server->pid_file) {
yar_record_pid(server->pid_file);
}

server->ppid = getpid();
if (server->parent_init) {
server->parent_init(server->data);
Expand Down Expand Up @@ -554,7 +562,7 @@ static void yar_server_on_accept(int fd, short ev, void *arg) /* {{{ */ {
}

ctx = calloc(1, sizeof(yar_request_context) + sizeof(yar_request) + sizeof(yar_response));
if (!yar_set_non_blocking(fd)) {
if (!yar_set_non_blocking(client_fd)) {
alog(YAR_WARNING, "Setting non-block mode failed '%s'", strerror(errno));
free(ctx);
close(client_fd);
Expand Down

0 comments on commit ec78844

Please sign in to comment.