Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the write function to return the actual number of bytes sent. #242

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

BetterComputing
Copy link

The write function was always returning the same count of bytes as was passed in because the size variable was not being assigned the actual number of bytes sent. For example, if I am using a WIZNet 5500 (which limits the send size to 2048 bytes) and I call the function as follows:

size_t bytesSent = pClient->write(pBuffer, 8192);

The result returned into the variable bytesSent will be 8192, even though only 2048 bytes were actually sent.

The change to EthernetClient.cpp in this fork fixes the bug.

Copy link

Memory usage change @ fdec9ee

Board flash % RAM for global variables %
arduino:avr:leonardo 💚 -14 - 0 -0.05 - 0.0 0 - 0 0.0 - 0.0
arduino:avr:mega 💚 -14 - 0 -0.01 - 0.0 0 - 0 0.0 - 0.0
arduino:avr:nano 💚 -14 - 0 -0.05 - 0.0 0 - 0 0.0 - 0.0
arduino:megaavr:nona4809 ❔ -14 - +8 -0.03 - +0.02 0 - 0 0.0 - 0.0
arduino:megaavr:uno2018 ❔ -14 - +8 -0.03 - +0.02 0 - 0 0.0 - 0.0
arduino:sam:arduino_due_x_dbg 💚 -8 - 0 -0.0 - 0.0 N/A N/A
arduino:samd:arduino_zero_edbg 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkr1000 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrfox1200 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrgsm1400 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrnb1500 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrvidor4000 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrwan1300 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrwan1310 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrwifi1010 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:mkrzero 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:samd:nano_33_iot 💚 -4 - 0 -0.0 - 0.0 0 - 0 0.0 - 0.0
Click for full report table
Board examples/AdvancedChatServer
flash
% examples/AdvancedChatServer
RAM for global variables
% examples/BarometricPressureWebServer
flash
% examples/BarometricPressureWebServer
RAM for global variables
% examples/ChatServer
flash
% examples/ChatServer
RAM for global variables
% examples/DhcpAddressPrinter
flash
% examples/DhcpAddressPrinter
RAM for global variables
% examples/DhcpChatServer
flash
% examples/DhcpChatServer
RAM for global variables
% examples/LinkStatus
flash
% examples/LinkStatus
RAM for global variables
% examples/PagerServer
flash
% examples/PagerServer
RAM for global variables
% examples/TelnetClient
flash
% examples/TelnetClient
RAM for global variables
% examples/UDPSendReceiveString
flash
% examples/UDPSendReceiveString
RAM for global variables
% examples/UdpNtpClient
flash
% examples/UdpNtpClient
RAM for global variables
% examples/WebClient
flash
% examples/WebClient
RAM for global variables
% examples/WebClientRepeating
flash
% examples/WebClientRepeating
RAM for global variables
% examples/WebServer
flash
% examples/WebServer
RAM for global variables
%
arduino:avr:leonardo -14 -0.05 0 0.0 -14 -0.05 0 0.0 -14 -0.05 0 0.0 0 0.0 0 0.0 -14 -0.05 0 0.0 0 0.0 0 0.0 -14 -0.05 0 0.0 -10 -0.03 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -10 -0.03 0 0.0 -10 -0.03 0 0.0 -14 -0.05 0 0.0
arduino:avr:mega -14 -0.01 0 0.0 -14 -0.01 0 0.0 -14 -0.01 0 0.0 0 0.0 0 0.0 -14 -0.01 0 0.0 0 0.0 0 0.0 -14 -0.01 0 0.0 -10 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -10 -0.0 0 0.0 -10 -0.0 0 0.0 -14 -0.01 0 0.0
arduino:avr:nano -14 -0.05 0 0.0 -14 -0.05 0 0.0 -14 -0.05 0 0.0 0 0.0 0 0.0 -14 -0.05 0 0.0 0 0.0 0 0.0 -14 -0.05 0 0.0 -10 -0.03 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -10 -0.03 0 0.0 -10 -0.03 0 0.0 -14 -0.05 0 0.0
arduino:megaavr:nona4809 -14 -0.03 0 0.0 -14 -0.03 0 0.0 -14 -0.03 0 0.0 0 0.0 0 0.0 -14 -0.03 0 0.0 0 0.0 0 0.0 -14 -0.03 0 0.0 8 0.02 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 8 0.02 0 0.0 8 0.02 0 0.0 -14 -0.03 0 0.0
arduino:megaavr:uno2018 -14 -0.03 0 0.0 -14 -0.03 0 0.0 -14 -0.03 0 0.0 0 0.0 0 0.0 -14 -0.03 0 0.0 0 0.0 0 0.0 -14 -0.03 0 0.0 8 0.02 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 8 0.02 0 0.0 8 0.02 0 0.0 -14 -0.03 0 0.0
arduino:sam:arduino_due_x_dbg -8 -0.0 N/A N/A -8 -0.0 N/A N/A -8 -0.0 N/A N/A 0 0.0 N/A N/A -8 -0.0 N/A N/A 0 0.0 N/A N/A -8 -0.0 N/A N/A 0 0.0 N/A N/A 0 0.0 N/A N/A 0 0.0 N/A N/A -8 -0.0 N/A N/A -8 -0.0 N/A N/A -8 -0.0 N/A N/A
arduino:samd:arduino_zero_edbg -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkr1000 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrfox1200 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrgsm1400 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrnb1500 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrvidor4000 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrwan1300 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrwan1310 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrwifi1010 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:mkrzero -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
arduino:samd:nano_33_iot -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0 -4 -0.0 0 0.0
Click for full report CSV
Board,examples/AdvancedChatServer<br>flash,%,examples/AdvancedChatServer<br>RAM for global variables,%,examples/BarometricPressureWebServer<br>flash,%,examples/BarometricPressureWebServer<br>RAM for global variables,%,examples/ChatServer<br>flash,%,examples/ChatServer<br>RAM for global variables,%,examples/DhcpAddressPrinter<br>flash,%,examples/DhcpAddressPrinter<br>RAM for global variables,%,examples/DhcpChatServer<br>flash,%,examples/DhcpChatServer<br>RAM for global variables,%,examples/LinkStatus<br>flash,%,examples/LinkStatus<br>RAM for global variables,%,examples/PagerServer<br>flash,%,examples/PagerServer<br>RAM for global variables,%,examples/TelnetClient<br>flash,%,examples/TelnetClient<br>RAM for global variables,%,examples/UDPSendReceiveString<br>flash,%,examples/UDPSendReceiveString<br>RAM for global variables,%,examples/UdpNtpClient<br>flash,%,examples/UdpNtpClient<br>RAM for global variables,%,examples/WebClient<br>flash,%,examples/WebClient<br>RAM for global variables,%,examples/WebClientRepeating<br>flash,%,examples/WebClientRepeating<br>RAM for global variables,%,examples/WebServer<br>flash,%,examples/WebServer<br>RAM for global variables,%
arduino:avr:leonardo,-14,-0.05,0,0.0,-14,-0.05,0,0.0,-14,-0.05,0,0.0,0,0.0,0,0.0,-14,-0.05,0,0.0,0,0.0,0,0.0,-14,-0.05,0,0.0,-10,-0.03,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-10,-0.03,0,0.0,-10,-0.03,0,0.0,-14,-0.05,0,0.0
arduino:avr:mega,-14,-0.01,0,0.0,-14,-0.01,0,0.0,-14,-0.01,0,0.0,0,0.0,0,0.0,-14,-0.01,0,0.0,0,0.0,0,0.0,-14,-0.01,0,0.0,-10,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-10,-0.0,0,0.0,-10,-0.0,0,0.0,-14,-0.01,0,0.0
arduino:avr:nano,-14,-0.05,0,0.0,-14,-0.05,0,0.0,-14,-0.05,0,0.0,0,0.0,0,0.0,-14,-0.05,0,0.0,0,0.0,0,0.0,-14,-0.05,0,0.0,-10,-0.03,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-10,-0.03,0,0.0,-10,-0.03,0,0.0,-14,-0.05,0,0.0
arduino:megaavr:nona4809,-14,-0.03,0,0.0,-14,-0.03,0,0.0,-14,-0.03,0,0.0,0,0.0,0,0.0,-14,-0.03,0,0.0,0,0.0,0,0.0,-14,-0.03,0,0.0,8,0.02,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,8,0.02,0,0.0,8,0.02,0,0.0,-14,-0.03,0,0.0
arduino:megaavr:uno2018,-14,-0.03,0,0.0,-14,-0.03,0,0.0,-14,-0.03,0,0.0,0,0.0,0,0.0,-14,-0.03,0,0.0,0,0.0,0,0.0,-14,-0.03,0,0.0,8,0.02,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,8,0.02,0,0.0,8,0.02,0,0.0,-14,-0.03,0,0.0
arduino:sam:arduino_due_x_dbg,-8,-0.0,N/A,N/A,-8,-0.0,N/A,N/A,-8,-0.0,N/A,N/A,0,0.0,N/A,N/A,-8,-0.0,N/A,N/A,0,0.0,N/A,N/A,-8,-0.0,N/A,N/A,0,0.0,N/A,N/A,0,0.0,N/A,N/A,0,0.0,N/A,N/A,-8,-0.0,N/A,N/A,-8,-0.0,N/A,N/A,-8,-0.0,N/A,N/A
arduino:samd:arduino_zero_edbg,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkr1000,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrfox1200,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrgsm1400,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrnb1500,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrvidor4000,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrwan1300,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrwan1310,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrwifi1010,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:mkrzero,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0
arduino:samd:nano_33_iot,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0,-4,-0.0,0,0.0

@per1234 per1234 added topic: code Related to content of the project itself type: imperfection Perceived defect in any part of project labels Nov 23, 2023
@per1234
Copy link
Contributor

per1234 commented Nov 23, 2023

Thanks @BetterComputing. For the sake of making the information available to the reviewers, I'll note here the two other alternative proposals that have been submitted for fixing this bug:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: code Related to content of the project itself type: imperfection Perceived defect in any part of project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

EthernetClient::write returns wrong value when buffer size exceeds W5100.SSIZE
2 participants