@@ -826,7 +826,9 @@ static int msg_send_on_answer (struct query *q UU) {
826826 assert (x == CODE_messages_sent_message || x == CODE_messages_sent_message_link );
827827 int id = fetch_int (); // id
828828 struct tgl_message * M = q -> extra ;
829- bl_do_set_msg_id (M , id );
829+ if (M -> id != id ) {
830+ bl_do_set_msg_id (M , id );
831+ }
830832 int date = fetch_int ();
831833 int pts = fetch_int ();
832834 //tglu_fetch_seq ();
@@ -837,8 +839,10 @@ static int msg_send_on_answer (struct query *q UU) {
837839 bl_do_set_pts (pts );
838840 bl_do_msg_seq_update (id );
839841 } else {
840- vlogprintf (E_NOTICE , "Hole in seq\n" );
841- tgl_do_get_difference (0 , 0 , 0 );
842+ if (seq > tgl_state .seq + 1 ) {
843+ vlogprintf (E_NOTICE , "Hole in seq\n" );
844+ tgl_do_get_difference (0 , 0 , 0 );
845+ }
842846 }
843847 if (x == CODE_messages_sent_message_link ) {
844848 assert (skip_type_any (TYPE_TO_PARAM_1 (vector , TYPE_TO_PARAM (contacts_link ))) >= 0 );
@@ -1066,7 +1070,10 @@ static int mark_read_on_receive (struct query *q UU) {
10661070 bl_do_set_pts (pts );
10671071 bl_do_set_seq (seq );
10681072 } else {
1069- tgl_do_get_difference (0 , 0 , 0 );
1073+ if (seq > tgl_state .seq + 1 ) {
1074+ vlogprintf (E_NOTICE , "Hole in seq\n" );
1075+ tgl_do_get_difference (0 , 0 , 0 );
1076+ }
10701077 }
10711078
10721079 int offset = fetch_int (); // offset
@@ -1394,8 +1401,10 @@ static int send_file_on_answer (struct query *q UU) {
13941401 bl_do_set_pts (pts );
13951402 bl_do_msg_seq_update (M -> id );
13961403 } else {
1397- vlogprintf (E_NOTICE , "Hole in seq\n" );
1398- tgl_do_get_difference (0 , 0 , 0 );
1404+ if (seq > tgl_state .seq + 1 ) {
1405+ vlogprintf (E_NOTICE , "Hole in seq\n" );
1406+ tgl_do_get_difference (0 , 0 , 0 );
1407+ }
13991408 }
14001409
14011410 if (q -> callback ) {
@@ -1814,8 +1823,10 @@ static int fwd_msg_on_answer (struct query *q UU) {
18141823 bl_do_set_pts (pts );
18151824 bl_do_msg_seq_update (M -> id );
18161825 } else {
1817- vlogprintf (E_NOTICE , "Hole in seq\n" );
1818- tgl_do_get_difference (0 , 0 , 0 );
1826+ if (seq > tgl_state .seq + 1 ) {
1827+ vlogprintf (E_NOTICE , "Hole in seq\n" );
1828+ tgl_do_get_difference (0 , 0 , 0 );
1829+ }
18191830 }
18201831 //print_message (M);
18211832 if (q -> callback ) {
@@ -1952,8 +1963,10 @@ static int rename_chat_on_answer (struct query *q UU) {
19521963 bl_do_set_pts (pts );
19531964 bl_do_msg_seq_update (M -> id );
19541965 } else {
1955- vlogprintf (E_NOTICE , "Hole in seq\n" );
1956- tgl_do_get_difference (0 , 0 , 0 );
1966+ if (seq > tgl_state .seq + 1 ) {
1967+ vlogprintf (E_NOTICE , "Hole in seq\n" );
1968+ tgl_do_get_difference (0 , 0 , 0 );
1969+ }
19571970 }
19581971 //print_message (M);
19591972 if (q -> callback ) {
0 commit comments