|
| 1 | + --== noPoll toolkit ==-- |
| 2 | + Black Hole Sun |
| 3 | + 0.4.4 |
| 4 | + |
| 5 | +Advanced Software Production Line is proud to announce a new stable |
| 6 | +release of the noPoll toolkit. |
| 7 | + |
| 8 | +noPoll is a OpenSource WebSocket implementation (RFC 6455), written in |
| 9 | +ANSI C, that allows building pure WebSocket solutions or to provide |
| 10 | +WebSocket support to existing TCP oriented applications. |
| 11 | + |
| 12 | +Commercially supported, noPoll was written to have a clean, easy to |
| 13 | +use and integrate library. It is released under the terms of LGPL 2.1 |
| 14 | +(so you can build OpenSource or commercial applications) and currently |
| 15 | +is being heavily used by Vortex Library, Turbulence and Core-Admin to |
| 16 | +provide WebSocket support to those projects (some of them using BEEP |
| 17 | +over WebSocket). |
| 18 | + |
| 19 | +Resources |
| 20 | +~~~~~~~~~ |
| 21 | + |
| 22 | + noPoll homepage |
| 23 | + [ http://www.aspl.es/nopoll ] |
| 24 | + |
| 25 | + Commercial support |
| 26 | + [ http://www.aspl.es/nopoll/commercial.html ] |
| 27 | + |
| 28 | + Advanced Software Production Line, S.L. |
| 29 | + [ http://www.aspl.es ] |
| 30 | + |
| 31 | + Featured project: Core-Admin |
| 32 | + [ http://www.core-admin.com ] |
| 33 | + |
| 34 | +This release in short |
| 35 | +~~~~~~~~~~~~~~~~~~~~~ |
| 36 | + |
| 37 | + - Several bugs were fixed, including several updates to improve |
| 38 | + noPoll's stability while retrying, recovering partial transfers, |
| 39 | + improved building and windows support. |
| 40 | + |
| 41 | + |
| 42 | +Thanks to |
| 43 | +~~~~~~~~~ |
| 44 | + |
| 45 | + - Javier Celaya (updates for building scripts, header includes |
| 46 | + updates and linking for windows, several updates to pending write |
| 47 | + codes around SSL code, fixings to ping/pong, set WSASetLastError, |
| 48 | + removed retry code for writing, replaced by EWOULDBLOCK logic). |
| 49 | + |
| 50 | + - Sergio Lopez (Support for sending/receiving messages bigger than |
| 51 | + 64KB) |
| 52 | + |
| 53 | + - Elmar Siek (reported on ready not working on client side). |
| 54 | + |
| 55 | + - Emmanuel Puig (reported and fixed fragment detection for final |
| 56 | + messages after big transferes) |
| 57 | + |
| 58 | + - Tony Mountifields (reported wrong break, replaced by return at |
| 59 | + ctx_unregister_conn, old gcc support ) |
| 60 | + |
| 61 | +Changes from previous release |
| 62 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 63 | + |
| 64 | +* Run configure conditionally from autogen.sh |
| 65 | + |
| 66 | +* Include $(top_builddir)/src when building tests. This is needed when |
| 67 | + doing an out-of-sources build, to find nopoll_config.h |
| 68 | + |
| 69 | +* Include ws2tcpip.h on Windows |
| 70 | + |
| 71 | +* It provides the definition of struct addrinfo and related functions. |
| 72 | + Also, define _WIN32_WINNT as 0x0501 so that these funtions are |
| 73 | + declared. |
| 74 | + |
| 75 | +* Link against ws2_32.dll on Windows |
| 76 | + |
| 77 | +* [fix] Web files updates.. |
| 78 | + |
| 79 | +* [fix] Read messages bigger then 64KB |
| 80 | + |
| 81 | +* [fix] Send messages bigger than 64KB |
| 82 | + |
| 83 | +* [fix] Fix handling pending write data |
| 84 | + |
| 85 | +* [fix] When SSL_write returns EAGAIN, it keeps a pointer to the data |
| 86 | + buffer that was being written. This buffer must exist the next time |
| 87 | + that SSL_write is called. So, this commit recycles the send_buffer |
| 88 | + in nopoll_conn_send_frame as pending_write, instead of creating a |
| 89 | + new buffer and copying so many data around. |
| 90 | + |
| 91 | + Besides, nopoll_conn_send_frame correctly returns all the bytes as |
| 92 | + written, since they are kept in the pending_write buffer. Otherwise, |
| 93 | + the caller will try to write the same data again. |
| 94 | + |
| 95 | +* [fix] Fix WS PING/PONG implementation |
| 96 | + |
| 97 | + WebSocket specification, section 5.5.3, states that 'A Pong frame |
| 98 | + sent in response to a Ping frame must have identical "Application |
| 99 | + data" as found in the message body of the Ping frame being replied |
| 100 | + to'. This commit does that, instead of returning an empty Pong |
| 101 | + frame. |
| 102 | + |
| 103 | +* [fix] Check ENOTCONN on SSL_connect error |
| 104 | + |
| 105 | + This happens on Windows (at least) when the TCP connection is not |
| 106 | + yet established. |
| 107 | + |
| 108 | +* [fix] Updated nopoll_conn_new documentation (fixed typo) |
| 109 | + |
| 110 | +* [fix] Updated nopoll-conn module to include common code to call |
| 111 | + defined on_ready function for client side code too (it was already |
| 112 | + supported by listener side). Reported by Elmar Sieke. |
| 113 | + |
| 114 | +* [fix] Updated nopoll-conn API to include a new function to help API |
| 115 | + consumer of nopoll_conn_read to know if there are more pending bytes |
| 116 | + to be read. It fixes interation reported by Turbulence, in case of |
| 117 | + SSL+WebSocket+BEEP and child process with different users (forcing |
| 118 | + to activate proxy connections between parent process holding |
| 119 | + receiving socket and child handling messages received other it). |
| 120 | + |
| 121 | + - nopoll_conn_read_pending |
| 122 | + |
| 123 | +* [fix] Improved has_fin and is_fragment detection for final messages |
| 124 | + after big transfer. Reported and fix provided by Emmanuel Puig |
| 125 | + |
| 126 | + |
| 127 | +* [fix] Fixed nopoll_ctx_unregister_conn to do "return;" instead of |
| 128 | + "break;" when the connection is found. Avoids double mutex unlock |
| 129 | + call. Bug reported and fixed by Tony Mountifields |
| 130 | + https://github.com/ASPLes/nopoll/issues/21 |
| 131 | + |
| 132 | +* [fix] Allow building with old GCC that does not support |
| 133 | + stack-protector |
| 134 | + |
| 135 | +* [fix] Silence warning on old GCC about potentially uninitialised variable. |
| 136 | + |
| 137 | +* [fix] Check stack protector options for gcc to be available to |
| 138 | + include them during configure (by @softins Tony Mountifield ) |
| 139 | + |
| 140 | +* [fix] Set errno in Windows too |
| 141 | + |
| 142 | + Use WSASetLastError in Windows whenever errno is set in Unix |
| 143 | + platforms |
| 144 | + |
| 145 | +* [fix] Set errno to EWOULDBLOCK when there is no full message |
| 146 | + |
| 147 | +* [fix] In nopoll_conn_read, if nopoll_conn_get_msg returns NULL, the |
| 148 | + connection is still ok and a non-blocking call has been requested, |
| 149 | + return EWOULDBLOCK |
| 150 | + |
| 151 | +* [fix] Remove retry loops and return EWOULDBLOCK |
| 152 | + |
| 153 | +* [fix] When SSL_get_error returns that more data is needed, or the |
| 154 | + system call has been interrupted, set errno to EWOULDBLOCK instead |
| 155 | + of retrying 50 times. |
| 156 | + |
| 157 | +* [fix] Return EWOULDBLOCK instead of retrying read & write (do not |
| 158 | + retry after -2/retry-operation-allowed is reported). Reported by |
| 159 | + Javier Celaya jcelaya. |
| 160 | + |
| 161 | +* [fix] Several updates to make nopoll_conn_send_frame to return the |
| 162 | + amount of bytes written to the wire but not just fixed length. Also |
| 163 | + updated the function to report -2 when no byte was written and |
| 164 | + NOPOLL_EWOULD_BLOCK is reported by errno. Updated the function to |
| 165 | + also record added_header_size: |
| 166 | + |
| 167 | + conn->pending_write_added_header = header_size; |
| 168 | + |
| 169 | + ...to help nopoll_conn_complete_pending_write to report bytes |
| 170 | + written to the write without including bytes added by noPoll due to |
| 171 | + headers. |
| 172 | + |
| 173 | +* [fix] Updated documentation to better report values returned by: |
| 174 | + |
| 175 | + - nopoll_conn_send_text |
| 176 | + - nopoll_conn_send_text_fragment |
| 177 | + - nopoll_conn_send_binary |
| 178 | + |
| 179 | + |
| 180 | +About Advanced Software Production Line, S.L. (ASPL) |
| 181 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 182 | + |
| 183 | + Advanced Software Production Line (ASPL) provides GNU/Linux support |
| 184 | + and consulting services to enable organisation to introduce |
| 185 | + GNU/Linux into their processes, making other platforms to properly |
| 186 | + interact with it. |
| 187 | + |
| 188 | + You can contact us, using English or Spanish, at: |
| 189 | + |
| 190 | + http://www.aspl.es - [email protected] |
| 191 | + |
| 192 | + We hope noPoll may be useful you. Enjoy noPoll toolkit! |
| 193 | + |
| 194 | +-- |
| 195 | +Francis Brosnan Blázquez - [email protected] |
| 196 | +Advanced Software Production Line - http://www.aspl.es |
| 197 | +9th Jun 2017, Madrid (Spain) |
| 198 | + |
0 commit comments