@@ -190,15 +190,27 @@ public void run() {
190
190
191
191
int bytesTransferred = 0 ;
192
192
while (bytesTransferred < bulkBuffer .length ) {
193
- int res = context .devConn .bulkTransfer (selectedEndpoint , bulkBuffer , bytesTransferred ,
194
- bulkBuffer .length - bytesTransferred , msg .interval );
193
+ byte [] remainingBuffer = new byte [bulkBuffer .length - bytesTransferred ];
194
+
195
+ if (msg .direction == UsbIpDevicePacket .USBIP_DIR_OUT ) {
196
+ // Copy input data into the new buffer
197
+ System .arraycopy (bulkBuffer , bytesTransferred , remainingBuffer , 0 , remainingBuffer .length );
198
+ }
199
+
200
+ int res = context .devConn .bulkTransfer (selectedEndpoint , remainingBuffer ,
201
+ remainingBuffer .length , msg .interval );
195
202
if (res < 0 ) {
196
203
// Failed transfer terminates the bulk transfer
197
204
System .err .println ("Bulk Xfer failed: " +res );
198
205
sendReply (replyOut , reply , ProtoDefs .ST_NA );
199
206
return ;
200
207
}
201
208
209
+ if (msg .direction == UsbIpDevicePacket .USBIP_DIR_IN ) {
210
+ // Copy output data into the original buffer
211
+ System .arraycopy (remainingBuffer , 0 , bulkBuffer , bytesTransferred , res );
212
+ }
213
+
202
214
bytesTransferred += res ;
203
215
204
216
if (res < selectedEndpoint .getMaxPacketSize ()) {
0 commit comments