From 9e3c2b0635e68b59c040cb66e032b6c359a28bd9 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sat, 21 Jan 2017 21:47:47 +0100 Subject: Fix some protocol bugs --- main.c | 14 ++++++++------ 1 file 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;idxmembers.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"); -- cgit v1.2.3