diff --git a/migen/sim/ipc.py b/migen/sim/ipc.py index 4e0fa5299..c6124bb6c 100644 --- a/migen/sim/ipc.py +++ b/migen/sim/ipc.py @@ -190,21 +190,22 @@ class Initiator: def send(self, message): self.conn.send(_pack(message)) - def recv(self): - maxlen = 2048 + def recv_packet(self, maxlen): if sys.platform == "win32": - def recv_packet(): - while len(self.ipc_rxbuffer) < header_len: - self.ipc_rxbuffer += self.conn.recv(maxlen) - packet_len = struct.unpack("= maxlen: diff --git a/vpi/ipc.c b/vpi/ipc.c index 21b1efe0a..55de27e95 100644 --- a/vpi/ipc.c +++ b/vpi/ipc.c @@ -132,17 +132,17 @@ static int ipc_receive_packet(struct ipc_softc *sc, unsigned char *buffer) { int len; int packet_len; /* ensure we have packet header */ - while (ipc_rxlen < WIN32_HEADER_LEN) { + while(ipc_rxlen < WIN32_HEADER_LEN) { len = recv(sc->socket, (char *)&ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0); - if (len) + if(len) ipc_rxlen += len; } /* compute packet length and ensure we have the payload */ - packet_len = ((ipc_rxbuffer[1] << 8) | (ipc_rxbuffer[0])); - while (ipc_rxlen < packet_len) { - len = recv(sc->socket, (char *) &ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0); - if (len) + packet_len = (ipc_rxbuffer[1] << 8) | ipc_rxbuffer[0]; + while(ipc_rxlen < packet_len) { + len = recv(sc->socket, (char *)&ipc_rxbuffer[ipc_rxlen], MAX_LEN, 0); + if(len) ipc_rxlen += len; }