diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -867,11 +867,15 @@ int sendSignal(struct remoteio *rem, cha Sends the server an extended signal (request + data) ohnobinki: I have no clue how you really want to handle this. Please clarify/edit */ -int sendExtSignal(struct remoteio *rem, char signal, char *data){ +int sendExtSignal(struct remoteio *rem, char signal, char *data) +{ size_t written; size_t towrite; char *ssignal; - _distren_asprintf(&ssignal, "%c%s", signal, data); // Just append the data FIXME: We should do this differently + /** + Just append the data FIXME: We should do this differently + */ + _distren_asprintf(&ssignal, "%c%s", signal, data); towrite = strlen(ssignal); while( towrite && !remoteio_write(rem, ssignal, towrite, &written)) @@ -924,10 +928,38 @@ void startframe(struct remoteio *rem, in } +/** + Greets the server. + + We send PACKAGE_STRING as our version ping thing. + */ +int greet_server(struct remoteio *rem) +{ + int err; + struct distren_request *req; + + err = 0; + + fprintf(stderr, "Saying hello to the server ;-)...\n"); + + err += distren_request_new(&req, strlen(PACKAGE_STRING), DISTREN_REQUEST_VERSION); + err += distren_request_send(rem, req, PACKAGE_STRING); + err += distren_request_free(req); + + return err; +} + /** retrieves job from server */ -int getwork(struct remoteio *rem, int *jobnum, int *framenum){ - char* data; - _distren_asprintf(&data, "%d%d", jobnum, framenum); +int getwork(struct remoteio *rem, int *jobnum, int *framenum) +{ + struct distren_request *req; + char *data; + int len; /*< asprintf() uses int, not size_t */ + len = _distren_asprintf(&data, "%d.%d", jobnum, framenum); + + //distren_request_new(&req, + + sendExtSignal(rem, DISTREN_REQUEST_GETWORK, data); return 0; }