Skip to content

Commit 756af0c

Browse files
committed
refact: to use queue
1 parent 97afe99 commit 756af0c

File tree

1 file changed

+33
-27
lines changed

1 file changed

+33
-27
lines changed

source/prime-time/main.c

+33-27
Original file line numberDiff line numberDiff line change
@@ -43,40 +43,41 @@ int handle_request(struct queue *sdq, int fd, char* raw_req, size_t size)
4343
}
4444

4545
// Split and handle requests here
46-
struct is_prime_request *req = NULL, *it = NULL;
47-
int r = is_prime_request_builder(&req, raw_req, size);
46+
struct is_prime_request *req = NULL;
47+
int r = is_prime_request_builder(sdq, &req, raw_req, size);
4848
if (r <= 0) {
4949
log_warn("recv_and_handle: is_prime_request_builder returned '%d'", r);
5050
return -1;
5151
}
5252

53-
int l = 0, sl = 0, res = 0, mal = 0;
54-
for (it = req; it != NULL; it = it->next) {
55-
l = (int)strlen(it->response);
56-
sl = l;
57-
res = sendall(fd, it->response, &l);
58-
if (res != 0) {
59-
log_error("handle_request: failed during sendall function");
60-
if (req != NULL)
61-
is_prime_free(&req);
62-
return -2;
63-
}
64-
if (sl != l) {
65-
log_error("handle_request: failed to sendall the data");
66-
if (req != NULL)
67-
is_prime_free(&req);
68-
return -3;
69-
}
70-
71-
if (it->is_malformed) {
72-
mal = 1;
73-
break;
74-
}
75-
}
53+
/*int l = 0, sl = 0, res = 0, mal = 0;*/
54+
/*for (it = req; it != NULL; it = it->next) {*/
55+
/* l = (int)strlen(it->response);*/
56+
/* sl = l;*/
57+
/* res = sendall(fd, it->response, &l);*/
58+
/* if (res != 0) {*/
59+
/* log_error("handle_request: failed during sendall function");*/
60+
/* if (req != NULL)*/
61+
/* is_prime_free(&req);*/
62+
/* return -2;*/
63+
/* }*/
64+
/* if (sl != l) {*/
65+
/* log_error("handle_request: failed to sendall the data");*/
66+
/* if (req != NULL)*/
67+
/* is_prime_free(&req);*/
68+
/* return -3;*/
69+
/* }*/
70+
/**/
71+
/* if (it->is_malformed) {*/
72+
/* mal = 1;*/
73+
/* break;*/
74+
/* }*/
75+
/*}*/
7676

7777
if (req != NULL)
7878
is_prime_free(&req);
79-
return (mal == 1 ? 0 : 1);
79+
return 1;
80+
/*return (mal == 1 ? 0 : 1);*/
8081
}
8182

8283
int main()
@@ -160,7 +161,7 @@ int main()
160161
// Handle there's data to process
161162
if (size > 0) {
162163
log_trace("main epoll loop: raw request(%d): '%s'", fd, data);
163-
int result = handle_request(fd, data, (size_t)size);
164+
int result = handle_request(sdqu, fd, data, (size_t)size);
164165
if (result <= 0) {
165166
if (result == 0)
166167
log_info("main epoll loop: there was a malformed respoonse. need to close socket");
@@ -172,6 +173,11 @@ int main()
172173
}
173174
continue;
174175
}
176+
size = queue_pop_no_copy(sdqu, &data);
177+
res = sendall(fd, data, &size);
178+
if (res != 0) {
179+
log_error("handle_request: failed during sendall function");
180+
}
175181
}
176182

177183
// Handle socket still open

0 commit comments

Comments
 (0)