summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-01-21 21:47:47 +0100
committertomsmeding <tom.smeding@gmail.com>2017-01-21 21:47:47 +0100
commit9e3c2b0635e68b59c040cb66e032b6c359a28bd9 (patch)
treeb176435e8e6f4cda6ffb9a62bfac0f47087a3216
parent0cbc19919b1eff010392b71e9f5f4119ef6da3c7 (diff)
Fix some protocol bugs
-rw-r--r--main.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/main.c b/main.c
index cab2ae2..0e7c518 100644
--- a/main.c
+++ b/main.c
@@ -276,7 +276,7 @@ i64 handle_message(Connection *conn){
}
const char *gameid=args[0],*roomid=args[1];
Room *room=room_find(&rooms,gameid,roomid);
- if(room==NULL)return tcp_send_line(conn->sock,"error Room not found");
+ if(room==NULL)return tcp_send_line(conn->sock,"error room_join Room not found");
if(LIST_FIND(&room->members,conn)!=-1){
return tcp_send_line(conn->sock,"error room_join Already in room");
}
@@ -355,10 +355,6 @@ i64 handle_message(Connection *conn){
if(strlen(args[0])==0||strlen(args[1])==0){
return tcp_send_line(conn->sock,"error room_message Invalid command format");
}
- const char *gameid=args[0],*roomid=args[1];
- Room *room=room_find(&rooms,gameid,roomid);
- if(room==NULL)return tcp_send_line(conn->sock,"error room_message Room not found");
- if(LIST_FIND(&room->members,conn)==-1)return tcp_send_line(conn->sock,"error room_message Not in room");
char *endp;
i64 targetid=strtoll(args[2],&endp,10);
@@ -370,6 +366,11 @@ i64 handle_message(Connection *conn){
return tcp_send_line(conn->sock,"error room_message Invalid command format");
}
+ const char *gameid=args[0],*roomid=args[1];
+ Room *room=room_find(&rooms,gameid,roomid);
+ if(room==NULL)return tcp_send_line(conn->sock,"error room_message Room not found");
+ if(LIST_FIND(&room->members,conn)==-1)return tcp_send_line(conn->sock,"error room_message Not in room");
+
i64 idx;
for(idx=0;idx<room->members.len;idx++){
if(room->members.d[idx]->id==targetid)break;
@@ -383,7 +384,8 @@ i64 handle_message(Connection *conn){
free(buf);
return -1;
}
- tcp_send_line_f(room->members.d[idx]->sock,"room_message %" PRIi64 " %" PRIi64,conn->id,msglength);
+ tcp_send_line_f(room->members.d[idx]->sock,"room_message %s %s %" PRIi64 " %" PRIi64,
+ room->gameid,room->roomid,conn->id,msglength);
tcp_send_data(room->members.d[idx]->sock,buf,msglength);
free(buf);
return tcp_send_line(conn->sock,"ok room_message");