Lines Matching refs:msg

99 lwip_netconn_is_deallocated_msg(void *msg)
101 if (msg == &netconn_deleted) {
131 lwip_netconn_is_err_msg(void *msg, err_t *err)
135 if (msg == &netconn_aborted) {
138 } else if (msg == &netconn_reset) {
141 } else if (msg == &netconn_closed) {
297 void *msg;
324 msg = p;
327 msg = LWIP_CONST_CAST(void *, &netconn_closed);
331 if (sys_mbox_trypost(&conn->recvmbox, msg) != ERR_OK) {
368 if (conn->current_msg && conn->current_msg->msg.sd.polls_left) {
369 conn->current_msg->msg.sd.polls_left--;
635 * @param msg the api_msg describing the connection type
639 pcb_new(struct api_msg *msg, struct net_group *group)
641 pcb_new(struct api_msg *msg)
646 LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL);
650 if (NETCONNTYPE_ISIPV6(netconn_type(msg->conn))) {
656 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
659 msg->conn->pcb.raw = raw_new_ip_type(iptype, msg->msg.n.proto);
660 if (msg->conn->pcb.raw != NULL) {
662 set_raw_pcb_net_group(msg->conn->pcb.raw, group);
666 if (NETCONNTYPE_ISIPV6(msg->conn->type) && msg->conn->pcb.raw->protocol == IP6_NEXTH_ICMP6) {
667 msg->conn->pcb.raw->chksum_reqd = 1;
668 msg->conn->pcb.raw->chksum_offset = 2;
671 raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
677 msg->conn->pcb.udp = udp_new_ip_type(iptype);
678 if (msg->conn->pcb.udp != NULL) {
680 set_udp_pcb_net_group(msg->conn->pcb.udp, group);
683 if (NETCONNTYPE_ISUDPLITE(msg->conn->type)) {
684 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);
687 if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) {
688 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
690 udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
696 msg->conn->pcb.tcp = tcp_new_ip_type(iptype);
697 if (msg->conn->pcb.tcp != NULL) {
699 set_tcp_pcb_net_group(msg->conn->pcb.tcp, group);
701 setup_tcp(msg->conn);
707 msg->err = ERR_VAL;
710 if (msg->conn->pcb.ip == NULL) {
711 msg->err = ERR_MEM;
724 struct api_msg *msg = (struct api_msg *)m;
726 msg->err = ERR_OK;
727 if (msg->conn->pcb.tcp == NULL) {
729 pcb_new(msg, get_curr_process_net_group());
731 pcb_new(msg);
738 TCPIP_APIMSG_ACK(msg);
944 void *msg = LWIP_CONST_CAST(void *, &netconn_deleted);
952 sys_mbox_trypost(&conn->recvmbox, msg);
954 sys_mbox_trypost(&conn->acceptmbox, msg);
986 shut = conn->current_msg->msg.sd.shut;
1040 } else if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >=
1089 if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >= close_timeout) {
1091 if (conn->current_msg->msg.sd.polls_left == 0) {
1164 struct api_msg *msg = (struct api_msg *)m;
1166 enum netconn_state state = msg->conn->state;
1168 (state == NETCONN_NONE) || (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP));
1173 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1176 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1177 op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1178 msg->conn->current_msg->err = ERR_CLSD;
1179 msg->conn->current_msg = NULL;
1180 msg->conn->state = NETCONN_NONE;
1188 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1191 msg->err = ERR_INPROGRESS;
1196 (state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn));
1197 msg->err = ERR_OK;
1200 netconn_mark_mbox_invalid(msg->conn);
1202 netconn_drain(msg->conn);
1205 if (msg->conn->pcb.tcp != NULL) {
1207 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1210 raw_remove(msg->conn->pcb.raw);
1215 msg->conn->pcb.udp->recv_arg = NULL;
1216 udp_remove(msg->conn->pcb.udp);
1221 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1222 msg->conn->state = NETCONN_CLOSE;
1223 msg->msg.sd.shut = NETCONN_SHUT_RDWR;
1224 msg->conn->current_msg = msg;
1226 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1227 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1229 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1231 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1234 lwip_netconn_do_close_internal(msg->conn);
1243 msg->conn->pcb.tcp = NULL;
1249 API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
1250 API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
1252 if (sys_sem_valid(LWIP_API_MSG_SEM(msg))) {
1253 TCPIP_APIMSG_ACK(msg);
1267 struct api_msg *msg = (struct api_msg *)m;
1270 if (msg->conn->pcb.tcp != NULL) {
1271 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1274 err = raw_bind(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1279 err = udp_bind(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1284 err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1294 msg->err = err;
1295 TCPIP_APIMSG_ACK(msg);
1309 struct api_msg *msg = (struct api_msg *)m;
1312 struct net_group *group = get_net_group_from_ippcb(msg->conn->pcb.ip);
1315 netif = netif_get_by_index(msg->msg.bc.if_idx, group);
1320 netif = netif_get_by_index(msg->msg.bc.if_idx);
1323 if ((netif != NULL) && (msg->conn->pcb.tcp != NULL)) {
1325 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1328 raw_bind_netif(msg->conn->pcb.raw, netif);
1333 udp_bind_netif(msg->conn->pcb.udp, netif);
1338 tcp_bind_netif(msg->conn->pcb.tcp, netif);
1348 msg->err = err;
1349 TCPIP_APIMSG_ACK(msg);
1411 struct api_msg *msg = (struct api_msg *)m;
1414 if (msg->conn->pcb.tcp == NULL) {
1418 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1421 err = raw_connect(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1426 err = udp_connect(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1432 if (msg->conn->state == NETCONN_CONNECT) {
1434 } else if (msg->conn->state != NETCONN_NONE) {
1437 setup_tcp(msg->conn);
1438 err = tcp_connect(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr),
1439 msg->msg.bc.port, lwip_netconn_do_connected);
1441 u8_t non_blocking = netconn_is_nonblocking(msg->conn);
1442 msg->conn->state = NETCONN_CONNECT;
1443 SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
1447 msg->conn->current_msg = msg;
1451 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CONNECT);
1453 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1455 LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
1470 msg->err = err;
1473 TCPIP_APIMSG_ACK(msg);
1486 struct api_msg *msg = (struct api_msg *)m;
1489 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1490 udp_disconnect(msg->conn->pcb.udp);
1491 msg->err = ERR_OK;
1495 msg->err = ERR_VAL;
1497 TCPIP_APIMSG_ACK(msg);
1510 struct api_msg *msg = (struct api_msg *)m;
1513 if (msg->conn->pcb.tcp != NULL) {
1514 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1515 if (msg->conn->state == NETCONN_NONE) {
1517 if (msg->conn->pcb.tcp->state != CLOSED) {
1523 backlog = msg->msg.lb.backlog;
1531 if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
1532 (netconn_get_ipv6only(msg->conn) == 0)) {
1534 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->local_ip, IPADDR_TYPE_ANY);
1535 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->remote_ip, IPADDR_TYPE_ANY);
1539 lpcb = tcp_listen_with_backlog_and_err(msg->conn->pcb.tcp, backlog, &err);
1545 if (sys_mbox_valid(&msg->conn->recvmbox)) {
1547 sys_mbox_free(&msg->conn->recvmbox);
1548 sys_mbox_set_invalid(&msg->conn->recvmbox);
1551 if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
1552 err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
1555 msg->conn->state = NETCONN_LISTEN;
1556 msg->conn->pcb.tcp = lpcb;
1557 tcp_arg(msg->conn->pcb.tcp, msg->conn);
1558 tcp_accept(msg->conn->pcb.tcp, accept_function);
1562 msg->conn->pcb.tcp = NULL;
1566 } else if (msg->conn->state == NETCONN_LISTEN) {
1569 tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
1579 msg->err = err;
1580 TCPIP_APIMSG_ACK(msg);
1593 struct api_msg *msg = (struct api_msg *)m;
1595 err_t err = netconn_err(msg->conn);
1597 if (msg->conn->pcb.tcp != NULL) {
1598 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1601 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1602 err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
1604 err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
1611 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1612 err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1613 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1615 err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1616 &msg->msg.b->addr, msg->msg.b->port,
1617 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1620 if (ip_addr_isany_val(msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1621 err = udp_send(msg->conn->pcb.udp, msg->msg.b->p);
1623 err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port);
1636 msg->err = err;
1637 TCPIP_APIMSG_ACK(msg);
1650 struct api_msg *msg = (struct api_msg *)m;
1652 msg->err = ERR_OK;
1653 if (msg->conn->pcb.tcp != NULL) {
1654 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1655 size_t remaining = msg->msg.r.len;
1658 tcp_recved(msg->conn->pcb.tcp, recved);
1663 TCPIP_APIMSG_ACK(msg);
1675 struct api_msg *msg = (struct api_msg *)m;
1677 msg->err = ERR_OK;
1678 if (msg->conn->pcb.tcp != NULL) {
1679 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1680 tcp_backlog_accepted(msg->conn->pcb.tcp);
1683 TCPIP_APIMSG_ACK(msg);
1714 LWIP_ASSERT("conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len",
1715 conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len);
1716 LWIP_ASSERT("conn->current_msg->msg.w.vector_cnt > 0", conn->current_msg->msg.w.vector_cnt > 0);
1718 apiflags = conn->current_msg->msg.w.apiflags;
1723 ((s32_t)(sys_now() - conn->current_msg->msg.w.time_started) >= conn->send_timeout)) {
1725 if (conn->current_msg->msg.w.offset == 0) {
1736 dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
1737 diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
1751 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1759 ((conn->current_msg->msg.w.vector_off + len) <= conn->current_msg->msg.w.vector->len));
1765 (len == (u16_t)diff && conn->current_msg->msg.w.vector_cnt > 1)) {
1773 conn->current_msg->msg.w.offset += len;
1774 conn->current_msg->msg.w.vector_off += len;
1776 if (conn->current_msg->msg.w.vector_off == conn->current_msg->msg.w.vector->len) {
1777 conn->current_msg->msg.w.vector_cnt--;
1779 if (conn->current_msg->msg.w.vector_cnt > 0) {
1780 conn->current_msg->msg.w.vector++;
1781 conn->current_msg->msg.w.vector_off = 0;
1789 if (dontblock && (conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len)) {
1804 if ((conn->current_msg->msg.w.offset == conn->current_msg->msg.w.len) || dontblock) {
1805 /* return sent length (caller reads length from msg.w.offset) */
1833 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1874 struct api_msg *msg = (struct api_msg *)m;
1876 err_t err = netconn_err(msg->conn);
1878 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1880 if (msg->conn->state != NETCONN_NONE) {
1883 } else if (msg->conn->pcb.tcp != NULL) {
1884 msg->conn->state = NETCONN_WRITE;
1886 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1887 LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
1888 msg->conn->current_msg = msg;
1890 if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
1891 LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
1893 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1895 LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
1898 lwip_netconn_do_writemore(msg->conn);
1915 msg->err = err;
1916 TCPIP_APIMSG_ACK(msg);
1928 struct api_msg *msg = (struct api_msg *)m;
1930 if (msg->conn->pcb.ip != NULL) {
1931 if (msg->msg.ad.local) {
1932 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1933 msg->conn->pcb.ip->local_ip);
1935 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1936 msg->conn->pcb.ip->remote_ip);
1939 msg->err = ERR_OK;
1940 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1943 if (msg->msg.ad.local) {
1944 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
1947 msg->err = ERR_CONN;
1953 if (msg->msg.ad.local) {
1954 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
1956 if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
1957 msg->err = ERR_CONN;
1959 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
1966 if ((msg->msg.ad.local == 0) &&
1967 ((msg->conn->pcb.tcp->state == CLOSED) || (msg->conn->pcb.tcp->state == LISTEN))) {
1969 msg->err = ERR_CONN;
1971 API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn->pcb.tcp->remote_port);
1980 msg->err = ERR_CONN;
1982 TCPIP_APIMSG_ACK(msg);
1995 struct api_msg *msg = (struct api_msg *)m;
1998 enum netconn_state state = msg->conn->state;
2001 if ((msg->conn->pcb.tcp != NULL) &&
2002 (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
2003 ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
2007 msg->err = ERR_CONN;
2010 if (msg->msg.sd.shut & NETCONN_SHUT_WR) {
2013 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
2014 write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
2015 msg->conn->current_msg->err = ERR_CLSD;
2016 msg->conn->current_msg = NULL;
2017 msg->conn->state = NETCONN_NONE;
2021 LWIP_ASSERT("msg->msg.sd.shut == NETCONN_SHUT_RD", msg->msg.sd.shut == NETCONN_SHUT_RD);
2024 msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
2029 msg->err = ERR_INPROGRESS;
2032 if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
2035 netconn_mark_mbox_invalid(msg->conn);
2037 netconn_drain(msg->conn);
2040 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
2041 msg->conn->state = NETCONN_CLOSE;
2042 msg->conn->current_msg = msg;
2044 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
2045 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
2047 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
2049 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
2052 lwip_netconn_do_close_internal(msg->conn);
2060 msg->err = ERR_CONN;
2062 TCPIP_APIMSG_ACK(msg);
2075 struct api_msg *msg = (struct api_msg *)m;
2077 msg->err = ERR_CONN;
2078 if (msg->conn->pcb.tcp != NULL) {
2079 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
2082 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
2083 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2084 msg->err = mld6_joingroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
2085 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2087 msg->err = mld6_leavegroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
2088 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2094 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2095 msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
2096 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2098 msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
2099 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2106 msg->err = ERR_VAL;
2110 TCPIP_APIMSG_ACK(msg);
2121 struct api_msg *msg = (struct api_msg *)m;
2124 struct net_group *group = get_net_group_from_ippcb(msg->conn->pcb.ip);
2127 netif = netif_get_by_index(msg->msg.jl.if_idx, group);
2132 netif = netif_get_by_index(msg->msg.jl.if_idx);
2136 msg->err = ERR_IF;
2140 msg->err = ERR_CONN;
2141 if (msg->conn->pcb.tcp != NULL) {
2142 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
2145 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
2146 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2147 msg->err = mld6_joingroup_netif(netif,
2148 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2150 msg->err = mld6_leavegroup_netif(netif,
2151 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2157 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2158 msg->err = igmp_joingroup_netif(netif,
2159 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2161 msg->err = igmp_leavegroup_netif(netif,
2162 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2169 msg->err = ERR_VAL;
2175 TCPIP_APIMSG_ACK(msg);
2188 struct dns_api_msg *msg = (struct dns_api_msg *)arg;
2195 API_EXPR_DEREF(msg->err) = ERR_VAL;
2198 API_EXPR_DEREF(msg->err) = ERR_OK;
2199 API_EXPR_DEREF(msg->addr) = *ipaddr;
2202 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));
2214 struct dns_api_msg *msg = (struct dns_api_msg *)arg;
2217 msg->dns_addrtype;
2222 API_EXPR_DEREF(msg->err) = dns_gethostbyname_addrtype(msg->name,
2223 API_EXPR_REF(msg->addr), lwip_netconn_do_dns_found, msg, addrtype);
2226 if (API_EXPR_DEREF(msg->err) == ERR_INPROGRESS) {
2228 sys_sem_wait(API_EXPR_REF_SEM(msg->sem));
2230 LWIP_ASSERT("do_gethostbyname still in progress!!", API_EXPR_DEREF(msg->err) != ERR_INPROGRESS);
2233 if (API_EXPR_DEREF(msg->err) != ERR_INPROGRESS) {
2236 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));