Index: usb_core.c
===================================================================
--- usb_core.c (revision 25329)
+++ usb_core.c (working copy)
@@ -536,7 +536,6 @@
/* nope. flag error */
logf("bad req:desc %d:%d", req->bRequest, req->wValue>>8);
usb_drv_stall(EP_CONTROL, true, true);
- usb_core_ack_control(req);
}
}

@@ -744,7 +743,6 @@
/* nope. flag error */
logf("usb bad req %d",req->bRequest);
usb_drv_stall(EP_CONTROL,true,true);
- usb_core_ack_control(req);
}
}

@@ -755,13 +753,17 @@
if (req->wValue==USB_ENDPOINT_HALT) {
usb_drv_stall(EP_NUM(req->wIndex), false, EP_DIR(req->wIndex));
}
- usb_drv_send(EP_CONTROL,NULL,0);
+ else {
+ usb_drv_send(EP_CONTROL,NULL,0);
+ }
break;
case USB_REQ_SET_FEATURE:
if (req->wValue==USB_ENDPOINT_HALT) {
usb_drv_stall(EP_NUM(req->wIndex), true, EP_DIR(req->wIndex));
}
- usb_drv_send(EP_CONTROL,NULL,0);
+ else {
+ usb_drv_send(EP_CONTROL,NULL,0);
+ }
break;
case USB_REQ_GET_STATUS:
response_data[0]=0;