Fixed segfault issue by using MAX_CONNECTIONS instead of 'sizeof'
This commit is contained in:
11
main.c
11
main.c
@@ -20,7 +20,7 @@ int main() {
|
|||||||
socklen_t temp_addrlen;
|
socklen_t temp_addrlen;
|
||||||
|
|
||||||
fd_set read_fd_set;
|
fd_set read_fd_set;
|
||||||
int conn_sockets[MAX_CONNECTIONS] = {0};
|
int conn_sockets[MAX_CONNECTIONS] = {-1};
|
||||||
FD_ZERO(&read_fd_set);
|
FD_ZERO(&read_fd_set);
|
||||||
char buffer[BUFFER_SIZE];
|
char buffer[BUFFER_SIZE];
|
||||||
User* users = create_user_list("user_file.txt");
|
User* users = create_user_list("user_file.txt");
|
||||||
@@ -33,7 +33,7 @@ int main() {
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
FD_ZERO(&read_fd_set);
|
FD_ZERO(&read_fd_set);
|
||||||
for (int i=0; i < sizeof(conn_sockets); i++) {
|
for (int i=0; i < MAX_CONNECTIONS; i++) {
|
||||||
if (conn_sockets[i] > 0) {
|
if (conn_sockets[i] > 0) {
|
||||||
FD_SET(conn_sockets[i],&read_fd_set);
|
FD_SET(conn_sockets[i],&read_fd_set);
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@ int main() {
|
|||||||
if (num_conns > 0) {
|
if (num_conns > 0) {
|
||||||
if (FD_ISSET(conn_sockets[0],&read_fd_set)) {
|
if (FD_ISSET(conn_sockets[0],&read_fd_set)) {
|
||||||
int client_sock = accept(conn_sockets[0],&temp_addr,&temp_addrlen);
|
int client_sock = accept(conn_sockets[0],&temp_addr,&temp_addrlen);
|
||||||
for (int i=0;i < sizeof(conn_sockets); i++) {
|
for (int i=0;i < MAX_CONNECTIONS; i++) {
|
||||||
if (conn_sockets[i] <= 0) {
|
if (conn_sockets[i] <= 0) {
|
||||||
conn_sockets[i] = client_sock;
|
conn_sockets[i] = client_sock;
|
||||||
break;
|
break;
|
||||||
@@ -52,13 +52,12 @@ int main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=1; i < sizeof(conn_sockets); i++) {
|
for (int i=1; i < MAX_CONNECTIONS; i++) {
|
||||||
printf("Checking FD: %d\n",i);
|
|
||||||
if (FD_ISSET(conn_sockets[i],&read_fd_set)) {
|
if (FD_ISSET(conn_sockets[i],&read_fd_set)) {
|
||||||
int num_bytes_read = recv(conn_sockets[i],buffer,sizeof(buffer),0);
|
int num_bytes_read = recv(conn_sockets[i],buffer,sizeof(buffer),0);
|
||||||
if (num_bytes_read <= 0) {
|
if (num_bytes_read <= 0) {
|
||||||
close(conn_sockets[i]);
|
close(conn_sockets[i]);
|
||||||
conn_sockets[i] = -1;
|
conn_sockets[i] = 0;
|
||||||
} else {
|
} else {
|
||||||
for (int i=0;i<num_bytes_read;i++) {
|
for (int i=0;i<num_bytes_read;i++) {
|
||||||
printf("%c",buffer[i]);
|
printf("%c",buffer[i]);
|
||||||
|
Reference in New Issue
Block a user