Skip to content

Commit 1c21401

Browse files
committed
cannot connect as existing user
1 parent b7e95e9 commit 1c21401

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/chat.h

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#define LIST "list\n"
1010

11+
#define ERROR "error\n"
12+
1113
#define USERNAMExMESSAGE ": "
1214

1315
// General

src/client.c

+10-2
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,15 @@ void *receiver() {
147147
}
148148

149149
receiveBuffer[nbytes] = '\0';
150-
printf("%s", receiveBuffer);
151-
pthread_mutex_unlock(&mutexsum);
150+
if(strcmp(ERROR, receiveBuffer) == 0) {
151+
printf("Error: The username %s is already taken.\n", sendBuffer);
152+
done = TRUE;
153+
pthread_mutex_destroy(&mutexsum);
154+
pthread_exit(NULL);
155+
}
156+
else {
157+
printf("%s", receiveBuffer);
158+
pthread_mutex_unlock(&mutexsum);
159+
}
152160
}
153161
}

src/server.c

+9
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,15 @@ int connectClient(struct sockaddr_in newClient, char *username) {
100100
while(element != NULL) {
101101
if(strcmp(element->username, username) == 0) {
102102
printf("Cannot connect client user already exists\n");
103+
strcpy(responseBuffer, "");
104+
strcat(responseBuffer, ERROR);
105+
if((sendto
106+
(sockfd, responseBuffer, strlen(responseBuffer), 0, (struct sockaddr *) &newClient,
107+
sizeof(struct sockaddr))) == SYSERR) {
108+
perror("sendto");
109+
close(sockfd);
110+
exit(EXIT_FAILURE);
111+
}
103112
return SYSERR;
104113
}
105114
element = element->next;

0 commit comments

Comments
 (0)