<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/4.8.5">
</HEAD>
<BODY>
--== noPoll toolkit ==--<BR>
Black Hole Sun<BR>
0.4.4<BR>
<BR>
Advanced Software Production Line is proud to announce a new stable<BR>
release of the noPoll toolkit.<BR>
<BR>
noPoll is a OpenSource WebSocket implementation (RFC 6455), written in<BR>
ANSI C, that allows building pure WebSocket solutions or to provide<BR>
WebSocket support to existing TCP oriented applications.<BR>
<BR>
Commercially supported, noPoll was written to have a clean, easy to<BR>
use and integrate library. It is released under the terms of LGPL 2.1<BR>
(so you can build OpenSource or commercial applications) and currently<BR>
is being heavily used by Vortex Library, Turbulence and Core-Admin to<BR>
provide WebSocket support to those projects (some of them using BEEP<BR>
over WebSocket).<BR>
<BR>
Resources<BR>
~~~~~~~~~<BR>
<BR>
noPoll homepage<BR>
[ http://www.aspl.es/nopoll ]<BR>
<BR>
Commercial support<BR>
[ http://www.aspl.es/nopoll/commercial.html ]<BR>
<BR>
Advanced Software Production Line, S.L.<BR>
[ http://www.aspl.es ]<BR>
<BR>
Featured project: Core-Admin<BR>
[ http://www.core-admin.com ]<BR>
<BR>
This release in short<BR>
~~~~~~~~~~~~~~~~~~~~~<BR>
<BR>
- Several bugs were fixed, including several updates to improve<BR>
noPoll's stability while retrying, recovering partial transfers,<BR>
improved building and windows support.<BR>
<BR>
<BR>
Thanks to<BR>
~~~~~~~~~<BR>
<BR>
- Javier Celaya (updates for building scripts, header includes<BR>
updates and linking for windows, several updates to pending write<BR>
codes around SSL code, fixings to ping/pong, set WSASetLastError,<BR>
removed retry code for writing, replaced by EWOULDBLOCK logic).<BR>
<BR>
- Sergio Lopez (Support for sending/receiving messages bigger than<BR>
64KB)<BR>
<BR>
- Elmar Siek (reported on ready not working on client side).<BR>
<BR>
- Emmanuel Puig (reported and fixed fragment detection for final<BR>
messages after big transferes)<BR>
<BR>
- Tony Mountifields (reported wrong break, replaced by return at<BR>
ctx_unregister_conn, old gcc support )<BR>
<BR>
Changes from previous release<BR>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<BR>
<BR>
* Run configure conditionally from autogen.sh<BR>
<BR>
* Include $(top_builddir)/src when building tests. This is needed when<BR>
doing an out-of-sources build, to find nopoll_config.h<BR>
<BR>
* Include ws2tcpip.h on Windows<BR>
<BR>
* It provides the definition of struct addrinfo and related functions.<BR>
Also, define _WIN32_WINNT as 0x0501 so that these funtions are<BR>
declared.<BR>
<BR>
* Link against ws2_32.dll on Windows<BR>
<BR>
* [fix] Web files updates..<BR>
<BR>
* [fix] Read messages bigger then 64KB<BR>
<BR>
* [fix] Send messages bigger than 64KB<BR>
<BR>
* [fix] Fix handling pending write data<BR>
<BR>
* [fix] When SSL_write returns EAGAIN, it keeps a pointer to the data<BR>
buffer that was being written. This buffer must exist the next time<BR>
that SSL_write is called. So, this commit recycles the send_buffer<BR>
in nopoll_conn_send_frame as pending_write, instead of creating a<BR>
new buffer and copying so many data around.<BR>
<BR>
Besides, nopoll_conn_send_frame correctly returns all the bytes as<BR>
written, since they are kept in the pending_write buffer. Otherwise,<BR>
the caller will try to write the same data again.<BR>
<BR>
* [fix] Fix WS PING/PONG implementation<BR>
<BR>
WebSocket specification, section 5.5.3, states that 'A Pong frame<BR>
sent in response to a Ping frame must have identical "Application<BR>
data" as found in the message body of the Ping frame being replied<BR>
to'. This commit does that, instead of returning an empty Pong<BR>
frame.<BR>
<BR>
* [fix] Check ENOTCONN on SSL_connect error<BR>
<BR>
This happens on Windows (at least) when the TCP connection is not<BR>
yet established.<BR>
<BR>
* [fix] Updated nopoll_conn_new documentation (fixed typo)<BR>
<BR>
* [fix] Updated nopoll-conn module to include common code to call<BR>
defined on_ready function for client side code too (it was already<BR>
supported by listener side). Reported by Elmar Sieke.<BR>
<BR>
* [fix] Updated nopoll-conn API to include a new function to help API<BR>
consumer of nopoll_conn_read to know if there are more pending bytes<BR>
to be read. It fixes interation reported by Turbulence, in case of<BR>
SSL+WebSocket+BEEP and child process with different users (forcing<BR>
to activate proxy connections between parent process holding<BR>
receiving socket and child handling messages received other it).<BR>
<BR>
- nopoll_conn_read_pending<BR>
<BR>
* [fix] Improved has_fin and is_fragment detection for final messages<BR>
after big transfer. Reported and fix provided by Emmanuel Puig<BR>
(emmanuel.puig@amarisoft.com)<BR>
<BR>
* [fix] Fixed nopoll_ctx_unregister_conn to do "return;" instead of<BR>
"break;" when the connection is found. Avoids double mutex unlock<BR>
call. Bug reported and fixed by Tony Mountifields<BR>
https://github.com/ASPLes/nopoll/issues/21<BR>
<BR>
* [fix] Allow building with old GCC that does not support<BR>
stack-protector<BR>
<BR>
* [fix] Silence warning on old GCC about potentially uninitialised variable.<BR>
<BR>
* [fix] Check stack protector options for gcc to be available to<BR>
include them during configure (by @softins Tony Mountifield )<BR>
<BR>
* [fix] Set errno in Windows too<BR>
<BR>
Use WSASetLastError in Windows whenever errno is set in Unix<BR>
platforms<BR>
<BR>
* [fix] Set errno to EWOULDBLOCK when there is no full message<BR>
<BR>
* [fix] In nopoll_conn_read, if nopoll_conn_get_msg returns NULL, the<BR>
connection is still ok and a non-blocking call has been requested,<BR>
return EWOULDBLOCK<BR>
<BR>
* [fix] Remove retry loops and return EWOULDBLOCK<BR>
<BR>
* [fix] When SSL_get_error returns that more data is needed, or the<BR>
system call has been interrupted, set errno to EWOULDBLOCK instead<BR>
of retrying 50 times.<BR>
<BR>
* [fix] Return EWOULDBLOCK instead of retrying read & write (do not<BR>
retry after -2/retry-operation-allowed is reported). Reported by<BR>
Javier Celaya jcelaya.<BR>
<BR>
* [fix] Several updates to make nopoll_conn_send_frame to return the<BR>
amount of bytes written to the wire but not just fixed length. Also<BR>
updated the function to report -2 when no byte was written and<BR>
NOPOLL_EWOULD_BLOCK is reported by errno. Updated the function to<BR>
also record added_header_size:<BR>
<BR>
conn->pending_write_added_header = header_size;<BR>
<BR>
...to help nopoll_conn_complete_pending_write to report bytes<BR>
written to the write without including bytes added by noPoll due to<BR>
headers.<BR>
<BR>
* [fix] Updated documentation to better report values returned by:<BR>
<BR>
- nopoll_conn_send_text<BR>
- nopoll_conn_send_text_fragment<BR>
- nopoll_conn_send_binary<BR>
<BR>
<BR>
About Advanced Software Production Line, S.L. (ASPL)<BR>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<BR>
<BR>
Advanced Software Production Line (ASPL) provides GNU/Linux support<BR>
and consulting services to enable organisation to introduce<BR>
GNU/Linux into their processes, making other platforms to properly<BR>
interact with it.<BR>
<BR>
You can contact us, using English or Spanish, at:<BR>
<BR>
http://www.aspl.es - info@aspl.es<BR>
<BR>
We hope noPoll may be useful you. Enjoy noPoll toolkit!<BR>
<BR>
--<BR>
Francis Brosnan Blázquez - <A HREF="mailto:francis@aspl.es">francis@aspl.es</A><BR>
Advanced Software Production Line - <A HREF="http://www.aspl.es">http://www.aspl.es</A><BR>
9th Jun 2017, Madrid (Spain)<BR>
<BR>
<BR>
</BODY>
</HTML>