static int _xmit(char *msg) { int msg_len = strlen(msg); char *out_msg, *in_msg, sum[20], *sc_ptr; int wiki_fd = _conn_wiki_port(control_addr, sched_port); int sc; out_msg = calloc(1, (msg_len+100)); if (out_msg == NULL) { perror("malloc"); exit(1); } checksum(sum, auth_key, msg); sprintf(out_msg, "%s %s", sum, msg); printf("send:%s\n", out_msg); _send_msg(wiki_fd, out_msg, strlen(out_msg)); in_msg = _recv_msg(wiki_fd); printf("recv:%s\n\n", in_msg); sc_ptr = strstr(in_msg, "SC="); sc = atoi(sc_ptr+3); if (sc != 0) fprintf(stderr, "RPC failure\n"); free(in_msg); close(wiki_fd); return sc; }
static void _send_reply(slurm_fd_t new_fd, char *response) { size_t i; char *buf, sum[20], *tmp; static char uname[64] = ""; i = strlen(response); i += 100; /* leave room for header */ buf = xmalloc(i); if (uname[0] == '\0') { tmp = uid_to_string(getuid()); strncpy(uname, tmp, sizeof(uname)); uname[sizeof(uname) - 1] = '\0'; xfree(tmp); } snprintf(buf, i, "CK=dummy67890123456 TS=%u AUTH=%s DT=%s", (uint32_t) time(NULL), uname, response); checksum(sum, auth_key, (buf+20)); /* overwrite "CK=dummy..." above */ memcpy(buf, sum, 19); i = strlen(buf) + 1; (void) _send_msg(new_fd, buf, i); xfree(buf); }
int send_msg(int fd, const char *fmt, ...) { int ret; va_list ap; va_start(ap, fmt); ret = _send_msg(fd, fmt, ap); va_end(ap); return ret; }
static void _xmit(char *msg) { int msg_len = strlen(msg); char *out_msg, *in_msg, *sc_ptr; int wiki_fd = _conn_wiki_port(control_addr, sched_port); int sc; out_msg = msg; printf("send:%s\n", out_msg); _send_msg(wiki_fd, out_msg, strlen(out_msg)); in_msg = _recv_msg(wiki_fd); printf("recv:%s\n\n", in_msg); sc_ptr = strstr(in_msg, "SC="); sc = atoi(sc_ptr+3); if (sc != 0) { fprintf(stderr, "RPC failure\n"); exit(1); } free(in_msg); close(wiki_fd); }
extern void send_reply(slurm_fd_t new_fd, char *response) { _send_msg(new_fd, response, strlen(response)+1); }