diff --git a/README.md b/README.md index 9c07651..cfe3272 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Start server on localhost using the commands below. ```bash chmod +x simple-dict-server simple-dict-client Usage: -./simple-dict-server [-d] listen_port dict_file [config_file | -] +./simple-dict-server [-d] listen_port dict_file [ config_file | - ] -d: As daemon - : Read config from env SDS_PWD & SDS_SPS ``` @@ -41,7 +41,7 @@ Open another shell to connect to it. ```bash ./simple-dict-client 127.0.0.1 7777 ``` -Now you have connected to the server. The default access passwords is in `client.c` and you can modify the password in source code as you like. Please note that the server will only wait `4` seconds for a response after the last communication. The box below shows how to control the server to accompilsh basic add/del/find/edit operations. +Now you have connected to the server. The default access passwords is in `client.c` and you can modify the password in source code as you like. Please note that the server will only wait `4` seconds for a response after the last communication. You can go to `server.h` to edit this limit. The box below shows how to control the server to accompilsh basic add/del/find/edit operations. | cmd | data | description | reply | | ---- | ---- | ---- | ----- | diff --git a/server.c b/server.c index 0755ac1..db39fb5 100644 --- a/server.c +++ b/server.c @@ -330,6 +330,7 @@ ERR_INSERT_ITEM: } static int s3_set_data(thread_timer_t *timer) { + if(!setdicts[timer->index].data[0]) return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4); FILE *fp = open_ex_dict(); if(fp == NULL) return send_data(timer->accept_fd, timer->index, ACKERRO, "erro", 4); @@ -378,6 +379,8 @@ static int s3_set_data(thread_timer_t *timer) { r = send_data(timer->accept_fd, timer->index, ACKSUCC, "succ", 4); } + setdicts[timer->index].data[0] = 0; + pthread_cleanup_pop(1); return r; } @@ -523,6 +526,7 @@ static void cleanup_thread(thread_timer_t* timer) { pthread_sigmask(SIG_BLOCK, &mask, NULL); puts("Start cleaning"); timer->thread = 0; + setdicts[timer->index].data[0] = 0; if(timer->accept_fd) { close(timer->accept_fd); timer->accept_fd = 0;