log_error("Receiving ACK from listener");
                return 1;
        }
-       if(strncmp(ack, "ACK", 2) != 0){
+       if(strncmp(ack, "ACK", 3) != 0){
                log_error("Received '%.3s' from listener instead of 'ACK'", ack);
                return 1;
        }
 
 str keyfile;
 
 
+// make int for errors?
 void handle_message(ipc_msg im){
        switch(im.type){
                case NONE: break;
                        keyfile = dup_str(im.msg);
                        break;
                case RESTART:
-                       char *args[] = {"./worker.exe", listener.saddr.ptr, NULL};
+                       char *args[] = {"./worker.exe", listener->saddr.ptr, NULL};
                        execv("./worker.exe", args);
                        log_error("Cannot restart worker: %s", strerror(errno));
-                       return 1;
+                       return;
                        break;
                case RELOAD:
                        // re-reads config