<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.41.2</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=v0.41.2</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.41.2'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2022-10-10T09:02:15Z</updated>
<entry>
<title>Release share v0.41.2 (2022-10-10)</title>
<updated>2022-10-10T09:02:15Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-10T09:02:15Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=90e7dffb1349fdaa1cc883bc8d97e2067f21a3be'/>
<id>urn:sha1:90e7dffb1349fdaa1cc883bc8d97e2067f21a3be</id>
<content type='text'>
=== Bug fixes

* lib/websocket: check for EAGAIN and EINTR when reading raw socket
* lib/websocket: fix possible data race on Client

=== Enhancements

* lib/websocket: cleanup the channel gracefulClose during Close

=== Chores

* lib/websocket: replace handleInvalidData and BadRequest with
  sendClose
* lib/websocket: rewords some comment and package documentation
</content>
</entry>
<entry>
<title>lib/websocket: cleanup the channel gracefulClose during Close</title>
<updated>2022-10-09T17:48:56Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-09T17:48:40Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=1465d832f247cf0c94357810c7d958ed165b554f'/>
<id>urn:sha1:1465d832f247cf0c94357810c7d958ed165b554f</id>
<content type='text'>
When calling Close, we initialize the internal channel gracefulClose
so the client can check the close response from server on another
goroutine serve() and signal back to Close to continue the closing
process.

This channel is never closed and nil-ed again after Close which
may cause resource leaks.

While at it, use sendClose to minimize duplicate code.
</content>
</entry>
<entry>
<title>lib/websocket: check for EAGAIN and EINTR when reading raw socket</title>
<updated>2022-10-09T17:48:56Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-09T17:38:23Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=5421759721b8da41db483661a6b1bdf175119bed'/>
<id>urn:sha1:5421759721b8da41db483661a6b1bdf175119bed</id>
<content type='text'>
This fix tests that sometimes fail when running with -count=X, where
X &gt; 1,

  $ go test -race -count=30 -timeout=30s ./lib/websocket

Upon inspecting, when client sending larger payload, for example
65536 bytes, server sometimes only read half of them and return an
error "resource temporarily unavailable" or
"interrupted system call".
</content>
</entry>
<entry>
<title>lib/websocket: replace handleInvalidData and BadRequest with sendClose</title>
<updated>2022-10-09T17:48:56Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-08T14:06:25Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=cd0e8e2f30c067c69bd3daa260cc4387143f6059'/>
<id>urn:sha1:cd0e8e2f30c067c69bd3daa260cc4387143f6059</id>
<content type='text'>
Both of those functions actually call send control CLOSE frame and not
exported.
So, instead of duplicating it, we replace it with sendClose.
</content>
</entry>
<entry>
<title>lib/websocket: fix possible data race on Client</title>
<updated>2022-10-09T17:48:56Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-08T12:24:17Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=1edecf8f5a09a175cb30bb9939edd8f4497de9a1'/>
<id>urn:sha1:1edecf8f5a09a175cb30bb9939edd8f4497de9a1</id>
<content type='text'>
The Client have method send that check if the underlying connection (conn)
has been closed or not.
Since the conn can be closed anytime, for example server send to the
control CLOSE frame:

  recv -&gt; handleFrame -&gt; handleClose -&gt; Quit

we need to guard the conn with Mutex before calling send to prevent
data race.
</content>
</entry>
<entry>
<title>lib/websocket: rewords some comment and package documentation</title>
<updated>2022-10-08T11:51:24Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-08T11:51:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=76df3428683054771930983681721318abfd80d8'/>
<id>urn:sha1:76df3428683054771930983681721318abfd80d8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Release share v0.41.1 (2022-10-07)</title>
<updated>2022-10-07T17:04:09Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-07T17:04:09Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=cc0a706f60941a1c352c38e5900755626f3da3d3'/>
<id>urn:sha1:cc0a706f60941a1c352c38e5900755626f3da3d3</id>
<content type='text'>
=== Enhancements

* lib/http: simplify the default user-agent that send by Client
* lib/http: support embedded field on UnmarshalForm
* lib/test: use text/diff to compare strings on Assert
* lib/reflect: remove prefix from returned error on DoEqual
* lib/test: change the Assert parameter to Writer

=== Chores

* lib/ini: add example for marshaling slice inside map[string]T
* lib/paseto: reformat the documentation
* lib/websocket: fix possible race during testing Client
* text/diff: rewrite the test again by reading from files
</content>
</entry>
<entry>
<title>email/dkim: fix tests with -count=X, where X&gt;1</title>
<updated>2022-10-04T19:51:35Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-04T19:51:35Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=5b160b0b0f88748db525e1af89030fa7029f09c7'/>
<id>urn:sha1:5b160b0b0f88748db525e1af89030fa7029f09c7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/git: fix test with -count=X, where X&gt;1</title>
<updated>2022-10-04T19:51:12Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-04T19:51:12Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=c2270f4bc01d075b448797543344118768f2fd80'/>
<id>urn:sha1:c2270f4bc01d075b448797543344118768f2fd80</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/stmp: fix tests with -count=X, where X&gt;1</title>
<updated>2022-10-04T19:42:41Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-10-04T19:42:41Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=00b6c3c97d91139a3f8a3e8e6ed80dbe8b065e92'/>
<id>urn:sha1:00b6c3c97d91139a3f8a3e8e6ed80dbe8b065e92</id>
<content type='text'>
This changes require all unit tests to use their own client.
</content>
</entry>
</feed>
