Skip to content

Commit 95553b1

Browse files
author
Psilo
committed
fix possible race-condition
1 parent 0f01ac7 commit 95553b1

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<modelVersion>4.0.0</modelVersion>
1212
<groupId>info.unterrainer.commons.udp-observer</groupId>
1313
<artifactId>udp-observer</artifactId>
14-
<version>0.1.3</version>
14+
<version>0.1.4</version>
1515
<name>UdpObserver</name>
1616
<packaging>jar</packaging>
1717

src/main/java/info/unterrainer/commons/udpobserver/Information.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
public class Information {
44
public static final String name = "UDP-Observer";
5-
public static final String buildTime = "2021-03-10T08:29:08Z";
6-
public static final String pomVersion = "0.1.3";
5+
public static final String buildTime = "2021-03-31T07:33:16Z";
6+
public static final String pomVersion = "0.1.4";
77
}

src/main/java/info/unterrainer/commons/udpobserver/UdpObserver.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,18 @@ public void run() {
3939
socket.receive(packet);
4040
String received = new String(packet.getData(), 0, packet.getLength());
4141
InetSocketAddress adr = (InetSocketAddress) packet.getSocketAddress();
42-
outputs.add(UdpDatagram.builder()
43-
.metaData(UdpDatagramMetaData.builder()
44-
.hostString(adr.getHostString())
45-
.sender(adr.getAddress())
46-
.sendPort(adr.getPort())
47-
.timestamp(LocalDateTime.now(ZoneOffset.UTC))
48-
.build())
49-
.content(received)
50-
.bytes(Arrays.copyOf(packet.getData(), packet.getLength()))
51-
.build());
42+
synchronized (outputs) {
43+
outputs.add(UdpDatagram.builder()
44+
.metaData(UdpDatagramMetaData.builder()
45+
.hostString(adr.getHostString())
46+
.sender(adr.getAddress())
47+
.sendPort(adr.getPort())
48+
.timestamp(LocalDateTime.now(ZoneOffset.UTC))
49+
.build())
50+
.content(received)
51+
.bytes(Arrays.copyOf(packet.getData(), packet.getLength()))
52+
.build());
53+
}
5254
} catch (IOException e) {
5355
// NOOP
5456
}
@@ -61,9 +63,11 @@ public void run() {
6163
}
6264

6365
public Collection<UdpDatagram> getReceivedDatagrams() {
64-
List<UdpDatagram> result = outputs.stream().filter(Objects::nonNull).collect(Collectors.toList());
65-
outputs.clear();
66-
return result;
66+
synchronized (outputs) {
67+
List<UdpDatagram> result = outputs.stream().filter(Objects::nonNull).collect(Collectors.toList());
68+
outputs.clear();
69+
return result;
70+
}
6771
}
6872

6973
public void close() {

0 commit comments

Comments
 (0)