diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -230,7 +230,7 @@ int main(int argc, char *argv[]) // Main loop while(!slave_state.quit) { - multiio_poll(multiio); + multiio_poll(multiio, 15000); if(slave_state.quit) break; @@ -393,6 +393,7 @@ static size_t distren_slave_remoteio_rea size_t to_return; size_t counter; + fprintf(stderr, "expected to eat %d bytes\n", len); /* to_return shall record how much of buf we've eaten already */ to_return = 0; @@ -433,14 +434,14 @@ static size_t distren_slave_remoteio_rea if(!slave_state->expectlen) { if(len < sizeof(struct distren_request)) - return 0; + return to_return; /* figure out how much we need to read in before we can get anywhere */ if(distren_request_new_fromdata(&req, buf, len)) { fprintf(stderr, "Failing to interpret data from server, exiting\n"); slave_state->quit = 1; - return 0; + return to_return; } slave_state->expectlen = sizeof(struct distren_request) + req->len; distren_request_free(req); @@ -465,8 +466,8 @@ static size_t distren_slave_remoteio_rea fprintf(stderr, "PONG ! :-D\n"); distren_request_poing(&my_req, &my_req_data, 0, req_data, req->len); - remoteio_write(slave_state->rem, &my_req, sizeof(struct distren_request)); - remoteio_write(slave_state->rem, &my_req_data, req->len); + remoteio_write(slave_state->rem, my_req, sizeof(struct distren_request)); + remoteio_write(slave_state->rem, my_req_data, req->len); distren_request_free_with_data(my_req, my_req_data); break; @@ -484,16 +485,17 @@ static size_t distren_slave_remoteio_rea break; } + counter = req->len + sizeof(struct distren_request); + distren_request_free(req); slave_state->expectlen = 0; - counter = req->len + sizeof(struct distren_request); - len -= counter; buf += counter; to_return += counter; } } + fprintf(stderr, "ate %d bytes\n", to_return); return to_return; }