ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Handle.pm (file contents):
Revision 1.184 by root, Thu Sep 3 13:14:38 2009 UTC vs.
Revision 1.242 by root, Wed Dec 10 04:29:33 2014 UTC

1=head1 NAME 1=head1 NAME
2 2
3AnyEvent::Handle - non-blocking I/O on file handles via AnyEvent 3AnyEvent::Handle - non-blocking I/O on streaming handles via AnyEvent
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use AnyEvent; 7 use AnyEvent;
8 use AnyEvent::Handle; 8 use AnyEvent::Handle;
11 11
12 my $hdl; $hdl = new AnyEvent::Handle 12 my $hdl; $hdl = new AnyEvent::Handle
13 fh => \*STDIN, 13 fh => \*STDIN,
14 on_error => sub { 14 on_error => sub {
15 my ($hdl, $fatal, $msg) = @_; 15 my ($hdl, $fatal, $msg) = @_;
16 warn "got error $msg\n"; 16 AE::log error => $msg;
17 $hdl->destroy; 17 $hdl->destroy;
18 $cv->send; 18 $cv->send;
19 ); 19 };
20 20
21 # send some request line 21 # send some request line
22 $hdl->push_write ("getinfo\015\012"); 22 $hdl->push_write ("getinfo\015\012");
23 23
24 # read the response line 24 # read the response line
25 $hdl->push_read (line => sub { 25 $hdl->push_read (line => sub {
26 my ($hdl, $line) = @_; 26 my ($hdl, $line) = @_;
27 warn "got line <$line>\n"; 27 say "got line <$line>";
28 $cv->send; 28 $cv->send;
29 }); 29 });
30 30
31 $cv->recv; 31 $cv->recv;
32 32
33=head1 DESCRIPTION 33=head1 DESCRIPTION
34 34
35This module is a helper module to make it easier to do event-based I/O on 35This is a helper module to make it easier to do event-based I/O on
36filehandles. 36stream-based filehandles (sockets, pipes, and other stream things).
37 37
38The L<AnyEvent::Intro> tutorial contains some well-documented 38The L<AnyEvent::Intro> tutorial contains some well-documented
39AnyEvent::Handle examples. 39AnyEvent::Handle examples.
40 40
41In the following, when the documentation refers to of "bytes" then this 41In the following, where the documentation refers to "bytes", it means
42means characters. As sysread and syswrite are used for all I/O, their 42characters. As sysread and syswrite are used for all I/O, their
43treatment of characters applies to this module as well. 43treatment of characters applies to this module as well.
44 44
45At the very minimum, you should specify C<fh> or C<connect>, and the 45At the very minimum, you should specify C<fh> or C<connect>, and the
46C<on_error> callback. 46C<on_error> callback.
47 47
60use AnyEvent (); BEGIN { AnyEvent::common_sense } 60use AnyEvent (); BEGIN { AnyEvent::common_sense }
61use AnyEvent::Util qw(WSAEWOULDBLOCK); 61use AnyEvent::Util qw(WSAEWOULDBLOCK);
62 62
63our $VERSION = $AnyEvent::VERSION; 63our $VERSION = $AnyEvent::VERSION;
64 64
65sub _load_func($) {
66 my $func = $_[0];
67
68 unless (defined &$func) {
69 my $pkg = $func;
70 do {
71 $pkg =~ s/::[^:]+$//
72 or return;
73 eval "require $pkg";
74 } until defined &$func;
75 }
76
77 \&$func
78}
79
80sub MAX_READ_SIZE() { 131072 }
81
65=head1 METHODS 82=head1 METHODS
66 83
67=over 4 84=over 4
68 85
69=item $handle = B<new> AnyEvent::TLS fh => $filehandle, key => value... 86=item $handle = B<new> AnyEvent::Handle fh => $filehandle, key => value...
70 87
71The constructor supports these arguments (all as C<< key => value >> pairs). 88The constructor supports these arguments (all as C<< key => value >> pairs).
72 89
73=over 4 90=over 4
74 91
97=over 4 114=over 4
98 115
99=item on_prepare => $cb->($handle) 116=item on_prepare => $cb->($handle)
100 117
101This (rarely used) callback is called before a new connection is 118This (rarely used) callback is called before a new connection is
102attempted, but after the file handle has been created. It could be used to 119attempted, but after the file handle has been created (you can access that
120file handle via C<< $handle->{fh} >>). It could be used to prepare the
103prepare the file handle with parameters required for the actual connect 121file handle with parameters required for the actual connect (as opposed to
104(as opposed to settings that can be changed when the connection is already 122settings that can be changed when the connection is already established).
105established).
106 123
107The return value of this callback should be the connect timeout value in 124The return value of this callback should be the connect timeout value in
108seconds (or C<0>, or C<undef>, or the empty list, to indicate the default 125seconds (or C<0>, or C<undef>, or the empty list, to indicate that the
109timeout is to be used). 126default timeout is to be used).
110 127
111=item on_connect => $cb->($handle, $host, $port, $retry->()) 128=item on_connect => $cb->($handle, $host, $port, $retry->())
112 129
113This callback is called when a connection has been successfully established. 130This callback is called when a connection has been successfully established.
114 131
115The actual numeric host and port (the socket peername) are passed as 132The peer's numeric host and port (the socket peername) are passed as
116parameters, together with a retry callback. 133parameters, together with a retry callback. At the time it is called the
134read and write queues, EOF status, TLS status and similar properties of
135the handle will have been reset.
117 136
118When, for some reason, the handle is not acceptable, then calling 137If, for some reason, the handle is not acceptable, calling C<$retry> will
119C<$retry> will continue with the next conenction target (in case of 138continue with the next connection target (in case of multi-homed hosts or
120multi-homed hosts or SRV records there can be multiple connection 139SRV records there can be multiple connection endpoints). The C<$retry>
121endpoints). When it is called then the read and write queues, eof status, 140callback can be invoked after the connect callback returns, i.e. one can
122tls status and similar properties of the handle are being reset. 141start a handshake and then decide to retry with the next host if the
142handshake fails.
123 143
124In most cases, ignoring the C<$retry> parameter is the way to go. 144In most cases, you should ignore the C<$retry> parameter.
125 145
126=item on_connect_error => $cb->($handle, $message) 146=item on_connect_error => $cb->($handle, $message)
127 147
128This callback is called when the conenction could not be 148This callback is called when the connection could not be
129established. C<$!> will contain the relevant error code, and C<$message> a 149established. C<$!> will contain the relevant error code, and C<$message> a
130message describing it (usually the same as C<"$!">). 150message describing it (usually the same as C<"$!">).
131 151
132If this callback isn't specified, then C<on_error> will be called with a 152If this callback isn't specified, then C<on_error> will be called with a
133fatal error instead. 153fatal error instead.
136 156
137=item on_error => $cb->($handle, $fatal, $message) 157=item on_error => $cb->($handle, $fatal, $message)
138 158
139This is the error callback, which is called when, well, some error 159This is the error callback, which is called when, well, some error
140occured, such as not being able to resolve the hostname, failure to 160occured, such as not being able to resolve the hostname, failure to
141connect or a read error. 161connect, or a read error.
142 162
143Some errors are fatal (which is indicated by C<$fatal> being true). On 163Some errors are fatal (which is indicated by C<$fatal> being true). On
144fatal errors the handle object will be destroyed (by a call to C<< -> 164fatal errors the handle object will be destroyed (by a call to C<< ->
145destroy >>) after invoking the error callback (which means you are free to 165destroy >>) after invoking the error callback (which means you are free to
146examine the handle object). Examples of fatal errors are an EOF condition 166examine the handle object). Examples of fatal errors are an EOF condition
147with active (but unsatisifable) read watchers (C<EPIPE>) or I/O errors. In 167with active (but unsatisfiable) read watchers (C<EPIPE>) or I/O errors. In
148cases where the other side can close the connection at their will it is 168cases where the other side can close the connection at will, it is
149often easiest to not report C<EPIPE> errors in this callback. 169often easiest to not report C<EPIPE> errors in this callback.
150 170
151AnyEvent::Handle tries to find an appropriate error code for you to check 171AnyEvent::Handle tries to find an appropriate error code for you to check
152against, but in some cases (TLS errors), this does not work well. It is 172against, but in some cases (TLS errors), this does not work well.
153recommended to always output the C<$message> argument in human-readable
154error messages (it's usually the same as C<"$!">).
155 173
174If you report the error to the user, it is recommended to always output
175the C<$message> argument in human-readable error messages (you don't need
176to report C<"$!"> if you report C<$message>).
177
178If you want to react programmatically to the error, then looking at C<$!>
179and comparing it against some of the documented C<Errno> values is usually
180better than looking at the C<$message>.
181
156Non-fatal errors can be retried by simply returning, but it is recommended 182Non-fatal errors can be retried by returning, but it is recommended
157to simply ignore this parameter and instead abondon the handle object 183to simply ignore this parameter and instead abondon the handle object
158when this callback is invoked. Examples of non-fatal errors are timeouts 184when this callback is invoked. Examples of non-fatal errors are timeouts
159C<ETIMEDOUT>) or badly-formatted data (C<EBADMSG>). 185C<ETIMEDOUT>) or badly-formatted data (C<EBADMSG>).
160 186
161On callback entrance, the value of C<$!> contains the operating system 187On entry to the callback, the value of C<$!> contains the operating
162error code (or C<ENOSPC>, C<EPIPE>, C<ETIMEDOUT>, C<EBADMSG> or 188system error code (or C<ENOSPC>, C<EPIPE>, C<ETIMEDOUT>, C<EBADMSG> or
163C<EPROTO>). 189C<EPROTO>).
164 190
165While not mandatory, it is I<highly> recommended to set this callback, as 191While not mandatory, it is I<highly> recommended to set this callback, as
166you will not be notified of errors otherwise. The default simply calls 192you will not be notified of errors otherwise. The default just calls
167C<croak>. 193C<croak>.
168 194
169=item on_read => $cb->($handle) 195=item on_read => $cb->($handle)
170 196
171This sets the default read callback, which is called when data arrives 197This sets the default read callback, which is called when data arrives
176To access (and remove data from) the read buffer, use the C<< ->rbuf >> 202To access (and remove data from) the read buffer, use the C<< ->rbuf >>
177method or access the C<< $handle->{rbuf} >> member directly. Note that you 203method or access the C<< $handle->{rbuf} >> member directly. Note that you
178must not enlarge or modify the read buffer, you can only remove data at 204must not enlarge or modify the read buffer, you can only remove data at
179the beginning from it. 205the beginning from it.
180 206
207You can also call C<< ->push_read (...) >> or any other function that
208modifies the read queue. Or do both. Or ...
209
181When an EOF condition is detected then AnyEvent::Handle will first try to 210When an EOF condition is detected, AnyEvent::Handle will first try to
182feed all the remaining data to the queued callbacks and C<on_read> before 211feed all the remaining data to the queued callbacks and C<on_read> before
183calling the C<on_eof> callback. If no progress can be made, then a fatal 212calling the C<on_eof> callback. If no progress can be made, then a fatal
184error will be raised (with C<$!> set to C<EPIPE>). 213error will be raised (with C<$!> set to C<EPIPE>).
185 214
186Note that, unlike requests in the read queue, an C<on_read> callback 215Note that, unlike requests in the read queue, an C<on_read> callback
204If an EOF condition has been detected but no C<on_eof> callback has been 233If an EOF condition has been detected but no C<on_eof> callback has been
205set, then a fatal error will be raised with C<$!> set to <0>. 234set, then a fatal error will be raised with C<$!> set to <0>.
206 235
207=item on_drain => $cb->($handle) 236=item on_drain => $cb->($handle)
208 237
209This sets the callback that is called when the write buffer becomes empty 238This sets the callback that is called once when the write buffer becomes
210(or when the callback is set and the buffer is empty already). 239empty (and immediately when the handle object is created).
211 240
212To append to the write buffer, use the C<< ->push_write >> method. 241To append to the write buffer, use the C<< ->push_write >> method.
213 242
214This callback is useful when you don't want to put all of your write data 243This callback is useful when you don't want to put all of your write data
215into the queue at once, for example, when you want to write the contents 244into the queue at once, for example, when you want to write the contents
227many seconds pass without a successful read or write on the underlying 256many seconds pass without a successful read or write on the underlying
228file handle (or a call to C<timeout_reset>), the C<on_timeout> callback 257file handle (or a call to C<timeout_reset>), the C<on_timeout> callback
229will be invoked (and if that one is missing, a non-fatal C<ETIMEDOUT> 258will be invoked (and if that one is missing, a non-fatal C<ETIMEDOUT>
230error will be raised). 259error will be raised).
231 260
232There are three variants of the timeouts that work fully independent 261There are three variants of the timeouts that work independently of each
233of each other, for both read and write, just read, and just write: 262other, for both read and write (triggered when nothing was read I<OR>
263written), just read (triggered when nothing was read), and just write:
234C<timeout>, C<rtimeout> and C<wtimeout>, with corresponding callbacks 264C<timeout>, C<rtimeout> and C<wtimeout>, with corresponding callbacks
235C<on_timeout>, C<on_rtimeout> and C<on_wtimeout>, and reset functions 265C<on_timeout>, C<on_rtimeout> and C<on_wtimeout>, and reset functions
236C<timeout_reset>, C<rtimeout_reset>, and C<wtimeout_reset>. 266C<timeout_reset>, C<rtimeout_reset>, and C<wtimeout_reset>.
237 267
238Note that timeout processing is also active when you currently do not have 268Note that timeout processing is active even when you do not have any
239any outstanding read or write requests: If you plan to keep the connection 269outstanding read or write requests: If you plan to keep the connection
240idle then you should disable the timout temporarily or ignore the timeout 270idle then you should disable the timeout temporarily or ignore the
241in the C<on_timeout> callback, in which case AnyEvent::Handle will simply 271timeout in the corresponding C<on_timeout> callback, in which case
242restart the timeout. 272AnyEvent::Handle will simply restart the timeout.
243 273
244Zero (the default) disables this timeout. 274Zero (the default) disables the corresponding timeout.
245 275
246=item on_timeout => $cb->($handle) 276=item on_timeout => $cb->($handle)
277
278=item on_rtimeout => $cb->($handle)
279
280=item on_wtimeout => $cb->($handle)
247 281
248Called whenever the inactivity timeout passes. If you return from this 282Called whenever the inactivity timeout passes. If you return from this
249callback, then the timeout will be reset as if some activity had happened, 283callback, then the timeout will be reset as if some activity had happened,
250so this condition is not fatal in any way. 284so this condition is not fatal in any way.
251 285
259be configured to accept only so-and-so much data that it cannot act on 293be configured to accept only so-and-so much data that it cannot act on
260(for example, when expecting a line, an attacker could send an unlimited 294(for example, when expecting a line, an attacker could send an unlimited
261amount of data without a callback ever being called as long as the line 295amount of data without a callback ever being called as long as the line
262isn't finished). 296isn't finished).
263 297
298=item wbuf_max => <bytes>
299
300If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
301when the write buffer ever (strictly) exceeds this size. This is useful to
302avoid some forms of denial-of-service attacks.
303
304Although the units of this parameter is bytes, this is the I<raw> number
305of bytes not yet accepted by the kernel. This can make a difference when
306you e.g. use TLS, as TLS typically makes your write data larger (but it
307can also make it smaller due to compression).
308
309As an example of when this limit is useful, take a chat server that sends
310chat messages to a client. If the client does not read those in a timely
311manner then the send buffer in the server would grow unbounded.
312
264=item autocork => <boolean> 313=item autocork => <boolean>
265 314
266When disabled (the default), then C<push_write> will try to immediately 315When disabled (the default), C<push_write> will try to immediately
267write the data to the handle, if possible. This avoids having to register 316write the data to the handle if possible. This avoids having to register
268a write watcher and wait for the next event loop iteration, but can 317a write watcher and wait for the next event loop iteration, but can
269be inefficient if you write multiple small chunks (on the wire, this 318be inefficient if you write multiple small chunks (on the wire, this
270disadvantage is usually avoided by your kernel's nagle algorithm, see 319disadvantage is usually avoided by your kernel's nagle algorithm, see
271C<no_delay>, but this option can save costly syscalls). 320C<no_delay>, but this option can save costly syscalls).
272 321
273When enabled, then writes will always be queued till the next event loop 322When enabled, writes will always be queued till the next event loop
274iteration. This is efficient when you do many small writes per iteration, 323iteration. This is efficient when you do many small writes per iteration,
275but less efficient when you do a single write only per iteration (or when 324but less efficient when you do a single write only per iteration (or when
276the write buffer often is full). It also increases write latency. 325the write buffer often is full). It also increases write latency.
277 326
278=item no_delay => <boolean> 327=item no_delay => <boolean>
282the Nagle algorithm, and usually it is beneficial. 331the Nagle algorithm, and usually it is beneficial.
283 332
284In some situations you want as low a delay as possible, which can be 333In some situations you want as low a delay as possible, which can be
285accomplishd by setting this option to a true value. 334accomplishd by setting this option to a true value.
286 335
287The default is your opertaing system's default behaviour (most likely 336The default is your operating system's default behaviour (most likely
288enabled), this option explicitly enables or disables it, if possible. 337enabled). This option explicitly enables or disables it, if possible.
289 338
290=item keepalive => <boolean> 339=item keepalive => <boolean>
291 340
292Enables (default disable) the SO_KEEPALIVE option on the stream socket: 341Enables (default disable) the SO_KEEPALIVE option on the stream socket:
293normally, TCP connections have no time-out once established, so TCP 342normally, TCP connections have no time-out once established, so TCP
294conenctions, once established, can stay alive forever even when the other 343connections, once established, can stay alive forever even when the other
295side has long gone. TCP keepalives are a cheap way to take down long-lived 344side has long gone. TCP keepalives are a cheap way to take down long-lived
296TCP connections whent he other side becomes unreachable. While the default 345TCP connections when the other side becomes unreachable. While the default
297is OS-dependent, TCP keepalives usually kick in after around two hours, 346is OS-dependent, TCP keepalives usually kick in after around two hours,
298and, if the other side doesn't reply, take down the TCP connection some 10 347and, if the other side doesn't reply, take down the TCP connection some 10
299to 15 minutes later. 348to 15 minutes later.
300 349
301It is harmless to specify this option for file handles that do not support 350It is harmless to specify this option for file handles that do not support
319already have occured on BSD systems), but at least it will protect you 368already have occured on BSD systems), but at least it will protect you
320from most attacks. 369from most attacks.
321 370
322=item read_size => <bytes> 371=item read_size => <bytes>
323 372
324The default read block size (the amount of bytes this module will 373The initial read block size, the number of bytes this module will try
325try to read during each loop iteration, which affects memory 374to read during each loop iteration. Each handle object will consume
326requirements). Default: C<8192>. 375at least this amount of memory for the read buffer as well, so when
376handling many connections watch out for memory requirements). See also
377C<max_read_size>. Default: C<2048>.
378
379=item max_read_size => <bytes>
380
381The maximum read buffer size used by the dynamic adjustment
382algorithm: Each time AnyEvent::Handle can read C<read_size> bytes in
383one go it will double C<read_size> up to the maximum given by this
384option. Default: C<131072> or C<read_size>, whichever is higher.
327 385
328=item low_water_mark => <bytes> 386=item low_water_mark => <bytes>
329 387
330Sets the amount of bytes (default: C<0>) that make up an "empty" write 388Sets the number of bytes (default: C<0>) that make up an "empty" write
331buffer: If the write reaches this size or gets even samller it is 389buffer: If the buffer reaches this size or gets even samller it is
332considered empty. 390considered empty.
333 391
334Sometimes it can be beneficial (for performance reasons) to add data to 392Sometimes it can be beneficial (for performance reasons) to add data to
335the write buffer before it is fully drained, but this is a rare case, as 393the write buffer before it is fully drained, but this is a rare case, as
336the operating system kernel usually buffers data as well, so the default 394the operating system kernel usually buffers data as well, so the default
337is good in almost all cases. 395is good in almost all cases.
338 396
339=item linger => <seconds> 397=item linger => <seconds>
340 398
341If non-zero (default: C<3600>), then the destructor of the 399If this is non-zero (default: C<3600>), the destructor of the
342AnyEvent::Handle object will check whether there is still outstanding 400AnyEvent::Handle object will check whether there is still outstanding
343write data and will install a watcher that will write this data to the 401write data and will install a watcher that will write this data to the
344socket. No errors will be reported (this mostly matches how the operating 402socket. No errors will be reported (this mostly matches how the operating
345system treats outstanding data at socket close time). 403system treats outstanding data at socket close time).
346 404
353A string used to identify the remote site - usually the DNS hostname 411A string used to identify the remote site - usually the DNS hostname
354(I<not> IDN!) used to create the connection, rarely the IP address. 412(I<not> IDN!) used to create the connection, rarely the IP address.
355 413
356Apart from being useful in error messages, this string is also used in TLS 414Apart from being useful in error messages, this string is also used in TLS
357peername verification (see C<verify_peername> in L<AnyEvent::TLS>). This 415peername verification (see C<verify_peername> in L<AnyEvent::TLS>). This
358verification will be skipped when C<peername> is not specified or 416verification will be skipped when C<peername> is not specified or is
359C<undef>. 417C<undef>.
360 418
361=item tls => "accept" | "connect" | Net::SSLeay::SSL object 419=item tls => "accept" | "connect" | Net::SSLeay::SSL object
362 420
363When this parameter is given, it enables TLS (SSL) mode, that means 421When this parameter is given, it enables TLS (SSL) mode, that means
364AnyEvent will start a TLS handshake as soon as the conenction has been 422AnyEvent will start a TLS handshake as soon as the connection has been
365established and will transparently encrypt/decrypt data afterwards. 423established and will transparently encrypt/decrypt data afterwards.
366 424
367All TLS protocol errors will be signalled as C<EPROTO>, with an 425All TLS protocol errors will be signalled as C<EPROTO>, with an
368appropriate error message. 426appropriate error message.
369 427
370TLS mode requires Net::SSLeay to be installed (it will be loaded 428TLS mode requires Net::SSLeay to be installed (it will be loaded
371automatically when you try to create a TLS handle): this module doesn't 429automatically when you try to create a TLS handle): this module doesn't
372have a dependency on that module, so if your module requires it, you have 430have a dependency on that module, so if your module requires it, you have
373to add the dependency yourself. 431to add the dependency yourself. If Net::SSLeay cannot be loaded or is too
432old, you get an C<EPROTO> error.
374 433
375Unlike TCP, TLS has a server and client side: for the TLS server side, use 434Unlike TCP, TLS has a server and client side: for the TLS server side, use
376C<accept>, and for the TLS client side of a connection, use C<connect> 435C<accept>, and for the TLS client side of a connection, use C<connect>
377mode. 436mode.
378 437
389B<IMPORTANT:> since Net::SSLeay "objects" are really only integers, 448B<IMPORTANT:> since Net::SSLeay "objects" are really only integers,
390passing in the wrong integer will lead to certain crash. This most often 449passing in the wrong integer will lead to certain crash. This most often
391happens when one uses a stylish C<< tls => 1 >> and is surprised about the 450happens when one uses a stylish C<< tls => 1 >> and is surprised about the
392segmentation fault. 451segmentation fault.
393 452
394See the C<< ->starttls >> method for when need to start TLS negotiation later. 453Use the C<< ->starttls >> method if you need to start TLS negotiation later.
395 454
396=item tls_ctx => $anyevent_tls 455=item tls_ctx => $anyevent_tls
397 456
398Use the given C<AnyEvent::TLS> object to create the new TLS connection 457Use the given C<AnyEvent::TLS> object to create the new TLS connection
399(unless a connection object was specified directly). If this parameter is 458(unless a connection object was specified directly). If this
400missing, then AnyEvent::Handle will use C<AnyEvent::Handle::TLS_CTX>. 459parameter is missing (or C<undef>), then AnyEvent::Handle will use
460C<AnyEvent::Handle::TLS_CTX>.
401 461
402Instead of an object, you can also specify a hash reference with C<< key 462Instead of an object, you can also specify a hash reference with C<< key
403=> value >> pairs. Those will be passed to L<AnyEvent::TLS> to create a 463=> value >> pairs. Those will be passed to L<AnyEvent::TLS> to create a
404new TLS context object. 464new TLS context object.
405 465
414 474
415TLS handshake failures will not cause C<on_error> to be invoked when this 475TLS handshake failures will not cause C<on_error> to be invoked when this
416callback is in effect, instead, the error message will be passed to C<on_starttls>. 476callback is in effect, instead, the error message will be passed to C<on_starttls>.
417 477
418Without this callback, handshake failures lead to C<on_error> being 478Without this callback, handshake failures lead to C<on_error> being
419called, as normal. 479called as usual.
420 480
421Note that you cannot call C<starttls> right again in this callback. If you 481Note that you cannot just call C<starttls> again in this callback. If you
422need to do that, start an zero-second timer instead whose callback can 482need to do that, start an zero-second timer instead whose callback can
423then call C<< ->starttls >> again. 483then call C<< ->starttls >> again.
424 484
425=item on_stoptls => $cb->($handle) 485=item on_stoptls => $cb->($handle)
426 486
433callback. 493callback.
434 494
435This callback will only be called on TLS shutdowns, not when the 495This callback will only be called on TLS shutdowns, not when the
436underlying handle signals EOF. 496underlying handle signals EOF.
437 497
438=item json => JSON or JSON::XS object 498=item json => L<JSON>, L<JSON::PP> or L<JSON::XS> object
439 499
440This is the json coder object used by the C<json> read and write types. 500This is the json coder object used by the C<json> read and write types.
441 501
442If you don't supply it, then AnyEvent::Handle will create and use a 502If you don't supply it, then AnyEvent::Handle will create and use a
443suitable one (on demand), which will write and expect UTF-8 encoded JSON 503suitable one (on demand), which will write and expect UTF-8 encoded
504JSON texts (either using L<JSON::XS> or L<JSON>). The written texts are
505guaranteed not to contain any newline character.
506
507For security reasons, this encoder will likely I<not> handle numbers and
508strings, only arrays and objects/hashes. The reason is that originally
509JSON was self-delimited, but Dougles Crockford thought it was a splendid
510idea to redefine JSON incompatibly, so this is no longer true.
511
512For protocols that used back-to-back JSON texts, this might lead to
513run-ins, where two or more JSON texts will be interpreted as one JSON
444texts. 514text.
445 515
516For this reason, if the default encoder uses L<JSON::XS>, it will default
517to not allowing anything but arrays and objects/hashes, at least for the
518forseeable future (it will change at some point). This might or might not
519be true for the L<JSON> module, so this might cause a security issue.
520
521If you depend on either behaviour, you should create your own json object
522and pass it in explicitly.
523
524=item cbor => L<CBOR::XS> object
525
526This is the cbor coder object used by the C<cbor> read and write types.
527
528If you don't supply it, then AnyEvent::Handle will create and use a
529suitable one (on demand), which will write CBOR without using extensions,
530if possible.
531
446Note that you are responsible to depend on the JSON module if you want to 532Note that you are responsible to depend on the L<CBOR::XS> module if you
447use this functionality, as AnyEvent does not have a dependency itself. 533want to use this functionality, as AnyEvent does not have a dependency on
534it itself.
448 535
449=back 536=back
450 537
451=cut 538=cut
452 539
474 $self->{connect}[0], 561 $self->{connect}[0],
475 $self->{connect}[1], 562 $self->{connect}[1],
476 sub { 563 sub {
477 my ($fh, $host, $port, $retry) = @_; 564 my ($fh, $host, $port, $retry) = @_;
478 565
566 delete $self->{_connect}; # no longer needed
567
479 if ($fh) { 568 if ($fh) {
480 $self->{fh} = $fh; 569 $self->{fh} = $fh;
481 570
482 delete $self->{_skip_drain_rbuf}; 571 delete $self->{_skip_drain_rbuf};
483 $self->_start; 572 $self->_start;
490 }); 579 });
491 580
492 } else { 581 } else {
493 if ($self->{on_connect_error}) { 582 if ($self->{on_connect_error}) {
494 $self->{on_connect_error}($self, "$!"); 583 $self->{on_connect_error}($self, "$!");
495 $self->destroy; 584 $self->destroy if $self;
496 } else { 585 } else {
497 $self->_error ($!, 1); 586 $self->_error ($!, 1);
498 } 587 }
499 } 588 }
500 }, 589 },
501 sub { 590 sub {
502 local $self->{fh} = $_[0]; 591 local $self->{fh} = $_[0];
503 592
504 $self->{on_prepare} 593 $self->{on_prepare}
505 ? $self->{on_prepare}->($self) 594 ? $self->{on_prepare}->($self)
506 : () 595 : ()
507 } 596 }
508 ); 597 );
509 } 598 }
510 599
516} 605}
517 606
518sub _start { 607sub _start {
519 my ($self) = @_; 608 my ($self) = @_;
520 609
610 # too many clueless people try to use udp and similar sockets
611 # with AnyEvent::Handle, do them a favour.
612 my $type = getsockopt $self->{fh}, Socket::SOL_SOCKET (), Socket::SO_TYPE ();
613 Carp::croak "AnyEvent::Handle: only stream sockets supported, anything else will NOT work!"
614 if Socket::SOCK_STREAM () != (unpack "I", $type) && defined $type;
615
521 AnyEvent::Util::fh_nonblocking $self->{fh}, 1; 616 AnyEvent::Util::fh_nonblocking $self->{fh}, 1;
522 617
523 $self->{_activity} = 618 $self->{_activity} =
524 $self->{_ractivity} = 619 $self->{_ractivity} =
525 $self->{_wactivity} = AE::now; 620 $self->{_wactivity} = AE::now;
526 621
622 $self->{read_size} ||= 2048;
623 $self->{max_read_size} = $self->{read_size}
624 if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
625
527 $self->timeout (delete $self->{timeout} ) if $self->{timeout}; 626 $self->timeout (delete $self->{timeout} ) if $self->{timeout};
528 $self->rtimeout (delete $self->{rtimeout} ) if $self->{rtimeout}; 627 $self->rtimeout (delete $self->{rtimeout} ) if $self->{rtimeout};
529 $self->wtimeout (delete $self->{wtimeout} ) if $self->{wtimeout}; 628 $self->wtimeout (delete $self->{wtimeout} ) if $self->{wtimeout};
530 629
531 $self->no_delay (delete $self->{no_delay} ) if exists $self->{no_delay} && $self->{no_delay}; 630 $self->no_delay (delete $self->{no_delay} ) if exists $self->{no_delay} && $self->{no_delay};
534 $self->oobinline (exists $self->{oobinline} ? delete $self->{oobinline} : 1); 633 $self->oobinline (exists $self->{oobinline} ? delete $self->{oobinline} : 1);
535 634
536 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx}) 635 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx})
537 if $self->{tls}; 636 if $self->{tls};
538 637
539 $self->on_drain (delete $self->{on_drain}) if $self->{on_drain}; 638 $self->on_drain (delete $self->{on_drain} ) if $self->{on_drain};
540 639
541 $self->start_read 640 $self->start_read
542 if $self->{on_read} || @{ $self->{_queue} }; 641 if $self->{on_read} || @{ $self->{_queue} };
543 642
544 $self->_drain_wbuf; 643 $self->_drain_wbuf;
551 $message ||= "$!"; 650 $message ||= "$!";
552 651
553 if ($self->{on_error}) { 652 if ($self->{on_error}) {
554 $self->{on_error}($self, $fatal, $message); 653 $self->{on_error}($self, $fatal, $message);
555 $self->destroy if $fatal; 654 $self->destroy if $fatal;
556 } elsif ($self->{fh}) { 655 } elsif ($self->{fh} || $self->{connect}) {
557 $self->destroy; 656 $self->destroy;
558 Carp::croak "AnyEvent::Handle uncaught error: $message"; 657 Carp::croak "AnyEvent::Handle uncaught error: $message";
559 } 658 }
560} 659}
561 660
620=cut 719=cut
621 720
622sub no_delay { 721sub no_delay {
623 $_[0]{no_delay} = $_[1]; 722 $_[0]{no_delay} = $_[1];
624 723
625 eval {
626 local $SIG{__DIE__};
627 setsockopt $_[0]{fh}, Socket::IPPROTO_TCP (), Socket::TCP_NODELAY (), int $_[1] 724 setsockopt $_[0]{fh}, Socket::IPPROTO_TCP (), Socket::TCP_NODELAY (), int $_[1]
628 if $_[0]{fh}; 725 if $_[0]{fh};
629 };
630} 726}
631 727
632=item $handle->keepalive ($boolean) 728=item $handle->keepalive ($boolean)
633 729
634Enables or disables the C<keepalive> setting (see constructor argument of 730Enables or disables the C<keepalive> setting (see constructor argument of
694 790
695Replace the current C<on_stoptls> callback (see the C<on_stoptls> constructor argument). 791Replace the current C<on_stoptls> callback (see the C<on_stoptls> constructor argument).
696 792
697=cut 793=cut
698 794
699sub on_starttls { 795sub on_stoptls {
700 $_[0]{on_stoptls} = $_[1]; 796 $_[0]{on_stoptls} = $_[1];
701} 797}
702 798
703=item $handle->rbuf_max ($max_octets) 799=item $handle->rbuf_max ($max_octets)
704 800
705Configures the C<rbuf_max> setting (C<undef> disables it). 801Configures the C<rbuf_max> setting (C<undef> disables it).
802
803=item $handle->wbuf_max ($max_octets)
804
805Configures the C<wbuf_max> setting (C<undef> disables it).
706 806
707=cut 807=cut
708 808
709sub rbuf_max { 809sub rbuf_max {
710 $_[0]{rbuf_max} = $_[1]; 810 $_[0]{rbuf_max} = $_[1];
711} 811}
712 812
813sub wbuf_max {
814 $_[0]{wbuf_max} = $_[1];
815}
816
713############################################################################# 817#############################################################################
714 818
715=item $handle->timeout ($seconds) 819=item $handle->timeout ($seconds)
716 820
717=item $handle->rtimeout ($seconds) 821=item $handle->rtimeout ($seconds)
718 822
719=item $handle->wtimeout ($seconds) 823=item $handle->wtimeout ($seconds)
720 824
721Configures (or disables) the inactivity timeout. 825Configures (or disables) the inactivity timeout.
826
827The timeout will be checked instantly, so this method might destroy the
828handle before it returns.
722 829
723=item $handle->timeout_reset 830=item $handle->timeout_reset
724 831
725=item $handle->rtimeout_reset 832=item $handle->rtimeout_reset
726 833
743 $_[0]{$on_timeout} = $_[1]; 850 $_[0]{$on_timeout} = $_[1];
744 }; 851 };
745 852
746 *$timeout = sub { 853 *$timeout = sub {
747 my ($self, $new_value) = @_; 854 my ($self, $new_value) = @_;
855
856 $new_value >= 0
857 or Carp::croak "AnyEvent::Handle->$timeout called with negative timeout ($new_value), caught";
748 858
749 $self->{$timeout} = $new_value; 859 $self->{$timeout} = $new_value;
750 delete $self->{$tw}; &$cb; 860 delete $self->{$tw}; &$cb;
751 }; 861 };
752 862
807 917
808The write queue is very simple: you can add data to its end, and 918The write queue is very simple: you can add data to its end, and
809AnyEvent::Handle will automatically try to get rid of it for you. 919AnyEvent::Handle will automatically try to get rid of it for you.
810 920
811When data could be written and the write buffer is shorter then the low 921When data could be written and the write buffer is shorter then the low
812water mark, the C<on_drain> callback will be invoked. 922water mark, the C<on_drain> callback will be invoked once.
813 923
814=over 4 924=over 4
815 925
816=item $handle->on_drain ($cb) 926=item $handle->on_drain ($cb)
817 927
818Sets the C<on_drain> callback or clears it (see the description of 928Sets the C<on_drain> callback or clears it (see the description of
819C<on_drain> in the constructor). 929C<on_drain> in the constructor).
820 930
931This method may invoke callbacks (and therefore the handle might be
932destroyed after it returns).
933
821=cut 934=cut
822 935
823sub on_drain { 936sub on_drain {
824 my ($self, $cb) = @_; 937 my ($self, $cb) = @_;
825 938
829 if $cb && $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf}); 942 if $cb && $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf});
830} 943}
831 944
832=item $handle->push_write ($data) 945=item $handle->push_write ($data)
833 946
834Queues the given scalar to be written. You can push as much data as you 947Queues the given scalar to be written. You can push as much data as
835want (only limited by the available memory), as C<AnyEvent::Handle> 948you want (only limited by the available memory and C<wbuf_max>), as
836buffers it independently of the kernel. 949C<AnyEvent::Handle> buffers it independently of the kernel.
950
951This method may invoke callbacks (and therefore the handle might be
952destroyed after it returns).
837 953
838=cut 954=cut
839 955
840sub _drain_wbuf { 956sub _drain_wbuf {
841 my ($self) = @_; 957 my ($self) = @_;
866 $cb->() unless $self->{autocork}; 982 $cb->() unless $self->{autocork};
867 983
868 # if still data left in wbuf, we need to poll 984 # if still data left in wbuf, we need to poll
869 $self->{_ww} = AE::io $self->{fh}, 1, $cb 985 $self->{_ww} = AE::io $self->{fh}, 1, $cb
870 if length $self->{wbuf}; 986 if length $self->{wbuf};
987
988 if (
989 defined $self->{wbuf_max}
990 && $self->{wbuf_max} < length $self->{wbuf}
991 ) {
992 $self->_error (Errno::ENOSPC, 1), return;
993 }
871 }; 994 };
872} 995}
873 996
874our %WH; 997our %WH;
875 998
999# deprecated
876sub register_write_type($$) { 1000sub register_write_type($$) {
877 $WH{$_[0]} = $_[1]; 1001 $WH{$_[0]} = $_[1];
878} 1002}
879 1003
880sub push_write { 1004sub push_write {
881 my $self = shift; 1005 my $self = shift;
882 1006
883 if (@_ > 1) { 1007 if (@_ > 1) {
884 my $type = shift; 1008 my $type = shift;
885 1009
1010 @_ = ($WH{$type} ||= _load_func "$type\::anyevent_write_type"
886 @_ = ($WH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::push_write") 1011 or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_write")
887 ->($self, @_); 1012 ->($self, @_);
888 } 1013 }
889 1014
1015 # we downgrade here to avoid hard-to-track-down bugs,
1016 # and diagnose the problem earlier and better.
1017
890 if ($self->{tls}) { 1018 if ($self->{tls}) {
891 $self->{_tls_wbuf} .= $_[0]; 1019 utf8::downgrade $self->{_tls_wbuf} .= $_[0];
892 &_dotls ($self) if $self->{fh}; 1020 &_dotls ($self) if $self->{fh};
893 } else { 1021 } else {
894 $self->{wbuf} .= $_[0]; 1022 utf8::downgrade $self->{wbuf} .= $_[0];
895 $self->_drain_wbuf if $self->{fh}; 1023 $self->_drain_wbuf if $self->{fh};
896 } 1024 }
897} 1025}
898 1026
899=item $handle->push_write (type => @args) 1027=item $handle->push_write (type => @args)
900 1028
901Instead of formatting your data yourself, you can also let this module do 1029Instead of formatting your data yourself, you can also let this module
902the job by specifying a type and type-specific arguments. 1030do the job by specifying a type and type-specific arguments. You
1031can also specify the (fully qualified) name of a package, in which
1032case AnyEvent tries to load the package and then expects to find the
1033C<anyevent_write_type> function inside (see "custom write types", below).
903 1034
904Predefined types are (if you have ideas for additional types, feel free to 1035Predefined types are (if you have ideas for additional types, feel free to
905drop by and tell us): 1036drop by and tell us):
906 1037
907=over 4 1038=over 4
938 1069
939Encodes the given hash or array reference into a JSON object. Unless you 1070Encodes the given hash or array reference into a JSON object. Unless you
940provide your own JSON object, this means it will be encoded to JSON text 1071provide your own JSON object, this means it will be encoded to JSON text
941in UTF-8. 1072in UTF-8.
942 1073
1074The default encoder might or might not handle every type of JSON value -
1075it might be limited to arrays and objects for security reasons. See the
1076C<json> constructor attribute for more details.
1077
943JSON objects (and arrays) are self-delimiting, so you can write JSON at 1078JSON objects (and arrays) are self-delimiting, so if you only use arrays
944one end of a handle and read them at the other end without using any 1079and hashes, you can write JSON at one end of a handle and read them at the
945additional framing. 1080other end without using any additional framing.
946 1081
947The generated JSON text is guaranteed not to contain any newlines: While 1082The JSON text generated by the default encoder is guaranteed not to
948this module doesn't need delimiters after or between JSON texts to be 1083contain any newlines: While this module doesn't need delimiters after or
949able to read them, many other languages depend on that. 1084between JSON texts to be able to read them, many other languages depend on
1085them.
950 1086
951A simple RPC protocol that interoperates easily with others is to send 1087A simple RPC protocol that interoperates easily with other languages is
952JSON arrays (or objects, although arrays are usually the better choice as 1088to send JSON arrays (or objects, although arrays are usually the better
953they mimic how function argument passing works) and a newline after each 1089choice as they mimic how function argument passing works) and a newline
954JSON text: 1090after each JSON text:
955 1091
956 $handle->push_write (json => ["method", "arg1", "arg2"]); # whatever 1092 $handle->push_write (json => ["method", "arg1", "arg2"]); # whatever
957 $handle->push_write ("\012"); 1093 $handle->push_write ("\012");
958 1094
959An AnyEvent::Handle receiver would simply use the C<json> read type and 1095An AnyEvent::Handle receiver would simply use the C<json> read type and
962 $handle->push_read (json => sub { my $array = $_[1]; ... }); 1098 $handle->push_read (json => sub { my $array = $_[1]; ... });
963 1099
964Other languages could read single lines terminated by a newline and pass 1100Other languages could read single lines terminated by a newline and pass
965this line into their JSON decoder of choice. 1101this line into their JSON decoder of choice.
966 1102
1103=item cbor => $perl_scalar
1104
1105Encodes the given scalar into a CBOR value. Unless you provide your own
1106L<CBOR::XS> object, this means it will be encoded to a CBOR string not
1107using any extensions, if possible.
1108
1109CBOR values are self-delimiting, so you can write CBOR at one end of
1110a handle and read them at the other end without using any additional
1111framing.
1112
1113A simple nd very very fast RPC protocol that interoperates with
1114other languages is to send CBOR and receive CBOR values (arrays are
1115recommended):
1116
1117 $handle->push_write (cbor => ["method", "arg1", "arg2"]); # whatever
1118
1119An AnyEvent::Handle receiver would simply use the C<cbor> read type:
1120
1121 $handle->push_read (cbor => sub { my $array = $_[1]; ... });
1122
967=cut 1123=cut
968 1124
969sub json_coder() { 1125sub json_coder() {
970 eval { require JSON::XS; JSON::XS->new->utf8 } 1126 eval { require JSON::XS; JSON::XS->new->utf8 }
971 || do { require JSON; JSON->new->utf8 } 1127 || do { require JSON::PP; JSON::PP->new->utf8 }
972} 1128}
973 1129
974register_write_type json => sub { 1130register_write_type json => sub {
975 my ($self, $ref) = @_; 1131 my ($self, $ref) = @_;
976 1132
977 my $json = $self->{json} ||= json_coder; 1133 ($self->{json} ||= json_coder)
978
979 $json->encode ($ref) 1134 ->encode ($ref)
1135};
1136
1137sub cbor_coder() {
1138 require CBOR::XS;
1139 CBOR::XS->new
1140}
1141
1142register_write_type cbor => sub {
1143 my ($self, $scalar) = @_;
1144
1145 ($self->{cbor} ||= cbor_coder)
1146 ->encode ($scalar)
980}; 1147};
981 1148
982=item storable => $reference 1149=item storable => $reference
983 1150
984Freezes the given reference using L<Storable> and writes it to the 1151Freezes the given reference using L<Storable> and writes it to the
987=cut 1154=cut
988 1155
989register_write_type storable => sub { 1156register_write_type storable => sub {
990 my ($self, $ref) = @_; 1157 my ($self, $ref) = @_;
991 1158
992 require Storable; 1159 require Storable unless $Storable::VERSION;
993 1160
994 pack "w/a*", Storable::nfreeze ($ref) 1161 pack "w/a*", Storable::nfreeze ($ref)
995}; 1162};
996 1163
997=back 1164=back
1002before it was actually written. One way to do that is to replace your 1169before it was actually written. One way to do that is to replace your
1003C<on_drain> handler by a callback that shuts down the socket (and set 1170C<on_drain> handler by a callback that shuts down the socket (and set
1004C<low_water_mark> to C<0>). This method is a shorthand for just that, and 1171C<low_water_mark> to C<0>). This method is a shorthand for just that, and
1005replaces the C<on_drain> callback with: 1172replaces the C<on_drain> callback with:
1006 1173
1007 sub { shutdown $_[0]{fh}, 1 } # for push_shutdown 1174 sub { shutdown $_[0]{fh}, 1 }
1008 1175
1009This simply shuts down the write side and signals an EOF condition to the 1176This simply shuts down the write side and signals an EOF condition to the
1010the peer. 1177the peer.
1011 1178
1012You can rely on the normal read queue and C<on_eof> handling 1179You can rely on the normal read queue and C<on_eof> handling
1013afterwards. This is the cleanest way to close a connection. 1180afterwards. This is the cleanest way to close a connection.
1014 1181
1182This method may invoke callbacks (and therefore the handle might be
1183destroyed after it returns).
1184
1015=cut 1185=cut
1016 1186
1017sub push_shutdown { 1187sub push_shutdown {
1018 my ($self) = @_; 1188 my ($self) = @_;
1019 1189
1020 delete $self->{low_water_mark}; 1190 delete $self->{low_water_mark};
1021 $self->on_drain (sub { shutdown $_[0]{fh}, 1 }); 1191 $self->on_drain (sub { shutdown $_[0]{fh}, 1 });
1022} 1192}
1023 1193
1024=item AnyEvent::Handle::register_write_type type => $coderef->($handle, @args) 1194=item custom write types - Package::anyevent_write_type $handle, @args
1025 1195
1026This function (not method) lets you add your own types to C<push_write>. 1196Instead of one of the predefined types, you can also specify the name of
1197a package. AnyEvent will try to load the package and then expects to find
1198a function named C<anyevent_write_type> inside. If it isn't found, it
1199progressively tries to load the parent package until it either finds the
1200function (good) or runs out of packages (bad).
1201
1027Whenever the given C<type> is used, C<push_write> will invoke the code 1202Whenever the given C<type> is used, C<push_write> will the function with
1028reference with the handle object and the remaining arguments. 1203the handle object and the remaining arguments.
1029 1204
1030The code reference is supposed to return a single octet string that will 1205The function is supposed to return a single octet string that will be
1031be appended to the write buffer. 1206appended to the write buffer, so you can mentally treat this function as a
1207"arguments to on-the-wire-format" converter.
1032 1208
1033Note that this is a function, and all types registered this way will be 1209Example: implement a custom write type C<join> that joins the remaining
1034global, so try to use unique names. 1210arguments using the first one.
1211
1212 $handle->push_write (My::Type => " ", 1,2,3);
1213
1214 # uses the following package, which can be defined in the "My::Type" or in
1215 # the "My" modules to be auto-loaded, or just about anywhere when the
1216 # My::Type::anyevent_write_type is defined before invoking it.
1217
1218 package My::Type;
1219
1220 sub anyevent_write_type {
1221 my ($handle, $delim, @args) = @_;
1222
1223 join $delim, @args
1224 }
1035 1225
1036=cut 1226=cut
1037 1227
1038############################################################################# 1228#############################################################################
1039 1229
1048ways, the "simple" way, using only C<on_read> and the "complex" way, using 1238ways, the "simple" way, using only C<on_read> and the "complex" way, using
1049a queue. 1239a queue.
1050 1240
1051In the simple case, you just install an C<on_read> callback and whenever 1241In the simple case, you just install an C<on_read> callback and whenever
1052new data arrives, it will be called. You can then remove some data (if 1242new data arrives, it will be called. You can then remove some data (if
1053enough is there) from the read buffer (C<< $handle->rbuf >>). Or you cna 1243enough is there) from the read buffer (C<< $handle->rbuf >>). Or you can
1054leave the data there if you want to accumulate more (e.g. when only a 1244leave the data there if you want to accumulate more (e.g. when only a
1055partial message has been received so far). 1245partial message has been received so far), or change the read queue with
1246e.g. C<push_read>.
1056 1247
1057In the more complex case, you want to queue multiple callbacks. In this 1248In the more complex case, you want to queue multiple callbacks. In this
1058case, AnyEvent::Handle will call the first queued callback each time new 1249case, AnyEvent::Handle will call the first queued callback each time new
1059data arrives (also the first time it is queued) and removes it when it has 1250data arrives (also the first time it is queued) and remove it when it has
1060done its job (see C<push_read>, below). 1251done its job (see C<push_read>, below).
1061 1252
1062This way you can, for example, push three line-reads, followed by reading 1253This way you can, for example, push three line-reads, followed by reading
1063a chunk of data, and AnyEvent::Handle will execute them in order. 1254a chunk of data, and AnyEvent::Handle will execute them in order.
1064 1255
1195 1386
1196This replaces the currently set C<on_read> callback, or clears it (when 1387This replaces the currently set C<on_read> callback, or clears it (when
1197the new callback is C<undef>). See the description of C<on_read> in the 1388the new callback is C<undef>). See the description of C<on_read> in the
1198constructor. 1389constructor.
1199 1390
1391This method may invoke callbacks (and therefore the handle might be
1392destroyed after it returns).
1393
1200=cut 1394=cut
1201 1395
1202sub on_read { 1396sub on_read {
1203 my ($self, $cb) = @_; 1397 my ($self, $cb) = @_;
1204 1398
1206 $self->_drain_rbuf if $cb; 1400 $self->_drain_rbuf if $cb;
1207} 1401}
1208 1402
1209=item $handle->rbuf 1403=item $handle->rbuf
1210 1404
1211Returns the read buffer (as a modifiable lvalue). 1405Returns the read buffer (as a modifiable lvalue). You can also access the
1406read buffer directly as the C<< ->{rbuf} >> member, if you want (this is
1407much faster, and no less clean).
1212 1408
1213You can access the read buffer directly as the C<< ->{rbuf} >> 1409The only operation allowed on the read buffer (apart from looking at it)
1214member, if you want. However, the only operation allowed on the 1410is removing data from its beginning. Otherwise modifying or appending to
1215read buffer (apart from looking at it) is removing data from its 1411it is not allowed and will lead to hard-to-track-down bugs.
1216beginning. Otherwise modifying or appending to it is not allowed and will
1217lead to hard-to-track-down bugs.
1218 1412
1219NOTE: The read buffer should only be used or modified if the C<on_read>, 1413NOTE: The read buffer should only be used or modified in the C<on_read>
1220C<push_read> or C<unshift_read> methods are used. The other read methods 1414callback or when C<push_read> or C<unshift_read> are used with a single
1221automatically manage the read buffer. 1415callback (i.e. untyped). Typed C<push_read> and C<unshift_read> methods
1416will manage the read buffer on their own.
1222 1417
1223=cut 1418=cut
1224 1419
1225sub rbuf : lvalue { 1420sub rbuf : lvalue {
1226 $_[0]{rbuf} 1421 $_[0]{rbuf}
1243 1438
1244If enough data was available, then the callback must remove all data it is 1439If enough data was available, then the callback must remove all data it is
1245interested in (which can be none at all) and return a true value. After returning 1440interested in (which can be none at all) and return a true value. After returning
1246true, it will be removed from the queue. 1441true, it will be removed from the queue.
1247 1442
1443These methods may invoke callbacks (and therefore the handle might be
1444destroyed after it returns).
1445
1248=cut 1446=cut
1249 1447
1250our %RH; 1448our %RH;
1251 1449
1252sub register_read_type($$) { 1450sub register_read_type($$) {
1258 my $cb = pop; 1456 my $cb = pop;
1259 1457
1260 if (@_) { 1458 if (@_) {
1261 my $type = shift; 1459 my $type = shift;
1262 1460
1461 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1263 $cb = ($RH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::push_read") 1462 or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_read")
1264 ->($self, $cb, @_); 1463 ->($self, $cb, @_);
1265 } 1464 }
1266 1465
1267 push @{ $self->{_queue} }, $cb; 1466 push @{ $self->{_queue} }, $cb;
1268 $self->_drain_rbuf; 1467 $self->_drain_rbuf;
1273 my $cb = pop; 1472 my $cb = pop;
1274 1473
1275 if (@_) { 1474 if (@_) {
1276 my $type = shift; 1475 my $type = shift;
1277 1476
1477 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1278 $cb = ($RH{$type} or Carp::croak "unsupported type passed to AnyEvent::Handle::unshift_read") 1478 or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::unshift_read")
1279 ->($self, $cb, @_); 1479 ->($self, $cb, @_);
1280 } 1480 }
1281 1481
1282 unshift @{ $self->{_queue} }, $cb; 1482 unshift @{ $self->{_queue} }, $cb;
1283 $self->_drain_rbuf; 1483 $self->_drain_rbuf;
1287 1487
1288=item $handle->unshift_read (type => @args, $cb) 1488=item $handle->unshift_read (type => @args, $cb)
1289 1489
1290Instead of providing a callback that parses the data itself you can chose 1490Instead of providing a callback that parses the data itself you can chose
1291between a number of predefined parsing formats, for chunks of data, lines 1491between a number of predefined parsing formats, for chunks of data, lines
1292etc. 1492etc. You can also specify the (fully qualified) name of a package, in
1493which case AnyEvent tries to load the package and then expects to find the
1494C<anyevent_read_type> function inside (see "custom read types", below).
1293 1495
1294Predefined types are (if you have ideas for additional types, feel free to 1496Predefined types are (if you have ideas for additional types, feel free to
1295drop by and tell us): 1497drop by and tell us):
1296 1498
1297=over 4 1499=over 4
1303data. 1505data.
1304 1506
1305Example: read 2 bytes. 1507Example: read 2 bytes.
1306 1508
1307 $handle->push_read (chunk => 2, sub { 1509 $handle->push_read (chunk => 2, sub {
1308 warn "yay ", unpack "H*", $_[1]; 1510 say "yay " . unpack "H*", $_[1];
1309 }); 1511 });
1310 1512
1311=cut 1513=cut
1312 1514
1313register_read_type chunk => sub { 1515register_read_type chunk => sub {
1343 1545
1344register_read_type line => sub { 1546register_read_type line => sub {
1345 my ($self, $cb, $eol) = @_; 1547 my ($self, $cb, $eol) = @_;
1346 1548
1347 if (@_ < 3) { 1549 if (@_ < 3) {
1348 # this is more than twice as fast as the generic code below 1550 # this is faster then the generic code below
1349 sub { 1551 sub {
1350 $_[0]{rbuf} =~ s/^([^\015\012]*)(\015?\012)// or return; 1552 (my $pos = index $_[0]{rbuf}, "\012") >= 0
1553 or return;
1351 1554
1555 (my $str = substr $_[0]{rbuf}, 0, $pos + 1, "") =~ s/(\015?\012)\Z// or die;
1352 $cb->($_[0], $1, $2); 1556 $cb->($_[0], $str, "$1");
1353 1 1557 1
1354 } 1558 }
1355 } else { 1559 } else {
1356 $eol = quotemeta $eol unless ref $eol; 1560 $eol = quotemeta $eol unless ref $eol;
1357 $eol = qr|^(.*?)($eol)|s; 1561 $eol = qr|^(.*?)($eol)|s;
1358 1562
1359 sub { 1563 sub {
1360 $_[0]{rbuf} =~ s/$eol// or return; 1564 $_[0]{rbuf} =~ s/$eol// or return;
1361 1565
1362 $cb->($_[0], $1, $2); 1566 $cb->($_[0], "$1", "$2");
1363 1 1567 1
1364 } 1568 }
1365 } 1569 }
1366}; 1570};
1367 1571
1389the receive buffer when neither C<$accept> nor C<$reject> match, 1593the receive buffer when neither C<$accept> nor C<$reject> match,
1390and everything preceding and including the match will be accepted 1594and everything preceding and including the match will be accepted
1391unconditionally. This is useful to skip large amounts of data that you 1595unconditionally. This is useful to skip large amounts of data that you
1392know cannot be matched, so that the C<$accept> or C<$reject> regex do not 1596know cannot be matched, so that the C<$accept> or C<$reject> regex do not
1393have to start matching from the beginning. This is purely an optimisation 1597have to start matching from the beginning. This is purely an optimisation
1394and is usually worth only when you expect more than a few kilobytes. 1598and is usually worth it only when you expect more than a few kilobytes.
1395 1599
1396Example: expect a http header, which ends at C<\015\012\015\012>. Since we 1600Example: expect a http header, which ends at C<\015\012\015\012>. Since we
1397expect the header to be very large (it isn't in practise, but...), we use 1601expect the header to be very large (it isn't in practice, but...), we use
1398a skip regex to skip initial portions. The skip regex is tricky in that 1602a skip regex to skip initial portions. The skip regex is tricky in that
1399it only accepts something not ending in either \015 or \012, as these are 1603it only accepts something not ending in either \015 or \012, as these are
1400required for the accept regex. 1604required for the accept regex.
1401 1605
1402 $handle->push_read (regex => 1606 $handle->push_read (regex =>
1415 1619
1416 sub { 1620 sub {
1417 # accept 1621 # accept
1418 if ($$rbuf =~ $accept) { 1622 if ($$rbuf =~ $accept) {
1419 $data .= substr $$rbuf, 0, $+[0], ""; 1623 $data .= substr $$rbuf, 0, $+[0], "";
1420 $cb->($self, $data); 1624 $cb->($_[0], $data);
1421 return 1; 1625 return 1;
1422 } 1626 }
1423 1627
1424 # reject 1628 # reject
1425 if ($reject && $$rbuf =~ $reject) { 1629 if ($reject && $$rbuf =~ $reject) {
1426 $self->_error (Errno::EBADMSG); 1630 $_[0]->_error (Errno::EBADMSG);
1427 } 1631 }
1428 1632
1429 # skip 1633 # skip
1430 if ($skip && $$rbuf =~ $skip) { 1634 if ($skip && $$rbuf =~ $skip) {
1431 $data .= substr $$rbuf, 0, $+[0], ""; 1635 $data .= substr $$rbuf, 0, $+[0], "";
1447 my ($self, $cb) = @_; 1651 my ($self, $cb) = @_;
1448 1652
1449 sub { 1653 sub {
1450 unless ($_[0]{rbuf} =~ s/^(0|[1-9][0-9]*)://) { 1654 unless ($_[0]{rbuf} =~ s/^(0|[1-9][0-9]*)://) {
1451 if ($_[0]{rbuf} =~ /[^0-9]/) { 1655 if ($_[0]{rbuf} =~ /[^0-9]/) {
1452 $self->_error (Errno::EBADMSG); 1656 $_[0]->_error (Errno::EBADMSG);
1453 } 1657 }
1454 return; 1658 return;
1455 } 1659 }
1456 1660
1457 my $len = $1; 1661 my $len = $1;
1458 1662
1459 $self->unshift_read (chunk => $len, sub { 1663 $_[0]->unshift_read (chunk => $len, sub {
1460 my $string = $_[1]; 1664 my $string = $_[1];
1461 $_[0]->unshift_read (chunk => 1, sub { 1665 $_[0]->unshift_read (chunk => 1, sub {
1462 if ($_[1] eq ",") { 1666 if ($_[1] eq ",") {
1463 $cb->($_[0], $string); 1667 $cb->($_[0], $string);
1464 } else { 1668 } else {
1465 $self->_error (Errno::EBADMSG); 1669 $_[0]->_error (Errno::EBADMSG);
1466 } 1670 }
1467 }); 1671 });
1468 }); 1672 });
1469 1673
1470 1 1674 1
1520=item json => $cb->($handle, $hash_or_arrayref) 1724=item json => $cb->($handle, $hash_or_arrayref)
1521 1725
1522Reads a JSON object or array, decodes it and passes it to the 1726Reads a JSON object or array, decodes it and passes it to the
1523callback. When a parse error occurs, an C<EBADMSG> error will be raised. 1727callback. When a parse error occurs, an C<EBADMSG> error will be raised.
1524 1728
1525If a C<json> object was passed to the constructor, then that will be used 1729If a C<json> object was passed to the constructor, then that will be
1526for the final decode, otherwise it will create a JSON coder expecting UTF-8. 1730used for the final decode, otherwise it will create a L<JSON::XS> or
1731L<JSON::PP> coder object expecting UTF-8.
1527 1732
1528This read type uses the incremental parser available with JSON version 1733This read type uses the incremental parser available with JSON version
15292.09 (and JSON::XS version 2.2) and above. You have to provide a 17342.09 (and JSON::XS version 2.2) and above.
1530dependency on your own: this module will load the JSON module, but
1531AnyEvent does not depend on it itself.
1532 1735
1533Since JSON texts are fully self-delimiting, the C<json> read and write 1736Since JSON texts are fully self-delimiting, the C<json> read and write
1534types are an ideal simple RPC protocol: just exchange JSON datagrams. See 1737types are an ideal simple RPC protocol: just exchange JSON datagrams. See
1535the C<json> write type description, above, for an actual example. 1738the C<json> write type description, above, for an actual example.
1536 1739
1540 my ($self, $cb) = @_; 1743 my ($self, $cb) = @_;
1541 1744
1542 my $json = $self->{json} ||= json_coder; 1745 my $json = $self->{json} ||= json_coder;
1543 1746
1544 my $data; 1747 my $data;
1545 my $rbuf = \$self->{rbuf};
1546 1748
1547 sub { 1749 sub {
1548 my $ref = eval { $json->incr_parse ($self->{rbuf}) }; 1750 my $ref = eval { $json->incr_parse ($_[0]{rbuf}) };
1549 1751
1550 if ($ref) { 1752 if ($ref) {
1551 $self->{rbuf} = $json->incr_text; 1753 $_[0]{rbuf} = $json->incr_text;
1552 $json->incr_text = ""; 1754 $json->incr_text = "";
1553 $cb->($self, $ref); 1755 $cb->($_[0], $ref);
1554 1756
1555 1 1757 1
1556 } elsif ($@) { 1758 } elsif ($@) {
1557 # error case 1759 # error case
1558 $json->incr_skip; 1760 $json->incr_skip;
1559 1761
1560 $self->{rbuf} = $json->incr_text; 1762 $_[0]{rbuf} = $json->incr_text;
1561 $json->incr_text = ""; 1763 $json->incr_text = "";
1562 1764
1563 $self->_error (Errno::EBADMSG); 1765 $_[0]->_error (Errno::EBADMSG);
1564 1766
1565 () 1767 ()
1566 } else { 1768 } else {
1567 $self->{rbuf} = ""; 1769 $_[0]{rbuf} = "";
1568 1770
1771 ()
1772 }
1773 }
1774};
1775
1776=item cbor => $cb->($handle, $scalar)
1777
1778Reads a CBOR value, decodes it and passes it to the callback. When a parse
1779error occurs, an C<EBADMSG> error will be raised.
1780
1781If a L<CBOR::XS> object was passed to the constructor, then that will be
1782used for the final decode, otherwise it will create a CBOR coder without
1783enabling any options.
1784
1785You have to provide a dependency to L<CBOR::XS> on your own: this module
1786will load the L<CBOR::XS> module, but AnyEvent does not depend on it
1787itself.
1788
1789Since CBOR values are fully self-delimiting, the C<cbor> read and write
1790types are an ideal simple RPC protocol: just exchange CBOR datagrams. See
1791the C<cbor> write type description, above, for an actual example.
1792
1793=cut
1794
1795register_read_type cbor => sub {
1796 my ($self, $cb) = @_;
1797
1798 my $cbor = $self->{cbor} ||= cbor_coder;
1799
1800 my $data;
1801
1802 sub {
1803 my (@value) = eval { $cbor->incr_parse ($_[0]{rbuf}) };
1804
1805 if (@value) {
1806 $cb->($_[0], @value);
1807
1808 1
1809 } elsif ($@) {
1810 # error case
1811 $cbor->incr_reset;
1812
1813 $_[0]->_error (Errno::EBADMSG);
1814
1815 ()
1816 } else {
1569 () 1817 ()
1570 } 1818 }
1571 } 1819 }
1572}; 1820};
1573 1821
1582=cut 1830=cut
1583 1831
1584register_read_type storable => sub { 1832register_read_type storable => sub {
1585 my ($self, $cb) = @_; 1833 my ($self, $cb) = @_;
1586 1834
1587 require Storable; 1835 require Storable unless $Storable::VERSION;
1588 1836
1589 sub { 1837 sub {
1590 # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method 1838 # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1591 defined (my $len = eval { unpack "w", $_[0]{rbuf} }) 1839 defined (my $len = eval { unpack "w", $_[0]{rbuf} })
1592 or return; 1840 or return;
1595 1843
1596 # bypass unshift if we already have the remaining chunk 1844 # bypass unshift if we already have the remaining chunk
1597 if ($format + $len <= length $_[0]{rbuf}) { 1845 if ($format + $len <= length $_[0]{rbuf}) {
1598 my $data = substr $_[0]{rbuf}, $format, $len; 1846 my $data = substr $_[0]{rbuf}, $format, $len;
1599 substr $_[0]{rbuf}, 0, $format + $len, ""; 1847 substr $_[0]{rbuf}, 0, $format + $len, "";
1848
1600 $cb->($_[0], Storable::thaw ($data)); 1849 eval { $cb->($_[0], Storable::thaw ($data)); 1 }
1850 or return $_[0]->_error (Errno::EBADMSG);
1601 } else { 1851 } else {
1602 # remove prefix 1852 # remove prefix
1603 substr $_[0]{rbuf}, 0, $format, ""; 1853 substr $_[0]{rbuf}, 0, $format, "";
1604 1854
1605 # read remaining chunk 1855 # read remaining chunk
1606 $_[0]->unshift_read (chunk => $len, sub { 1856 $_[0]->unshift_read (chunk => $len, sub {
1607 if (my $ref = eval { Storable::thaw ($_[1]) }) { 1857 eval { $cb->($_[0], Storable::thaw ($_[1])); 1 }
1608 $cb->($_[0], $ref);
1609 } else {
1610 $self->_error (Errno::EBADMSG); 1858 or $_[0]->_error (Errno::EBADMSG);
1611 }
1612 }); 1859 });
1613 } 1860 }
1614 1861
1615 1 1862 1
1616 } 1863 }
1617}; 1864};
1618 1865
1866=item tls_detect => $cb->($handle, $detect, $major, $minor)
1867
1868Checks the input stream for a valid SSL or TLS handshake TLSPaintext
1869record without consuming anything. Only SSL version 3 or higher
1870is handled, up to the fictituous protocol 4.x (but both SSL3+ and
1871SSL2-compatible framing is supported).
1872
1873If it detects that the input data is likely TLS, it calls the callback
1874with a true value for C<$detect> and the (on-wire) TLS version as second
1875and third argument (C<$major> is C<3>, and C<$minor> is 0..3 for SSL
18763.0, TLS 1.0, 1.1 and 1.2, respectively). If it detects the input to
1877be definitely not TLS, it calls the callback with a false value for
1878C<$detect>.
1879
1880The callback could use this information to decide whether or not to start
1881TLS negotiation.
1882
1883In all cases the data read so far is passed to the following read
1884handlers.
1885
1886Usually you want to use the C<tls_autostart> read type instead.
1887
1888If you want to design a protocol that works in the presence of TLS
1889dtection, make sure that any non-TLS data doesn't start with the octet 22
1890(ASCII SYN, 16 hex) or 128-255 (i.e. highest bit set). The checks this
1891read type does are a bit more strict, but might losen in the future to
1892accomodate protocol changes.
1893
1894This read type does not rely on L<AnyEvent::TLS> (and thus, not on
1895L<Net::SSLeay>).
1896
1897=item tls_autostart => $tls[, $tls_ctx]
1898
1899Tries to detect a valid SSL or TLS handshake. If one is detected, it tries
1900to start tls by calling C<starttls> with the given arguments.
1901
1902In practise, C<$tls> must be C<accept>, or a Net::SSLeay context that has
1903been configured to accept, as servers do not normally send a handshake on
1904their own and ths cannot be detected in this way.
1905
1906See C<tls_detect> above for more details.
1907
1908Example: give the client a chance to start TLS before accepting a text
1909line.
1910
1911 $hdl->push_read (tls_detect => "accept");
1912 $hdl->push_read (line => sub {
1913 print "received ", ($_[0]{tls} ? "encrypted" : "cleartext"), " <$_[1]>\n";
1914 });
1915
1916=cut
1917
1918register_read_type tls_detect => sub {
1919 my ($self, $cb) = @_;
1920
1921 sub {
1922 # this regex matches a full or partial tls record
1923 if (
1924 # ssl3+: type(22=handshake) major(=3) minor(any) length_hi
1925 $self->{rbuf} =~ /^(?:\z| \x16 (\z| [\x03\x04] (?:\z| . (?:\z| [\x00-\x40] ))))/xs
1926 # ssl2 comapatible: len_hi len_lo type(1) major minor dummy(forlength)
1927 or $self->{rbuf} =~ /^(?:\z| [\x80-\xff] (?:\z| . (?:\z| \x01 (\z| [\x03\x04] (?:\z| . (?:\z| . ))))))/xs
1928 ) {
1929 return if 3 != length $1; # partial match, can't decide yet
1930
1931 # full match, valid TLS record
1932 my ($major, $minor) = unpack "CC", $1;
1933 $cb->($self, "accept", $major + $minor * 0.1);
1934 } else {
1935 # mismatch == guaranteed not TLS
1936 $cb->($self, undef);
1937 }
1938
1939 1
1940 }
1941};
1942
1943register_read_type tls_autostart => sub {
1944 my ($self, @tls) = @_;
1945
1946 $RH{tls_detect}($self, sub {
1947 return unless $_[1];
1948 $_[0]->starttls (@tls);
1949 })
1950};
1951
1619=back 1952=back
1620 1953
1621=item AnyEvent::Handle::register_read_type type => $coderef->($handle, $cb, @args) 1954=item custom read types - Package::anyevent_read_type $handle, $cb, @args
1622 1955
1623This function (not method) lets you add your own types to C<push_read>. 1956Instead of one of the predefined types, you can also specify the name
1957of a package. AnyEvent will try to load the package and then expects to
1958find a function named C<anyevent_read_type> inside. If it isn't found, it
1959progressively tries to load the parent package until it either finds the
1960function (good) or runs out of packages (bad).
1624 1961
1625Whenever the given C<type> is used, C<push_read> will invoke the code 1962Whenever this type is used, C<push_read> will invoke the function with the
1626reference with the handle object, the callback and the remaining 1963handle object, the original callback and the remaining arguments.
1627arguments.
1628 1964
1629The code reference is supposed to return a callback (usually a closure) 1965The function is supposed to return a callback (usually a closure) that
1630that works as a plain read callback (see C<< ->push_read ($cb) >>). 1966works as a plain read callback (see C<< ->push_read ($cb) >>), so you can
1967mentally treat the function as a "configurable read type to read callback"
1968converter.
1631 1969
1632It should invoke the passed callback when it is done reading (remember to 1970It should invoke the original callback when it is done reading (remember
1633pass C<$handle> as first argument as all other callbacks do that). 1971to pass C<$handle> as first argument as all other callbacks do that,
1972although there is no strict requirement on this).
1634 1973
1635Note that this is a function, and all types registered this way will be
1636global, so try to use unique names.
1637
1638For examples, see the source of this module (F<perldoc -m AnyEvent::Handle>, 1974For examples, see the source of this module (F<perldoc -m
1639search for C<register_read_type>)). 1975AnyEvent::Handle>, search for C<register_read_type>)).
1640 1976
1641=item $handle->stop_read 1977=item $handle->stop_read
1642 1978
1643=item $handle->start_read 1979=item $handle->start_read
1644 1980
1650Note that AnyEvent::Handle will automatically C<start_read> for you when 1986Note that AnyEvent::Handle will automatically C<start_read> for you when
1651you change the C<on_read> callback or push/unshift a read callback, and it 1987you change the C<on_read> callback or push/unshift a read callback, and it
1652will automatically C<stop_read> for you when neither C<on_read> is set nor 1988will automatically C<stop_read> for you when neither C<on_read> is set nor
1653there are any read requests in the queue. 1989there are any read requests in the queue.
1654 1990
1655These methods will have no effect when in TLS mode (as TLS doesn't support 1991In older versions of this module (<= 5.3), these methods had no effect,
1656half-duplex connections). 1992as TLS does not support half-duplex connections. In current versions they
1993work as expected, as this behaviour is required to avoid certain resource
1994attacks, where the program would be forced to read (and buffer) arbitrary
1995amounts of data before being able to send some data. The drawback is that
1996some readings of the the SSL/TLS specifications basically require this
1997attack to be working, as SSL/TLS implementations might stall sending data
1998during a rehandshake.
1999
2000As a guideline, during the initial handshake, you should not stop reading,
2001and as a client, it might cause problems, depending on your application.
1657 2002
1658=cut 2003=cut
1659 2004
1660sub stop_read { 2005sub stop_read {
1661 my ($self) = @_; 2006 my ($self) = @_;
1662 2007
1663 delete $self->{_rw} unless $self->{tls}; 2008 delete $self->{_rw};
1664} 2009}
1665 2010
1666sub start_read { 2011sub start_read {
1667 my ($self) = @_; 2012 my ($self) = @_;
1668 2013
1669 unless ($self->{_rw} || $self->{_eof}) { 2014 unless ($self->{_rw} || $self->{_eof} || !$self->{fh}) {
1670 Scalar::Util::weaken $self; 2015 Scalar::Util::weaken $self;
1671 2016
1672 $self->{_rw} = AE::io $self->{fh}, 0, sub { 2017 $self->{_rw} = AE::io $self->{fh}, 0, sub {
1673 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf}); 2018 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf});
1674 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size} || 8192, length $$rbuf; 2019 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size}, length $$rbuf;
1675 2020
1676 if ($len > 0) { 2021 if ($len > 0) {
1677 $self->{_activity} = $self->{_ractivity} = AE::now; 2022 $self->{_activity} = $self->{_ractivity} = AE::now;
1678 2023
1679 if ($self->{tls}) { 2024 if ($self->{tls}) {
1682 &_dotls ($self); 2027 &_dotls ($self);
1683 } else { 2028 } else {
1684 $self->_drain_rbuf; 2029 $self->_drain_rbuf;
1685 } 2030 }
1686 2031
2032 if ($len == $self->{read_size}) {
2033 $self->{read_size} *= 2;
2034 $self->{read_size} = $self->{max_read_size} || MAX_READ_SIZE
2035 if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
2036 }
2037
1687 } elsif (defined $len) { 2038 } elsif (defined $len) {
1688 delete $self->{_rw}; 2039 delete $self->{_rw};
1689 $self->{_eof} = 1; 2040 $self->{_eof} = 1;
1690 $self->_drain_rbuf; 2041 $self->_drain_rbuf;
1691 2042
1703 my ($self, $err) = @_; 2054 my ($self, $err) = @_;
1704 2055
1705 return $self->_error ($!, 1) 2056 return $self->_error ($!, 1)
1706 if $err == Net::SSLeay::ERROR_SYSCALL (); 2057 if $err == Net::SSLeay::ERROR_SYSCALL ();
1707 2058
1708 my $err =Net::SSLeay::ERR_error_string (Net::SSLeay::ERR_get_error ()); 2059 my $err = Net::SSLeay::ERR_error_string (Net::SSLeay::ERR_get_error ());
1709 2060
1710 # reduce error string to look less scary 2061 # reduce error string to look less scary
1711 $err =~ s/^error:[0-9a-fA-F]{8}:[^:]+:([^:]+):/\L$1: /; 2062 $err =~ s/^error:[0-9a-fA-F]{8}:[^:]+:([^:]+):/\L$1: /;
1712 2063
1713 if ($self->{_on_starttls}) { 2064 if ($self->{_on_starttls}) {
1727sub _dotls { 2078sub _dotls {
1728 my ($self) = @_; 2079 my ($self) = @_;
1729 2080
1730 my $tmp; 2081 my $tmp;
1731 2082
1732 if (length $self->{_tls_wbuf}) { 2083 while (length $self->{_tls_wbuf}) {
1733 while (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) > 0) { 2084 if (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) <= 0) {
1734 substr $self->{_tls_wbuf}, 0, $tmp, ""; 2085 $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp);
2086
2087 return $self->_tls_error ($tmp)
2088 if $tmp != $ERROR_WANT_READ
2089 && ($tmp != $ERROR_SYSCALL || $!);
2090
2091 last;
1735 } 2092 }
1736 2093
1737 $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp); 2094 substr $self->{_tls_wbuf}, 0, $tmp, "";
1738 return $self->_tls_error ($tmp)
1739 if $tmp != $ERROR_WANT_READ
1740 && ($tmp != $ERROR_SYSCALL || $!);
1741 } 2095 }
1742 2096
1743 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) { 2097 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) {
1744 unless (length $tmp) { 2098 unless (length $tmp) {
1745 $self->{_on_starttls} 2099 $self->{_on_starttls}
1759 $self->{_tls_rbuf} .= $tmp; 2113 $self->{_tls_rbuf} .= $tmp;
1760 $self->_drain_rbuf; 2114 $self->_drain_rbuf;
1761 $self->{tls} or return; # tls session might have gone away in callback 2115 $self->{tls} or return; # tls session might have gone away in callback
1762 } 2116 }
1763 2117
1764 $tmp = Net::SSLeay::get_error ($self->{tls}, -1); 2118 $tmp = Net::SSLeay::get_error ($self->{tls}, -1); # -1 is not neccessarily correct, but Net::SSLeay doesn't tell us
1765 return $self->_tls_error ($tmp) 2119 return $self->_tls_error ($tmp)
1766 if $tmp != $ERROR_WANT_READ 2120 if $tmp != $ERROR_WANT_READ
1767 && ($tmp != $ERROR_SYSCALL || $!); 2121 && ($tmp != $ERROR_SYSCALL || $!);
1768 2122
1769 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) { 2123 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) {
1770 $self->{wbuf} .= $tmp; 2124 $self->{wbuf} .= $tmp;
1771 $self->_drain_wbuf; 2125 $self->_drain_wbuf;
2126 $self->{tls} or return; # tls session might have gone away in callback
1772 } 2127 }
1773 2128
1774 $self->{_on_starttls} 2129 $self->{_on_starttls}
1775 and Net::SSLeay::state ($self->{tls}) == Net::SSLeay::ST_OK () 2130 and Net::SSLeay::state ($self->{tls}) == Net::SSLeay::ST_OK ()
1776 and (delete $self->{_on_starttls})->($self, 1, "TLS/SSL connection established"); 2131 and (delete $self->{_on_starttls})->($self, 1, "TLS/SSL connection established");
1778 2133
1779=item $handle->starttls ($tls[, $tls_ctx]) 2134=item $handle->starttls ($tls[, $tls_ctx])
1780 2135
1781Instead of starting TLS negotiation immediately when the AnyEvent::Handle 2136Instead of starting TLS negotiation immediately when the AnyEvent::Handle
1782object is created, you can also do that at a later time by calling 2137object is created, you can also do that at a later time by calling
1783C<starttls>. 2138C<starttls>. See the C<tls> constructor argument for general info.
1784 2139
1785Starting TLS is currently an asynchronous operation - when you push some 2140Starting TLS is currently an asynchronous operation - when you push some
1786write data and then call C<< ->starttls >> then TLS negotiation will start 2141write data and then call C<< ->starttls >> then TLS negotiation will start
1787immediately, after which the queued write data is then sent. 2142immediately, after which the queued write data is then sent. This might
2143change in future versions, so best make sure you have no outstanding write
2144data when calling this method.
1788 2145
1789The first argument is the same as the C<tls> constructor argument (either 2146The first argument is the same as the C<tls> constructor argument (either
1790C<"connect">, C<"accept"> or an existing Net::SSLeay object). 2147C<"connect">, C<"accept"> or an existing Net::SSLeay object).
1791 2148
1792The second argument is the optional C<AnyEvent::TLS> object that is used 2149The second argument is the optional C<AnyEvent::TLS> object that is used
1798context in C<< $handle->{tls_ctx} >> after this call and can be used or 2155context in C<< $handle->{tls_ctx} >> after this call and can be used or
1799changed to your liking. Note that the handshake might have already started 2156changed to your liking. Note that the handshake might have already started
1800when this function returns. 2157when this function returns.
1801 2158
1802Due to bugs in OpenSSL, it might or might not be possible to do multiple 2159Due to bugs in OpenSSL, it might or might not be possible to do multiple
1803handshakes on the same stream. Best do not attempt to use the stream after 2160handshakes on the same stream. It is best to not attempt to use the
1804stopping TLS. 2161stream after stopping TLS.
2162
2163This method may invoke callbacks (and therefore the handle might be
2164destroyed after it returns).
1805 2165
1806=cut 2166=cut
1807 2167
1808our %TLS_CACHE; #TODO not yet documented, should we? 2168our %TLS_CACHE; #TODO not yet documented, should we?
1809 2169
1811 my ($self, $tls, $ctx) = @_; 2171 my ($self, $tls, $ctx) = @_;
1812 2172
1813 Carp::croak "It is an error to call starttls on an AnyEvent::Handle object while TLS is already active, caught" 2173 Carp::croak "It is an error to call starttls on an AnyEvent::Handle object while TLS is already active, caught"
1814 if $self->{tls}; 2174 if $self->{tls};
1815 2175
2176 unless (defined $AnyEvent::TLS::VERSION) {
2177 eval {
2178 require Net::SSLeay;
2179 require AnyEvent::TLS;
2180 1
2181 } or return $self->_error (Errno::EPROTO, 1, "TLS support not available on this system");
2182 }
2183
1816 $self->{tls} = $tls; 2184 $self->{tls} = $tls;
1817 $self->{tls_ctx} = $ctx if @_ > 2; 2185 $self->{tls_ctx} = $ctx if @_ > 2;
1818 2186
1819 return unless $self->{fh}; 2187 return unless $self->{fh};
1820 2188
1821 require Net::SSLeay;
1822
1823 $ERROR_SYSCALL = Net::SSLeay::ERROR_SYSCALL (); 2189 $ERROR_SYSCALL = Net::SSLeay::ERROR_SYSCALL ();
1824 $ERROR_WANT_READ = Net::SSLeay::ERROR_WANT_READ (); 2190 $ERROR_WANT_READ = Net::SSLeay::ERROR_WANT_READ ();
1825 2191
1826 $tls = delete $self->{tls}; 2192 $tls = delete $self->{tls};
1827 $ctx = $self->{tls_ctx}; 2193 $ctx = $self->{tls_ctx};
1828 2194
1829 local $Carp::CarpLevel = 1; # skip ourselves when creating a new context or session 2195 local $Carp::CarpLevel = 1; # skip ourselves when creating a new context or session
1830 2196
1831 if ("HASH" eq ref $ctx) { 2197 if ("HASH" eq ref $ctx) {
1832 require AnyEvent::TLS;
1833
1834 if ($ctx->{cache}) { 2198 if ($ctx->{cache}) {
1835 my $key = $ctx+0; 2199 my $key = $ctx+0;
1836 $ctx = $TLS_CACHE{$key} ||= new AnyEvent::TLS %$ctx; 2200 $ctx = $TLS_CACHE{$key} ||= new AnyEvent::TLS %$ctx;
1837 } else { 2201 } else {
1838 $ctx = new AnyEvent::TLS %$ctx; 2202 $ctx = new AnyEvent::TLS %$ctx;
1860 Net::SSLeay::CTX_set_mode ($tls, 1|2); 2224 Net::SSLeay::CTX_set_mode ($tls, 1|2);
1861 2225
1862 $self->{_rbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ()); 2226 $self->{_rbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
1863 $self->{_wbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ()); 2227 $self->{_wbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
1864 2228
1865 Net::SSLeay::BIO_write ($self->{_rbio}, delete $self->{rbuf}); 2229 Net::SSLeay::BIO_write ($self->{_rbio}, $self->{rbuf});
2230 $self->{rbuf} = "";
1866 2231
1867 Net::SSLeay::set_bio ($tls, $self->{_rbio}, $self->{_wbio}); 2232 Net::SSLeay::set_bio ($tls, $self->{_rbio}, $self->{_wbio});
1868 2233
1869 $self->{_on_starttls} = sub { $_[0]{on_starttls}(@_) } 2234 $self->{_on_starttls} = sub { $_[0]{on_starttls}(@_) }
1870 if $self->{on_starttls}; 2235 if $self->{on_starttls};
1875 2240
1876=item $handle->stoptls 2241=item $handle->stoptls
1877 2242
1878Shuts down the SSL connection - this makes a proper EOF handshake by 2243Shuts down the SSL connection - this makes a proper EOF handshake by
1879sending a close notify to the other side, but since OpenSSL doesn't 2244sending a close notify to the other side, but since OpenSSL doesn't
1880support non-blocking shut downs, it is not guarenteed that you can re-use 2245support non-blocking shut downs, it is not guaranteed that you can re-use
1881the stream afterwards. 2246the stream afterwards.
2247
2248This method may invoke callbacks (and therefore the handle might be
2249destroyed after it returns).
1882 2250
1883=cut 2251=cut
1884 2252
1885sub stoptls { 2253sub stoptls {
1886 my ($self) = @_; 2254 my ($self) = @_;
1887 2255
1888 if ($self->{tls}) { 2256 if ($self->{tls} && $self->{fh}) {
1889 Net::SSLeay::shutdown ($self->{tls}); 2257 Net::SSLeay::shutdown ($self->{tls});
1890 2258
1891 &_dotls; 2259 &_dotls;
1892 2260
1893# # we don't give a shit. no, we do, but we can't. no...#d# 2261# # we don't give a shit. no, we do, but we can't. no...#d#
1905 if $self->{tls} > 0; 2273 if $self->{tls} > 0;
1906 2274
1907 delete @$self{qw(_rbio _wbio _tls_wbuf _on_starttls)}; 2275 delete @$self{qw(_rbio _wbio _tls_wbuf _on_starttls)};
1908} 2276}
1909 2277
2278=item $handle->resettls
2279
2280This rarely-used method simply resets and TLS state on the handle, usually
2281causing data loss.
2282
2283One case where it may be useful is when you want to skip over the data in
2284the stream but you are not interested in interpreting it, so data loss is
2285no concern.
2286
2287=cut
2288
2289*resettls = \&_freetls;
2290
1910sub DESTROY { 2291sub DESTROY {
1911 my ($self) = @_; 2292 my ($self) = @_;
1912 2293
1913 &_freetls; 2294 &_freetls;
1914 2295
1923 push @linger, AE::io $fh, 1, sub { 2304 push @linger, AE::io $fh, 1, sub {
1924 my $len = syswrite $fh, $wbuf, length $wbuf; 2305 my $len = syswrite $fh, $wbuf, length $wbuf;
1925 2306
1926 if ($len > 0) { 2307 if ($len > 0) {
1927 substr $wbuf, 0, $len, ""; 2308 substr $wbuf, 0, $len, "";
1928 } else { 2309 } elsif (defined $len || ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK)) {
1929 @linger = (); # end 2310 @linger = (); # end
1930 } 2311 }
1931 }; 2312 };
1932 push @linger, AE::timer $linger, 0, sub { 2313 push @linger, AE::timer $linger, 0, sub {
1933 @linger = (); 2314 @linger = ();
1970 2351
1971sub AnyEvent::Handle::destroyed::AUTOLOAD { 2352sub AnyEvent::Handle::destroyed::AUTOLOAD {
1972 #nop 2353 #nop
1973} 2354}
1974 2355
2356=item $handle->destroyed
2357
2358Returns false as long as the handle hasn't been destroyed by a call to C<<
2359->destroy >>, true otherwise.
2360
2361Can be useful to decide whether the handle is still valid after some
2362callback possibly destroyed the handle. For example, C<< ->push_write >>,
2363C<< ->starttls >> and other methods can call user callbacks, which in turn
2364can destroy the handle, so work can be avoided by checking sometimes:
2365
2366 $hdl->starttls ("accept");
2367 return if $hdl->destroyed;
2368 $hdl->push_write (...
2369
2370Note that the call to C<push_write> will silently be ignored if the handle
2371has been destroyed, so often you can just ignore the possibility of the
2372handle being destroyed.
2373
2374=cut
2375
2376sub destroyed { 0 }
2377sub AnyEvent::Handle::destroyed::destroyed { 1 }
2378
1975=item AnyEvent::Handle::TLS_CTX 2379=item AnyEvent::Handle::TLS_CTX
1976 2380
1977This function creates and returns the AnyEvent::TLS object used by default 2381This function creates and returns the AnyEvent::TLS object used by default
1978for TLS mode. 2382for TLS mode.
1979 2383
2006 2410
2007It is only safe to "forget" the reference inside EOF or error callbacks, 2411It is only safe to "forget" the reference inside EOF or error callbacks,
2008from within all other callbacks, you need to explicitly call the C<< 2412from within all other callbacks, you need to explicitly call the C<<
2009->destroy >> method. 2413->destroy >> method.
2010 2414
2415=item Why is my C<on_eof> callback never called?
2416
2417Probably because your C<on_error> callback is being called instead: When
2418you have outstanding requests in your read queue, then an EOF is
2419considered an error as you clearly expected some data.
2420
2421To avoid this, make sure you have an empty read queue whenever your handle
2422is supposed to be "idle" (i.e. connection closes are O.K.). You can set
2423an C<on_read> handler that simply pushes the first read requests in the
2424queue.
2425
2426See also the next question, which explains this in a bit more detail.
2427
2428=item How can I serve requests in a loop?
2429
2430Most protocols consist of some setup phase (authentication for example)
2431followed by a request handling phase, where the server waits for requests
2432and handles them, in a loop.
2433
2434There are two important variants: The first (traditional, better) variant
2435handles requests until the server gets some QUIT command, causing it to
2436close the connection first (highly desirable for a busy TCP server). A
2437client dropping the connection is an error, which means this variant can
2438detect an unexpected detection close.
2439
2440To handle this case, always make sure you have a non-empty read queue, by
2441pushing the "read request start" handler on it:
2442
2443 # we assume a request starts with a single line
2444 my @start_request; @start_request = (line => sub {
2445 my ($hdl, $line) = @_;
2446
2447 ... handle request
2448
2449 # push next request read, possibly from a nested callback
2450 $hdl->push_read (@start_request);
2451 });
2452
2453 # auth done, now go into request handling loop
2454 # now push the first @start_request
2455 $hdl->push_read (@start_request);
2456
2457By always having an outstanding C<push_read>, the handle always expects
2458some data and raises the C<EPIPE> error when the connction is dropped
2459unexpectedly.
2460
2461The second variant is a protocol where the client can drop the connection
2462at any time. For TCP, this means that the server machine may run out of
2463sockets easier, and in general, it means you cannot distinguish a protocl
2464failure/client crash from a normal connection close. Nevertheless, these
2465kinds of protocols are common (and sometimes even the best solution to the
2466problem).
2467
2468Having an outstanding read request at all times is possible if you ignore
2469C<EPIPE> errors, but this doesn't help with when the client drops the
2470connection during a request, which would still be an error.
2471
2472A better solution is to push the initial request read in an C<on_read>
2473callback. This avoids an error, as when the server doesn't expect data
2474(i.e. is idly waiting for the next request, an EOF will not raise an
2475error, but simply result in an C<on_eof> callback. It is also a bit slower
2476and simpler:
2477
2478 # auth done, now go into request handling loop
2479 $hdl->on_read (sub {
2480 my ($hdl) = @_;
2481
2482 # called each time we receive data but the read queue is empty
2483 # simply start read the request
2484
2485 $hdl->push_read (line => sub {
2486 my ($hdl, $line) = @_;
2487
2488 ... handle request
2489
2490 # do nothing special when the request has been handled, just
2491 # let the request queue go empty.
2492 });
2493 });
2494
2011=item I get different callback invocations in TLS mode/Why can't I pause 2495=item I get different callback invocations in TLS mode/Why can't I pause
2012reading? 2496reading?
2013 2497
2014Unlike, say, TCP, TLS connections do not consist of two independent 2498Unlike, say, TCP, TLS connections do not consist of two independent
2015communication channels, one for each direction. Or put differently. The 2499communication channels, one for each direction. Or put differently, the
2016read and write directions are not independent of each other: you cannot 2500read and write directions are not independent of each other: you cannot
2017write data unless you are also prepared to read, and vice versa. 2501write data unless you are also prepared to read, and vice versa.
2018 2502
2019This can mean than, in TLS mode, you might get C<on_error> or C<on_eof> 2503This means that, in TLS mode, you might get C<on_error> or C<on_eof>
2020callback invocations when you are not expecting any read data - the reason 2504callback invocations when you are not expecting any read data - the reason
2021is that AnyEvent::Handle always reads in TLS mode. 2505is that AnyEvent::Handle always reads in TLS mode.
2022 2506
2023During the connection, you have to make sure that you always have a 2507During the connection, you have to make sure that you always have a
2024non-empty read-queue, or an C<on_read> watcher. At the end of the 2508non-empty read-queue, or an C<on_read> watcher. At the end of the
2036 $handle->on_eof (undef); 2520 $handle->on_eof (undef);
2037 $handle->on_error (sub { 2521 $handle->on_error (sub {
2038 my $data = delete $_[0]{rbuf}; 2522 my $data = delete $_[0]{rbuf};
2039 }); 2523 });
2040 2524
2525Note that this example removes the C<rbuf> member from the handle object,
2526which is not normally allowed by the API. It is expressly permitted in
2527this case only, as the handle object needs to be destroyed afterwards.
2528
2041The reason to use C<on_error> is that TCP connections, due to latencies 2529The reason to use C<on_error> is that TCP connections, due to latencies
2042and packets loss, might get closed quite violently with an error, when in 2530and packets loss, might get closed quite violently with an error, when in
2043fact, all data has been received. 2531fact all data has been received.
2044 2532
2045It is usually better to use acknowledgements when transferring data, 2533It is usually better to use acknowledgements when transferring data,
2046to make sure the other side hasn't just died and you got the data 2534to make sure the other side hasn't just died and you got the data
2047intact. This is also one reason why so many internet protocols have an 2535intact. This is also one reason why so many internet protocols have an
2048explicit QUIT command. 2536explicit QUIT command.
2055C<low_water_mark> this will be called precisely when all data has been 2543C<low_water_mark> this will be called precisely when all data has been
2056written to the socket: 2544written to the socket:
2057 2545
2058 $handle->push_write (...); 2546 $handle->push_write (...);
2059 $handle->on_drain (sub { 2547 $handle->on_drain (sub {
2060 warn "all data submitted to the kernel\n"; 2548 AE::log debug => "All data submitted to the kernel.";
2061 undef $handle; 2549 undef $handle;
2062 }); 2550 });
2063 2551
2064If you just want to queue some data and then signal EOF to the other side, 2552If you just want to queue some data and then signal EOF to the other side,
2065consider using C<< ->push_shutdown >> instead. 2553consider using C<< ->push_shutdown >> instead.
2066 2554
2067=item I want to contact a TLS/SSL server, I don't care about security. 2555=item I want to contact a TLS/SSL server, I don't care about security.
2068 2556
2069If your TLS server is a pure TLS server (e.g. HTTPS) that only speaks TLS, 2557If your TLS server is a pure TLS server (e.g. HTTPS) that only speaks TLS,
2070simply connect to it and then create the AnyEvent::Handle with the C<tls> 2558connect to it and then create the AnyEvent::Handle with the C<tls>
2071parameter: 2559parameter:
2072 2560
2073 tcp_connect $host, $port, sub { 2561 tcp_connect $host, $port, sub {
2074 my ($fh) = @_; 2562 my ($fh) = @_;
2075 2563
2149When you have intermediate CA certificates that your clients might not 2637When you have intermediate CA certificates that your clients might not
2150know about, just append them to the C<cert_file>. 2638know about, just append them to the C<cert_file>.
2151 2639
2152=back 2640=back
2153 2641
2154
2155=head1 SUBCLASSING AnyEvent::Handle 2642=head1 SUBCLASSING AnyEvent::Handle
2156 2643
2157In many cases, you might want to subclass AnyEvent::Handle. 2644In many cases, you might want to subclass AnyEvent::Handle.
2158 2645
2159To make this easier, a given version of AnyEvent::Handle uses these 2646To make this easier, a given version of AnyEvent::Handle uses these
2175 2662
2176=item * all members not documented here and not prefixed with an underscore 2663=item * all members not documented here and not prefixed with an underscore
2177are free to use in subclasses. 2664are free to use in subclasses.
2178 2665
2179Of course, new versions of AnyEvent::Handle may introduce more "public" 2666Of course, new versions of AnyEvent::Handle may introduce more "public"
2180member variables, but thats just life, at least it is documented. 2667member variables, but that's just life. At least it is documented.
2181 2668
2182=back 2669=back
2183 2670
2184=head1 AUTHOR 2671=head1 AUTHOR
2185 2672
2186Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>. 2673Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>.
2187 2674
2188=cut 2675=cut
2189 2676
21901; # End of AnyEvent::Handle 26771
2678

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines