/*****************************************************************************\ * Read a message (request) from specified file descriptor * * RET - The message which must be xfreed or * NULL on error \*****************************************************************************/ static char * _recv_msg(slurm_fd_t new_fd) { char header[10]; unsigned long size; char *buf; if (_read_bytes((int) new_fd, header, 9) != 9) { err_code = -240; err_msg = "failed to read message header"; error("wiki: failed to read message header %m"); return NULL; } if (sscanf(header, "%lu", &size) != 1) { err_code = -244; err_msg = "malformed message header"; error("wiki: malformed message header (%s)", header); return NULL; } buf = xmalloc(size + 1); /* need '\0' on end to print */ if (_read_bytes((int) new_fd, buf, size) != size) { err_code = -246; err_msg = "unable to read all message data"; error("wiki: unable to read data message"); xfree(buf); return NULL; } if (slurm_get_debug_flags() & DEBUG_FLAG_WIKI) info("wiki msg recv:%s", buf); return buf; }
static char *_recv_msg(int new_fd) { char header[10]; unsigned long size; char *buf; if (_read_bytes((int) new_fd, header, 9) != 9) { info("slurmctld/nonstop: failed to read message header %m"); return NULL; } if (sscanf(header, "%lu", &size) != 1) { info("slurmctld/nonstop: malformed message header (%s)", header); return NULL; } buf = xmalloc(size + 1); /* need '\0' on end to print */ if (_read_bytes((int) new_fd, buf, size) != size) { info("slurmctld/nonstop: unable to read data message"); xfree(buf); return NULL; } if (nonstop_debug > 1) info("slurmctld/nonstop: msg recv:%s", buf); return buf; }
static char *_recv_msg(int fd) { char header[10]; uint32_t size; char *buf; if (_read_bytes(fd, header, 9) != 9) { perror("reading message header"); exit(1); } if (sscanf(header, "%ul", &size) != 1) { perror("parsing message header"); exit(1); } buf = calloc(1, (size+1)); /* need '\0' on end to print */ if (buf == NULL) { perror("malloc"); exit(1); } if (_read_bytes(fd, buf, size) != size) { perror("reading message"); exit(1); } return buf; }
/*****************************************************************************\ * Read a message (request) from specified file descriptor * * RET - The message which must be xfreed or * NULL on error \*****************************************************************************/ static char * _recv_msg(slurm_fd_t new_fd) { char *buf; buf = xmalloc(SIZE + 1); /* need '\0' on end to print */ if (_read_bytes((int) new_fd, buf, SIZE) <= 0) { err_code = -246; err_msg = "unable to read message data"; error("dynalloc: unable to read data message"); xfree(buf); return NULL; } info("-------------------------"); info("dynalloc msg recv:%s", buf); return buf; }
static void _event_mgr(void) { int accept_fd, event_fd; socklen_t accept_addr_len = sizeof(struct sockaddr); size_t cnt; char in_msg[5]; struct sockaddr_in accept_addr; if ((event_fd = _conn_event_port(control_addr, e_port)) < 0) return; printf("READY_FOR_EVENT\n"); if ((accept_fd = accept(event_fd, (struct sockaddr *) &accept_addr, &accept_addr_len)) < 0) { perror("accept"); exit(1); } close(event_fd); cnt = _read_bytes(accept_fd, in_msg, sizeof(in_msg)); if (cnt > 0) printf("event recv:%s\n\n", in_msg); close(accept_fd); }