diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-01-21 21:47:47 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-01-21 21:47:47 +0100 |
commit | 9e3c2b0635e68b59c040cb66e032b6c359a28bd9 (patch) | |
tree | b176435e8e6f4cda6ffb9a62bfac0f47087a3216 | |
parent | 0cbc19919b1eff010392b71e9f5f4119ef6da3c7 (diff) |
Fix some protocol bugs
-rw-r--r-- | main.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -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"); |