1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

33 Commits

Author SHA1 Message Date
iosabi
e469f2dea4 lwip_sock: Make sock_tcp_read return data if available
When reading from the socket with `sock_tcp_read()` it would only return
data from at most one internal connection buffer, even if the buffer
passed to `sock_tcp_read()` is larger and there is more data available
in the connection. This patch makes `sock_tcp_read` process all the
available data so long as there's more data to read available
immediately.
2021-04-10 18:45:57 +02:00
iosabi
afddb46c51 lwip_sock: Fix computation of last_offset on partial reads.
lwip receives network buffers that are made available to lwip_sock_tcp
calling `netconn_recv_tcp_pbuf`. The size of these buffers depends on
the size of the network packets. An application calling `sock_tcp_read`
can pass any arbitrary buffer size to read (copy) from these internal
network buffers, which may be smaller. lwip_sock_tcp keeps around the
last network buffer (`struct pbuf last_buf`) and the offset into this
buffer already consumed by the application (`last_offset`).

However, when multiple application reads from the same `pbuf` buffer
occur, the `last_offset` must be updated incrementing it. The code had
a bug that would work only when `last_offset` was either 0 (no previous
partial read) or when the current read was consuming all the remaining
data (when `buf_len == copylen`).

This patch fixes the issue an allows multiple reads from the same
buffer.
2021-04-04 12:45:54 +02:00
Erik Ekman
d3ba3117f2 pkg/lwip: Use NETIF_FOREACH macro in sock implementation
Decreases dependency on lwIP internals, and will handle LWIP_SINGLE_NETIF.
2021-03-06 11:27:14 +01:00
Marian Buschsieweke
77b39c5550
pkg/lwip: Implement sock_aux_local
Provide address the IP packet / UDP datagram was received on in the auxiliary
data, if module sock_aux_local is used.
2020-12-04 12:51:48 +01:00
Marian Buschsieweke
9d46bc7d7f
Merge pull request #14703 from maribu/sock-aux-api
net/sock: Add access to auxiliary data (API only)
2020-12-03 12:08:49 +01:00
Marian Buschsieweke
893bfd13d0
net/sock_udp: Extend API for auxiliary data 2020-12-02 17:56:13 +01:00
Marian Buschsieweke
ebcf1c0ab4
net/sock_ip: Extend API for auxiliary data 2020-12-02 17:56:13 +01:00
Martine Lenders
71224b4b1e
lwip_sock: use new mbox_avail() function 2020-11-20 13:09:42 +01:00
Bas Stottelaar
970c72a0cb pkg/*: add missing include of assert.h 2020-10-22 11:13:08 +02:00
Marian Buschsieweke
00c44b0924
pkg/lwip: Use IS_ACTIVE() & NETCONNTYPE_ISIPV6()
This also fixes an issue detected by `tests/lwip_sock_udp` when both IPv4 and
IPv6 are enabled.
2020-07-31 13:27:09 +02:00
Martine S. Lenders
035acc2e53
pkg/lwip: remove ipv6only clause for AF_INET6 sockets 2020-06-24 18:44:06 +02:00
Martine Lenders
a38428b8f2
Merge pull request #13701 from miri64/lwip_sock/enh/recv_buf
lwip_sock: provide implementation for `sock_*_recv_buf()`
2020-05-26 21:33:09 +02:00
Martine S. Lenders
ef1d458089
lwip_sock: re-issue receive events if there are still received messages
... after `*_recv()` or `*_accept()` was called.

This prevents a client from needing to call `*_recv()` or `*_accept()`
in a loop.
2020-05-12 14:19:34 +02:00
Martine S. Lenders
77b89bb968
lwip_sock: provide implementation for sock_*_recv_buf() 2020-04-28 09:46:07 +02:00
Martine S. Lenders
29651da8f4
lwip_sock: update implementation for async callback argument 2020-03-11 16:54:12 +01:00
Martine S. Lenders
612e782b3c
sock_async: supply optional callback argument with callback setter 2020-03-11 16:54:11 +01:00
Martine S. Lenders
6e6e435c65
sock_async: add optional callback argument 2020-03-11 16:54:11 +01:00
Martine Lenders
1a4e6e9cdb
lwip_sock_tcp: close accepted connection if queue is full 2020-03-06 11:29:45 +01:00
Martine S. Lenders
e98e2f6143
lwip: fix style errors found by Vera++ 2020-03-06 11:29:45 +01:00
Martine S. Lenders
fc67e6143a
lwip: provide sock_async support 2020-03-06 11:28:16 +01:00
Martine S. Lenders
20805548b3 lwip: introduce sock base-type 2020-02-21 19:07:47 +01:00
Wouter Symons
49a8f64c62 pkg/lwip: fix memory issue when sending with empty sock 2019-12-13 17:28:32 +01:00
Martine S. Lenders
e96bc2a13d lwip_sock: additional indirection of conn is unnecessary
Either the sock is provided with `sock_*_send()` or not. In the first
case the indirection is not necessary, and in the second we need to
delete the created `conn` within `lwip_sock_send()` anyway, so returning
it makes no sense.
2019-12-12 11:19:51 +01:00
Martine S. Lenders
80c23cfbf3 lwip_sock: check if sock is set before dereferencing it 2019-12-12 11:01:30 +01:00
Martine Lenders
6822f90004 lwip_sock: adapt for address zoning 2018-10-15 21:32:34 +02:00
Martine Lenders
0151655de5 lwip_sock_udp: provide port for #9376 API fix 2018-06-20 14:51:17 +02:00
Martine Lenders
48aae4ef2f
lwip: port to v2.0.2 2017-05-11 11:49:38 +02:00
Martine Lenders
b915d15de1 pkg: provide sock_tcp support for lwip 2017-02-13 20:10:42 +01:00
Peter Kietzmann
e5e79c2834 Merge pull request #5937 from miri64/pkg/feat/lwip-sock-udp
pkg: provide sock_udp support for lwip
2017-02-08 09:43:20 +01:00
Martine Lenders
a45256a2a7 pkg: provide sock_udp support for lwip 2017-02-07 15:48:47 +01:00
Oleg Hahm
4f4214235b timex: unambiguous time conversion macros 2017-01-19 13:18:08 +01:00
Victor Arino
49adbf24da pkg/lwip: use new sema implementation 2017-01-19 08:59:17 +01:00
Martine Lenders
bf60c2fbfa pkg: provide sock_ip support for lwip 2017-01-17 09:00:44 +01:00