When a client disconnected while receiving the icon byte stream response,
an error and a warning were logged, making users worried:
```
2022-08-15 20:09:31.387 [ERROR] [ab.core.ui.icon.internal.IconServlet] - Failed sending the icon byte stream as a response: null
2022-08-15 20:09:31.390 [WARN ] [org.eclipse.jetty.server.HttpChannel] - /icon/autarky
java.lang.IllegalStateException: ABORTED
at org.eclipse.jetty.server.HttpChannelState.sendError(HttpChannelState.java:915) ~[?:?]
...
```
IMO, there is no need to log at ERROR or WARN level in such cases,
so I decided to reduce to DEBUG logging.
The following script can be used to reproduce the above case:
```python
import socket
import struct
host = 'localhost'
port = 8080
path = '/icon/BatteryLevel?format=svg&anyFormat=true&state=94+%25&iconset=classic'
request = f"GET {path} HTTP/1.1\r\nHost: {host}\r\nConnection: keep-alive\r\n\r\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
# Send the request
s.sendall(request.encode())
# FORCE an immediate hard reset (RST)
# This ensures the server sees a connection failure while it's inside doGet
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
s.close()
```
Signed-off-by: Florian Hotze <dev@florianhotze.com>
openHAB Core
This project contains core bundles of the openHAB runtime.
Building and running the project is fairly easy if you follow the steps detailed below.
Please note that openHAB Core is not a product itself, but a framework to build solutions on top. It is picked up by the main openHAB distribution.
This means that what you build is primarily an artifact repository of OSGi bundles that can be used within smart home products.
1. Prerequisites
The build infrastructure is based on Maven. If you know Maven already then there won't be any surprises for you. If you have not worked with Maven yet, just follow the instructions and everything will miraculously work ;-)
What you need before you start:
- Java SE Development Kit 21
- Maven 3 from https://maven.apache.org/download.html
Make sure that the mvn command is available on your path
2. Checkout
Checkout the source code from GitHub, e.g. by running:
git clone https://github.com/openhab/openhab-core.git
3. Building with Maven
To build this project from the sources, Maven takes care of everything:
- set
MAVEN_OPTSto-Xms512m -Xmx1024m - change into the openhab-core directory (
cd openhab-core) - run
mvn clean spotless:apply installto compile and package all sources
If there are tests that are failing occasionally on your local build, run mvn -DskipTests=true clean install instead to skip them.
For an even quicker build, run mvn clean install -T1C -DskipChecks -DskipTests -Dspotless.check.skip=true.
How to contribute
If you want to become a contributor to the project, please read about contributing and check our guidelines first.