@@ -511,7 +511,7 @@ impl RawClient<ElectrumProxyStream> {
511511
512512#[ derive( Debug ) ]
513513enum ChannelMessage {
514- Response ( serde_json:: Value ) ,
514+ Response ( ( usize , serde_json:: Value ) ) ,
515515 WakeUp ,
516516 Error ( Arc < std:: io:: Error > ) ,
517517}
@@ -605,7 +605,8 @@ impl<S: Read + Write> RawClient<S> {
605605 trace ! ( "Reader thread received response for {}" , resp_id) ;
606606
607607 if let Some ( sender) = self . waiting_map . lock ( ) ?. remove ( & resp_id) {
608- sender. send ( ChannelMessage :: Response ( resp) ) ?;
608+ log:: debug!( "Sending resp_id {resp_id}" ) ;
609+ sender. send ( ChannelMessage :: Response ( ( resp_id, resp) ) ) ?;
609610 } else {
610611 warn ! ( "Missing listener for {}" , resp_id) ;
611612 }
@@ -657,12 +658,12 @@ impl<S: Read + Write> RawClient<S> {
657658 self . increment_calls ( ) ;
658659
659660 let mut resp = match self . recv ( & receiver, req. id ) {
660- Ok ( resp) => resp,
661- e @ Err ( _ ) => {
661+ Ok ( ( _ , resp) ) => resp,
662+ Err ( e ) => {
662663 // In case of error our sender could still be left in the map, depending on where
663664 // the error happened. Just in case, try to remove it here
664665 self . waiting_map . lock ( ) ?. remove ( & req. id ) ;
665- return e ;
666+ return Err ( e ) ;
666667 }
667668 } ;
668669 Ok ( resp[ "result" ] . take ( ) )
@@ -672,16 +673,16 @@ impl<S: Read + Write> RawClient<S> {
672673 & self ,
673674 receiver : & Receiver < ChannelMessage > ,
674675 req_id : usize ,
675- ) -> Result < serde_json:: Value , Error > {
676+ ) -> Result < ( usize , serde_json:: Value ) , Error > {
676677 loop {
677678 // Try to take the lock on the reader. If we manage to do so, we'll become the reader
678679 // thread until we get our reponse
679680 match self . _reader_thread ( Some ( req_id) ) {
680- Ok ( response) => break Ok ( response) ,
681+ Ok ( response) => break Ok ( ( req_id , response) ) ,
681682 Err ( Error :: CouldntLockReader ) => {
682683 match receiver. recv ( ) ? {
683- // Received our response, returning it
684- ChannelMessage :: Response ( received ) => break Ok ( received ) ,
684+ // Received a response, returning it
685+ ChannelMessage :: Response ( ( resp_id , resp ) ) => break Ok ( ( resp_id , resp ) ) ,
685686 ChannelMessage :: WakeUp => {
686687 // We have been woken up, this means that we should try becoming the
687688 // reader thread ourselves
@@ -696,7 +697,7 @@ impl<S: Read + Write> RawClient<S> {
696697 }
697698 }
698699 }
699- e @ Err ( _ ) => break e ,
700+ Err ( e ) => break Err ( e ) ,
700701 }
701702 }
702703 }
@@ -798,7 +799,10 @@ impl<T: Read + Write> ElectrumApi for RawClient<T> {
798799
799800 for req_id in missing_responses. iter ( ) {
800801 match self . recv ( & receiver, * req_id) {
801- Ok ( mut resp) => answers. insert ( req_id, resp[ "result" ] . take ( ) ) ,
802+ Ok ( ( resp_id, mut resp) ) => {
803+ log:: debug!( "Received resp_id {resp_id}" ) ;
804+ answers. insert ( resp_id, resp[ "result" ] . take ( ) ) ;
805+ }
802806 Err ( e) => {
803807 // In case of error our sender could still be left in the map, depending on where
804808 // the error happened. Just in case, try to remove it here
0 commit comments