Don't start a new OUT transfer when another one is still in progress
This commit is contained in:
parent
d4d3b901bd
commit
8c41aba127
35
src/main.c
35
src/main.c
|
@ -139,26 +139,27 @@ int main(int argc, char* argv[]) {
|
|||
fxlink_device_start_bulk_IN(dev);
|
||||
}
|
||||
|
||||
int bytes_socket;
|
||||
if (ioctl(client_socket, FIONREAD, &bytes_socket) < 0) {
|
||||
perror("ioctl");
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if (bytes_socket > 0) {
|
||||
char buf[1024];
|
||||
ssize_t recv_ret = recv(client_socket, buf, sizeof(buf), MSG_PEEK);
|
||||
if (recv_ret < 0) {
|
||||
perror("recv");
|
||||
// We don't want to start a new OUT transfer if another one is still in progress
|
||||
if (!dev->comm->ftransfer_OUT) {
|
||||
int bytes_socket;
|
||||
if (ioctl(client_socket, FIONREAD, &bytes_socket) < 0) {
|
||||
perror("ioctl");
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
// TODO : Figure out why we need this workaround when we go too fast
|
||||
if (!fxlink_device_start_bulk_OUT(dev, "gdb", "remote", buf, recv_ret, false)) {
|
||||
elog("unable to start bulk OUT trasfer\n");
|
||||
} else {
|
||||
ssize_t recv_ret2 = recv(client_socket, buf, recv_ret, 0);
|
||||
assert(recv_ret2 == recv_ret);
|
||||
if (bytes_socket > 0) {
|
||||
char buf[1024];
|
||||
ssize_t recv_ret = recv(client_socket, buf, sizeof(buf), 0);
|
||||
if (recv_ret < 0) {
|
||||
perror("recv");
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if (!fxlink_device_start_bulk_OUT(dev, "gdb", "remote", buf, recv_ret, false)) {
|
||||
elog("unable to start bulk OUT trasfer\n");
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue