diff --git a/src/network/net_modem.c b/src/network/net_modem.c index bbcef00d1..fe8ebfc57 100644 --- a/src/network/net_modem.c +++ b/src/network/net_modem.c @@ -113,6 +113,7 @@ typedef struct modem_t bool echo, numericresponse; bool tcpIpMode, tcpIpConnInProgress; bool telnet_mode; + bool dtrstate; uint32_t tcpIpConnCounter; int doresponse; @@ -957,6 +958,7 @@ void modem_dtr_callback(serial_t* serial, int status, void *priv) { modem_t *dev = (modem_t *) priv; + dev->dtrstate = !!status; if (status == 1) timer_disable(&dev->dtr_timer); else if (!timer_is_enabled(&dev->dtr_timer)) @@ -1207,7 +1209,7 @@ modem_cmdpause_timer_callback(void *priv) if (!modem->connected && modem->waitingclientsocket == -1 && modem->serversocket != -1) { modem->waitingclientsocket = plat_netsocket_accept(modem->serversocket); if (modem->waitingclientsocket != -1) { - if (!(modem->serial->mctrl & 1) && modem->dtrmode != 0) { + if (modem->dtrstate == 0 && modem->dtrmode != 0) { modem_enter_idle_state(modem); } else { modem->ringing = true; diff --git a/src/unix/unix_netsocket.c b/src/unix/unix_netsocket.c index e65b53bee..9e9ac2f49 100644 --- a/src/unix/unix_netsocket.c +++ b/src/unix/unix_netsocket.c @@ -64,7 +64,7 @@ SOCKET plat_netsocket_create_server(int type, unsigned short port) sock_addr.sin_family = AF_INET; sock_addr.sin_addr.s_addr = INADDR_ANY; - sock_addr.sin_port = port; + sock_addr.sin_port = htons(port); if (bind(fd, (struct sockaddr *)&sock_addr, sizeof(struct sockaddr_in)) == -1) { plat_netsocket_close(fd); diff --git a/src/win/win_netsocket.c b/src/win/win_netsocket.c index 0f8c5f87a..902d5e6ff 100644 --- a/src/win/win_netsocket.c +++ b/src/win/win_netsocket.c @@ -53,7 +53,7 @@ SOCKET plat_netsocket_create_server(int type, unsigned short port) sock_addr.sin_family = AF_INET; sock_addr.sin_addr.s_addr = INADDR_ANY; - sock_addr.sin_port = port; + sock_addr.sin_port = htons(port); if (bind(socket, (struct sockaddr *)&sock_addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { plat_netsocket_close(socket);