diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) /* Notifies the user if there no username in .conf */ if(username == NULL || strcmp(username, "!username") == 0 ) fprintf(stderr, "\nPlease ensure that your username is present in distrenslave.conf\n"); - else + else if( username != NULL || strcmp(username, "!username") != 0 ) { // Log in the user @@ -132,13 +132,13 @@ int main(int argc, char *argv[]) fprintf(stderr, "Loading config (fasten your seatbelts for a SEGFAULT :-D )...\n"); - + fprintf(stderr, "Connecting to server...\n"); tmp = remoteio_open(&comm_slave, commonopts->remoteio, server); if(tmp) { - fprintf(stderr, "Error connecting to server; exitting\n"); + fprintf(stderr, "Error connecting to server; exiting\n"); return 1; } diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -39,13 +39,13 @@ /** Sends the server a single request (see protocol.h) */ -int sendSignal(struct remoteio *rem, int signal) +int sendSignal(struct remoteio *rem, char signal) { size_t written; size_t towrite; char *ssignal; - _distren_asprintf(&ssignal, "%d", signal); + _distren_asprintf(&ssignal, "%c", signal); towrite = strlen(ssignal); while( towrite && !remoteio_write(rem, ssignal, towrite, &written)) @@ -62,6 +62,34 @@ int sendSignal(struct remoteio *rem, int */ return 1; } + +/** + Sends the server an extended signal (request + 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 + towrite = strlen(ssignal); + while( towrite + && !remoteio_write(rem, ssignal, towrite, &written)) + { + printf(stderr, "Writing..."); + towrite -= written; + } + if(written) + return 0; + + /** + if remoteio_write returned 1, the connection + is probably dead or there was a real error + */ + return 1; +} + + + /** utility function for XPath-ish stuff: */ diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -28,7 +28,8 @@ struct msg; -int sendSignal(struct remoteio *rem, int signal); +int sendSignal(struct remoteio *rem, char signal); +int sendExtSignal(struct remoteio *rem, char signal, char *data); xmlNodePtr xml_quickxpath(xmlXPathContextPtr xpathctxt, xmlChar *path); int software_updatecheck(); int delete_jobdata(int jobnum, char *datadir);