diff --git a/src/client/libdistren_request.c b/src/client/libdistren_request.c --- a/src/client/libdistren_request.c +++ b/src/client/libdistren_request.c @@ -25,7 +25,10 @@ #include "common/remoteio.h" #include "common/request.h" +#include + static void handle_ping(struct remoteio *rem, struct distren_request *req, void *req_data); +static void handle_pong(distren_t distren, struct remoteio *rem, struct distren_request *req, void *req_data); static void handle_version(distren_t distren, struct distren_request *req, void *req_data); static void handle_disconnect(distren_t distren, struct remoteio *rem, struct distren_request *req, void *req_data); @@ -72,6 +75,10 @@ size_t libdistren_remoteio_read_handle(s handle_ping(rem, req, req_data); break; + case DISTREN_REQUEST_PONG: + handle_pong(distren, rem, req, req_data); + break; + case DISTREN_REQUEST_VERSION: handle_version(distren, req, req_data); break; @@ -118,6 +125,15 @@ static void handle_ping(struct remoteio distren_request_free_with_data(pong_req, pong_req_data); } +static void handle_pong(distren_t distren, struct remoteio *rem, struct distren_request *req, void *req_data) +{ + const char *auth_test_str = "auth test"; + + if(req->len == strlen(auth_test_str) + && !strncmp(req_data, auth_test_str, req->len)) + distren->state = DISTREN_STATE_NORMAL; +} + static void handle_version(distren_t distren, struct distren_request *req, void *req_data) { struct distren_request_version version;