Skip to content

Commit 9cf7e64

Browse files
committed
Fix broken Http
1 parent 9c68291 commit 9cf7e64

File tree

1 file changed

+43
-31
lines changed

1 file changed

+43
-31
lines changed

ArduinoCore-Linux/cores/arduino/Ethernet.h

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -148,47 +148,39 @@ class EthernetClient : public Client {
148148

149149
// read via ring buffer
150150
virtual int read() {
151-
Logger.debug(WIFICLIENT,"read-1");
152-
if (readBuffer.available()==0){
153-
uint8_t buffer[bufferSize];
154-
int len = read((uint8_t*)buffer, bufferSize);
155-
readBuffer.write(buffer, len);
151+
int result = -1;
152+
uint8_t c;
153+
if (readBytes(&c,1)==1){
154+
result = c;
156155
}
157-
return readBuffer.read();
156+
// Logger.debug(WIFICLIENT,"read-1");
157+
// if (readBuffer.available()==0){
158+
// uint8_t buffer[bufferSize];
159+
// int len = read((uint8_t*)buffer, bufferSize);
160+
// readBuffer.write(buffer, len);
161+
// }
162+
// return readBuffer.read();
163+
return result;;
158164
}
159165

160-
virtual int read(char* buffer, size_t len){
166+
size_t readBytes(char* buffer, size_t len){
161167
return read((uint8_t* )buffer, len);
162168
}
163-
164-
// direct read with timeout
165-
virtual int read(uint8_t* buffer, size_t len){
166-
Logger.debug(WIFICLIENT,"read");
167-
int result = 0;
168-
if (readBuffer.available()>0){
169-
result = readBuffer.read(buffer, len);
170-
} else {
171-
long timeout = millis() + getTimeout();
172-
result = sock->read(buffer, len);
173-
while (result<=0 && millis() < timeout){
174-
delay(200);
175-
result = sock->read(buffer, len);
176-
}
177-
}
178-
char lenStr[16];
179-
sprintf(lenStr,"%d",result);
180-
Logger.debug( WIFICLIENT,"read->",lenStr);
181-
182-
return result;
169+
170+
size_t readBytes(uint8_t* buffer, size_t len) override {
171+
return read(buffer, len);
183172
}
173+
174+
// direct read with timeout
184175

185176
// peeks one character
186177
virtual int peek(){
187-
Logger.debug(WIFICLIENT, "peek");
188-
if (readBuffer.available()>0){
189-
return readBuffer.peek();
190-
}
178+
// Logger.debug(WIFICLIENT, "peek");
179+
// if (readBuffer.available()>0){
180+
// return readBuffer.peek();
181+
// }
191182
return sock->peek();
183+
return -1;
192184
}
193185

194186
// close the connection
@@ -204,6 +196,26 @@ class EthernetClient : public Client {
204196
RingBufferExt writeBuffer;
205197
bool is_connected;
206198

199+
int read(uint8_t* buffer, size_t len) override {
200+
Logger.debug(WIFICLIENT,"read");
201+
int result = 0;
202+
// if (readBuffer.available()>0){
203+
// result = readBuffer.read(buffer, len);
204+
// } else {
205+
long timeout = millis() + getTimeout();
206+
result = sock->read(buffer, len);
207+
while (result<=0 && millis() < timeout){
208+
delay(200);
209+
result = sock->read(buffer, len);
210+
}
211+
//}
212+
char lenStr[16];
213+
sprintf(lenStr,"%d",result);
214+
Logger.debug( WIFICLIENT,"read->",lenStr);
215+
216+
return result;
217+
}
218+
207219
bool connectedFast() {
208220
return is_connected;
209221
}

0 commit comments

Comments
 (0)