@@ -721,18 +721,48 @@ sub doOpenMulti {
721721 print " Failed openMulti\n " ;
722722 exit 1;
723723 }
724+ my $haveGoodResponse = 0;
725+ my $haveErrorResponse = 0;
726+ my $haveUnknownResponse = 0;
727+ while ( $response = readPacket( $fd , 2 ) ) {
728+ my @responseBytes = unpack ( ' C*' , $response );
729+ if ( scalar @responseBytes == 2
730+ && $responseBytes [0] == 0x1c
731+ && $responseBytes [1] == 0 )
732+ {
733+ $haveGoodResponse = 1;
734+ }
735+ elsif ( $responseBytes [0] == 0x0e ) {
724736
725- if ( !( $response = readPacket( $fd , 2.0 ) ) ) {
726- print " Failed to read response.\n " ;
727- exit 1;
728- }
737+ # msg
738+ my $msg = pack ( ' C*' ,
739+ map { hex }
740+ split ( / \s / , serialize( substr ( $response , 1 ) ) ) );
741+ $msg =~ tr / \n/ / ;
742+ $msg =~ tr / \r/ / ;
743+ print " MSG: " , $msg , " \n " ;
744+ }
745+ elsif ( $responseBytes [0] == 0x0d ) {
729746
730- my @responseBytes = unpack ( ' C*' , $response );
731- if ( scalar @responseBytes != 2
732- || $responseBytes [0] != 0x1c
733- || $responseBytes [1] != 0 )
747+ # error
748+ $haveErrorResponse = 1;
749+ my $msg = pack ( ' C*' ,
750+ map { hex }
751+ split ( / \s / , serialize( substr ( $response , 5 ) ) ) );
752+ $msg =~ tr / \n// d;
753+ $msg =~ tr / \r// d;
754+ print " ERROR: " , $msg , " \n " ;
755+ }
756+ else {
757+ $haveUnknownResponse = 1;
758+ print " Response: " , serialize($response ), " \n " ;
759+ }
760+ }
761+ if ( $haveGoodResponse != 1
762+ || $haveErrorResponse == 1
763+ || $haveUnknownResponse == 1 )
734764 {
735- print " Invalid Response: " , serialize( $ response), " \n " ;
765+ print " Invalid openMulti response. \n " ;
736766 exit 1;
737767 }
738768}
0 commit comments