<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-windows, branch master</title>
<subtitle>WireGuard client for Windows</subtitle>
<id>https://git.zx2c4.com/wireguard-windows/atom/?h=master</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-windows/atom/?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/'/>
<updated>2026-06-13T11:06:48Z</updated>
<entry>
<title>locales: update translations from crowdin</title>
<updated>2026-06-13T11:06:48Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-19T16:38:45Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=c73653279daf23ec25d72301c54e7968e175c1dc'/>
<id>urn:sha1:c73653279daf23ec25d72301c54e7968e175c1dc</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>l18n: promote out.gotext.json to messages.gotext.json</title>
<updated>2026-05-29T21:29:58Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-29T21:25:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=584fb19692226441a3427fe6433f903033077368'/>
<id>urn:sha1:584fb19692226441a3427fe6433f903033077368</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>l18n: configuration separator fallbacks</title>
<updated>2026-05-19T16:27:47Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-19T16:20:20Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=e7a319340ba9757f90895dee2d9b0efa5bc39a24'/>
<id>urn:sha1:e7a319340ba9757f90895dee2d9b0efa5bc39a24</id>
<content type='text'>
For languages that don't translate these, don't emit the place holder in
this ugly way. Instead fallback to ", " and " ".

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>manager: tear down the event reader on partial decode failure</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-18T14:08:27Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=d334cb636c960c510786e98ae41344da1bdc4544'/>
<id>urn:sha1:d334cb636c960c510786e98ae41344da1bdc4544</id>
<content type='text'>
gob is positional; continue on a half-read value leaves the decoder
mid-payload, and the next iteration reads what follows as if it were
a new NotificationType. Return on any Decode error and let the pipe
close take down the reader. The empty-tunnel-name check has to move
below all four field decodes for the same reason, or it desyncs the
stream just like the failure path used to.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>manager: tidy up leak and dead lock-thread defer in session loop</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-18T14:08:27Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=c4635a5ce57695513448b0e66d51a0e7d228ee29'/>
<id>urn:sha1:c4635a5ce57695513448b0e66d51a0e7d228ee29</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conf: flush file buffers before atomically renaming into place</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-18T14:00:16Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=f9fccd8266d2116d7ed8f1fa73be155115cb050f'/>
<id>urn:sha1:f9fccd8266d2116d7ed8f1fa73be155115cb050f</id>
<content type='text'>
NTFS journals the rename's metadata change but does not journal user
data. Without an explicit flush a power loss between the cache
manager publishing the rename and writing back the file's pages can
leave the destination at its final name with zero or partial
contents, while the prior file is gone.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>manager: skip the handle list attribute when no handles are supplied</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-18T14:08:27Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=c48b61251e5ba92b86fd3cd107f1e4d6729b4523'/>
<id>urn:sha1:c48b61251e5ba92b86fd3cd107f1e4d6729b4523</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>version: skip certs whose CertificatePolicies fail to decode</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-18T13:46:37Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=0e8c524501419279af46354c21ed1def6e741a98'/>
<id>urn:sha1:0e8c524501419279af46354c21ed1def6e741a98</id>
<content type='text'>
A per-cert decode failure shouldn't abort the whole enumeration:
just continue to the next cert. As a side effect, the next
CertEnumCertificatesInStore call frees this cert via its
predecessor-free contract, so no explicit free is needed either.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>main: pass fatal arguments to log.Fatal individually</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-14T07:50:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=ca538efaf99d9b5d4cf4c5ca8d715a5c22f80898'/>
<id>urn:sha1:ca538efaf99d9b5d4cf4c5ca8d715a5c22f80898</id>
<content type='text'>
Without the splat the appended slice is passed as a single argument
to log.Fatal, which renders it as "[Error:  &lt;err&gt;]" with the brackets
and the leading slice formatting visible in the console output.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>ringlogger: read shared counters atomically</title>
<updated>2026-05-19T15:37:20Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-17T20:40:00Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-windows/commit/?id=1c1f318fb11c9589ec2fdef6221586f862fd89c7'/>
<id>urn:sha1:1c1f318fb11c9589ec2fdef6221586f862fd89c7</id>
<content type='text'>
The writer publishes nextIndex and timeNs via atomic ops, but
WriteTo and FollowFromCursor used to memcpy the entire mapping and
then read those fields plain, which is a race. Drop the megabyte
snapshot and use matching atomic loads.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
</feed>
