title: XMS IBytesMessage causing problems with split ZIP file
body: <p>Since upgrading MQ to "IBM MQ Explorer V9.1", the XMS libraries that always worked in previous versions have started behaving differently.</p>
  
  <p>Essentially, the code still recognises the messages as IBytesMessage type, and successfully writes them to file via a Byte array, but the file itself, which is a split zip file, fails to reconstitute itself.</p>
  
  <p>Here's the lions share of that code:</p>
  
  <pre><code>
  Dim FactoryFactory As XMSFactoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ)
  
              'Create a ConnectionFactory Object
              cfConnectionFactory = FactoryFactory.CreateConnectionFactory()
  
              'this variable will contain the full path of any file downloaded from MQ
              Dim strMQMessageOutputFileDestinationFilePath As String = ""
  
              'This variable will be used to evaluate whether the MQ Message Output file exists
              Dim fiMQMessageOutputFile As FileInfo = Nothing
  
  
              'Set various Connection Factory properties
              cfConnectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, Me.HostName)
              cfConnectionFactory.SetIntProperty(XMSC.WMQ_PORT, 1414)
              cfConnectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN")
              cfConnectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, 1)
  
  
              cfConnectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, Me.QueueManager)
              cfConnectionFactory.SetIntProperty(XMSC.WMQ_BROKER_VERSION, 0)
  
  
              'Create a new Iconnection object via the Connection Factory
              connection = cfConnectionFactory.CreateConnection()
  
              'Create a sesion via the Connection Object, using ClientAcknowledge mode
              'ClientAcknowledge is being used because it allows us to control precisely 
              'when a message should be removed from the queue
              session = connection.CreateSession(False, AcknowledgeMode.ClientAcknowledge)
  
  
              'Create a destination using the Session Object
              destination = session.CreateQueue(Me.mstrDestinationURI)
  
              destination.SetIntProperty(XMSC.DELIVERY_MODE, 1)
  
              'Create a consumer using the Session &amp; Destination Objects
              Consumer = session.CreateConsumer(destination)
  
              connection.Start()
  
              'IMessage is the base class that is returned from the Consumer's Receive method
              Dim recvMsg As IMessage = Nothing
  
              ' Retrieve message from Queue
               recvMsg = Consumer.ReceiveNoWait
  
                       strFileNameFromMsg = If(Not recvMsg.PropertyExists("fileName"), "",
                       recvMsg.GetStringProperty("fileName"))
  
                      If TypeOf (recvMsg) Is IBytesMessage Then
                          'Binary Message
                          Dim msg As IBytesMessage = CType(recvMsg, IBytesMessage)
                          Dim buffer(msg.BodyLength) As Byte
  
                          msg.ReadBytes(buffer)
                          Dim content As String = Text.Encoding.UTF8.GetString(buffer)
  
                          'The PrepareDestinationFile Function will generate a unique file name for the new file
                          'and ensure that the file does not already exist on the drive
                          strMQMessageOutputFileDestinationFilePath = PrepareDestinationFile(strFileNameFromMsg)
  
  
                          'A FileStream object is needed to write a binary array to a file
                          Dim fsZipFile As FileStream = New FileStream(strMQMessageOutputFileDestinationFilePath, FileMode.Create)
  
                          'Write the contents of the Byte Array to the File via the FileStream object
                          fsZipFile.Write(buffer, 0, buffer.Length)
                          fsZipFile.Close()
  
  
                      End If
  
  </code></pre>
  
  <p>So, the code doesn't throw any kind of exception - the code still recognises the messages as IBytesMessage, but the files won't unzip correctly.</p>
  
  <p>Oddly, If we use rfhutilc.exe, we can manually pull files provided we set the Write options as No Headers and not Include MQMD - but the code above always worked in the previous version of MQ / XMS</p>
  
  <p>Any assistance you can provide would be very much appreciated.</p>