ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
Revision: 1.238
Committed: Tue Dec 10 15:54:51 2013 UTC (10 years, 5 months ago) by root
Branch: MAIN
Changes since 1.237: +99 -10 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 elmex 1.1 =head1 NAME
2    
3 root 1.194 AnyEvent::Handle - non-blocking I/O on streaming handles via AnyEvent
4 elmex 1.1
5     =head1 SYNOPSIS
6    
7     use AnyEvent;
8     use AnyEvent::Handle;
9    
10     my $cv = AnyEvent->condvar;
11    
12 root 1.149 my $hdl; $hdl = new AnyEvent::Handle
13     fh => \*STDIN,
14     on_error => sub {
15 root 1.151 my ($hdl, $fatal, $msg) = @_;
16 root 1.233 AE::log error => $msg;
17 root 1.151 $hdl->destroy;
18 root 1.149 $cv->send;
19 root 1.188 };
20 elmex 1.2
21 root 1.31 # send some request line
22 root 1.149 $hdl->push_write ("getinfo\015\012");
23 root 1.31
24     # read the response line
25 root 1.149 $hdl->push_read (line => sub {
26     my ($hdl, $line) = @_;
27 root 1.225 say "got line <$line>";
28 root 1.31 $cv->send;
29     });
30    
31     $cv->recv;
32 elmex 1.1
33     =head1 DESCRIPTION
34    
35 root 1.198 This is a helper module to make it easier to do event-based I/O on
36     stream-based filehandles (sockets, pipes, and other stream things).
37 root 1.8
38 root 1.84 The L<AnyEvent::Intro> tutorial contains some well-documented
39     AnyEvent::Handle examples.
40    
41 root 1.198 In the following, where the documentation refers to "bytes", it means
42     characters. As sysread and syswrite are used for all I/O, their
43 root 1.8 treatment of characters applies to this module as well.
44 elmex 1.1
45 root 1.159 At the very minimum, you should specify C<fh> or C<connect>, and the
46     C<on_error> callback.
47    
48 root 1.8 All callbacks will be invoked with the handle object as their first
49     argument.
50 elmex 1.1
51 root 1.176 =cut
52    
53     package AnyEvent::Handle;
54    
55     use Scalar::Util ();
56     use List::Util ();
57     use Carp ();
58     use Errno qw(EAGAIN EINTR);
59    
60     use AnyEvent (); BEGIN { AnyEvent::common_sense }
61     use AnyEvent::Util qw(WSAEWOULDBLOCK);
62    
63 root 1.177 our $VERSION = $AnyEvent::VERSION;
64    
65 root 1.185 sub _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    
80 root 1.203 sub MAX_READ_SIZE() { 131072 }
81    
82 elmex 1.1 =head1 METHODS
83    
84     =over 4
85    
86 root 1.191 =item $handle = B<new> AnyEvent::Handle fh => $filehandle, key => value...
87 elmex 1.1
88 root 1.131 The constructor supports these arguments (all as C<< key => value >> pairs).
89 elmex 1.1
90     =over 4
91    
92 root 1.159 =item fh => $filehandle [C<fh> or C<connect> MANDATORY]
93 root 1.158
94 elmex 1.1 The filehandle this L<AnyEvent::Handle> object will operate on.
95 root 1.83 NOTE: The filehandle will be set to non-blocking mode (using
96     C<AnyEvent::Util::fh_nonblocking>) by the constructor and needs to stay in
97     that mode.
98 root 1.8
99 root 1.159 =item connect => [$host, $service] [C<fh> or C<connect> MANDATORY]
100    
101     Try to connect to the specified host and service (port), using
102     C<AnyEvent::Socket::tcp_connect>. The C<$host> additionally becomes the
103     default C<peername>.
104    
105     You have to specify either this parameter, or C<fh>, above.
106    
107 root 1.160 It is possible to push requests on the read and write queues, and modify
108     properties of the stream, even while AnyEvent::Handle is connecting.
109    
110 root 1.159 When this parameter is specified, then the C<on_prepare>,
111     C<on_connect_error> and C<on_connect> callbacks will be called under the
112     appropriate circumstances:
113    
114     =over 4
115    
116     =item on_prepare => $cb->($handle)
117    
118     This (rarely used) callback is called before a new connection is
119 root 1.210 attempted, but after the file handle has been created (you can access that
120     file handle via C<< $handle->{fh} >>). It could be used to prepare the
121     file handle with parameters required for the actual connect (as opposed to
122     settings that can be changed when the connection is already established).
123 root 1.159
124 root 1.161 The return value of this callback should be the connect timeout value in
125 root 1.198 seconds (or C<0>, or C<undef>, or the empty list, to indicate that the
126     default timeout is to be used).
127 root 1.161
128 root 1.159 =item on_connect => $cb->($handle, $host, $port, $retry->())
129    
130     This callback is called when a connection has been successfully established.
131    
132 root 1.198 The peer's numeric host and port (the socket peername) are passed as
133 root 1.228 parameters, together with a retry callback. At the time it is called the
134     read and write queues, EOF status, TLS status and similar properties of
135     the handle will have been reset.
136    
137     It is not allowed to use the read or write queues while the handle object
138     is connecting.
139    
140     If, for some reason, the handle is not acceptable, calling C<$retry> will
141     continue with the next connection target (in case of multi-homed hosts or
142     SRV records there can be multiple connection endpoints). The C<$retry>
143     callback can be invoked after the connect callback returns, i.e. one can
144     start a handshake and then decide to retry with the next host if the
145     handshake fails.
146 root 1.159
147 root 1.198 In most cases, you should ignore the C<$retry> parameter.
148 root 1.158
149 root 1.159 =item on_connect_error => $cb->($handle, $message)
150 root 1.10
151 root 1.186 This callback is called when the connection could not be
152 root 1.159 established. C<$!> will contain the relevant error code, and C<$message> a
153     message describing it (usually the same as C<"$!">).
154 root 1.8
155 root 1.159 If this callback isn't specified, then C<on_error> will be called with a
156     fatal error instead.
157 root 1.82
158 root 1.159 =back
159 root 1.80
160 root 1.133 =item on_error => $cb->($handle, $fatal, $message)
161 root 1.10
162 root 1.52 This is the error callback, which is called when, well, some error
163     occured, such as not being able to resolve the hostname, failure to
164 root 1.198 connect, or a read error.
165 root 1.52
166     Some errors are fatal (which is indicated by C<$fatal> being true). On
167 root 1.149 fatal errors the handle object will be destroyed (by a call to C<< ->
168     destroy >>) after invoking the error callback (which means you are free to
169     examine the handle object). Examples of fatal errors are an EOF condition
170 root 1.204 with active (but unsatisfiable) read watchers (C<EPIPE>) or I/O errors. In
171 root 1.198 cases where the other side can close the connection at will, it is
172 root 1.159 often easiest to not report C<EPIPE> errors in this callback.
173 root 1.82
174 root 1.133 AnyEvent::Handle tries to find an appropriate error code for you to check
175 root 1.233 against, but in some cases (TLS errors), this does not work well.
176    
177     If you report the error to the user, it is recommended to always output
178     the C<$message> argument in human-readable error messages (you don't need
179     to report C<"$!"> if you report C<$message>).
180    
181     If you want to react programmatically to the error, then looking at C<$!>
182     and comparing it against some of the documented C<Errno> values is usually
183     better than looking at the C<$message>.
184 root 1.133
185 root 1.198 Non-fatal errors can be retried by returning, but it is recommended
186 root 1.82 to simply ignore this parameter and instead abondon the handle object
187     when this callback is invoked. Examples of non-fatal errors are timeouts
188     C<ETIMEDOUT>) or badly-formatted data (C<EBADMSG>).
189 root 1.8
190 root 1.198 On entry to the callback, the value of C<$!> contains the operating
191     system error code (or C<ENOSPC>, C<EPIPE>, C<ETIMEDOUT>, C<EBADMSG> or
192 root 1.133 C<EPROTO>).
193 root 1.8
194 root 1.10 While not mandatory, it is I<highly> recommended to set this callback, as
195 root 1.198 you will not be notified of errors otherwise. The default just calls
196 root 1.52 C<croak>.
197 root 1.8
198 root 1.40 =item on_read => $cb->($handle)
199 root 1.8
200     This sets the default read callback, which is called when data arrives
201 root 1.61 and no read request is in the queue (unlike read queue callbacks, this
202     callback will only be called when at least one octet of data is in the
203     read buffer).
204 root 1.8
205     To access (and remove data from) the read buffer, use the C<< ->rbuf >>
206 root 1.139 method or access the C<< $handle->{rbuf} >> member directly. Note that you
207 root 1.117 must not enlarge or modify the read buffer, you can only remove data at
208     the beginning from it.
209 root 1.8
210 root 1.197 You can also call C<< ->push_read (...) >> or any other function that
211     modifies the read queue. Or do both. Or ...
212    
213 root 1.198 When an EOF condition is detected, AnyEvent::Handle will first try to
214 root 1.8 feed all the remaining data to the queued callbacks and C<on_read> before
215     calling the C<on_eof> callback. If no progress can be made, then a fatal
216     error will be raised (with C<$!> set to C<EPIPE>).
217 elmex 1.1
218 root 1.150 Note that, unlike requests in the read queue, an C<on_read> callback
219     doesn't mean you I<require> some data: if there is an EOF and there
220     are outstanding read requests then an error will be flagged. With an
221     C<on_read> callback, the C<on_eof> callback will be invoked.
222    
223 root 1.159 =item on_eof => $cb->($handle)
224    
225     Set the callback to be called when an end-of-file condition is detected,
226     i.e. in the case of a socket, when the other side has closed the
227     connection cleanly, and there are no outstanding read requests in the
228     queue (if there are read requests, then an EOF counts as an unexpected
229     connection close and will be flagged as an error).
230    
231     For sockets, this just means that the other side has stopped sending data,
232     you can still try to write data, and, in fact, one can return from the EOF
233     callback and continue writing data, as only the read part has been shut
234     down.
235    
236     If an EOF condition has been detected but no C<on_eof> callback has been
237     set, then a fatal error will be raised with C<$!> set to <0>.
238    
239 root 1.40 =item on_drain => $cb->($handle)
240 elmex 1.1
241 root 1.229 This sets the callback that is called once when the write buffer becomes
242     empty (and immediately when the handle object is created).
243 elmex 1.1
244 root 1.8 To append to the write buffer, use the C<< ->push_write >> method.
245 elmex 1.2
246 root 1.69 This callback is useful when you don't want to put all of your write data
247     into the queue at once, for example, when you want to write the contents
248     of some file to the socket you might not want to read the whole file into
249     memory and push it into the queue, but instead only read more data from
250     the file when the write queue becomes empty.
251    
252 root 1.43 =item timeout => $fractional_seconds
253    
254 root 1.176 =item rtimeout => $fractional_seconds
255    
256     =item wtimeout => $fractional_seconds
257    
258     If non-zero, then these enables an "inactivity" timeout: whenever this
259     many seconds pass without a successful read or write on the underlying
260     file handle (or a call to C<timeout_reset>), the C<on_timeout> callback
261     will be invoked (and if that one is missing, a non-fatal C<ETIMEDOUT>
262     error will be raised).
263    
264 root 1.218 There are three variants of the timeouts that work independently of each
265     other, for both read and write (triggered when nothing was read I<OR>
266     written), just read (triggered when nothing was read), and just write:
267 root 1.176 C<timeout>, C<rtimeout> and C<wtimeout>, with corresponding callbacks
268     C<on_timeout>, C<on_rtimeout> and C<on_wtimeout>, and reset functions
269     C<timeout_reset>, C<rtimeout_reset>, and C<wtimeout_reset>.
270 root 1.43
271 root 1.218 Note that timeout processing is active even when you do not have any
272     outstanding read or write requests: If you plan to keep the connection
273     idle then you should disable the timeout temporarily or ignore the
274     timeout in the corresponding C<on_timeout> callback, in which case
275     AnyEvent::Handle will simply restart the timeout.
276 root 1.43
277 root 1.218 Zero (the default) disables the corresponding timeout.
278 root 1.43
279     =item on_timeout => $cb->($handle)
280    
281 root 1.218 =item on_rtimeout => $cb->($handle)
282    
283     =item on_wtimeout => $cb->($handle)
284    
285 root 1.43 Called whenever the inactivity timeout passes. If you return from this
286     callback, then the timeout will be reset as if some activity had happened,
287     so this condition is not fatal in any way.
288    
289 root 1.8 =item rbuf_max => <bytes>
290 elmex 1.2
291 root 1.8 If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
292     when the read buffer ever (strictly) exceeds this size. This is useful to
293 root 1.88 avoid some forms of denial-of-service attacks.
294 elmex 1.2
295 root 1.8 For example, a server accepting connections from untrusted sources should
296     be configured to accept only so-and-so much data that it cannot act on
297     (for example, when expecting a line, an attacker could send an unlimited
298     amount of data without a callback ever being called as long as the line
299     isn't finished).
300 elmex 1.2
301 root 1.209 =item wbuf_max => <bytes>
302    
303     If defined, then a fatal error will be raised (with C<$!> set to C<ENOSPC>)
304     when the write buffer ever (strictly) exceeds this size. This is useful to
305     avoid some forms of denial-of-service attacks.
306    
307     Although the units of this parameter is bytes, this is the I<raw> number
308     of bytes not yet accepted by the kernel. This can make a difference when
309     you e.g. use TLS, as TLS typically makes your write data larger (but it
310     can also make it smaller due to compression).
311    
312     As an example of when this limit is useful, take a chat server that sends
313     chat messages to a client. If the client does not read those in a timely
314     manner then the send buffer in the server would grow unbounded.
315    
316 root 1.70 =item autocork => <boolean>
317    
318 root 1.198 When disabled (the default), C<push_write> will try to immediately
319     write the data to the handle if possible. This avoids having to register
320 root 1.88 a write watcher and wait for the next event loop iteration, but can
321     be inefficient if you write multiple small chunks (on the wire, this
322     disadvantage is usually avoided by your kernel's nagle algorithm, see
323     C<no_delay>, but this option can save costly syscalls).
324 root 1.70
325 root 1.198 When enabled, writes will always be queued till the next event loop
326 root 1.70 iteration. This is efficient when you do many small writes per iteration,
327 root 1.88 but less efficient when you do a single write only per iteration (or when
328     the write buffer often is full). It also increases write latency.
329 root 1.70
330     =item no_delay => <boolean>
331    
332     When doing small writes on sockets, your operating system kernel might
333     wait a bit for more data before actually sending it out. This is called
334     the Nagle algorithm, and usually it is beneficial.
335    
336 root 1.88 In some situations you want as low a delay as possible, which can be
337     accomplishd by setting this option to a true value.
338 root 1.70
339 root 1.198 The default is your operating system's default behaviour (most likely
340     enabled). This option explicitly enables or disables it, if possible.
341 root 1.70
342 root 1.182 =item keepalive => <boolean>
343    
344     Enables (default disable) the SO_KEEPALIVE option on the stream socket:
345     normally, TCP connections have no time-out once established, so TCP
346 root 1.186 connections, once established, can stay alive forever even when the other
347 root 1.182 side has long gone. TCP keepalives are a cheap way to take down long-lived
348 root 1.198 TCP connections when the other side becomes unreachable. While the default
349 root 1.182 is OS-dependent, TCP keepalives usually kick in after around two hours,
350     and, if the other side doesn't reply, take down the TCP connection some 10
351     to 15 minutes later.
352    
353     It is harmless to specify this option for file handles that do not support
354     keepalives, and enabling it on connections that are potentially long-lived
355     is usually a good idea.
356    
357     =item oobinline => <boolean>
358    
359     BSD majorly fucked up the implementation of TCP urgent data. The result
360     is that almost no OS implements TCP according to the specs, and every OS
361     implements it slightly differently.
362    
363 root 1.183 If you want to handle TCP urgent data, then setting this flag (the default
364     is enabled) gives you the most portable way of getting urgent data, by
365     putting it into the stream.
366    
367     Since BSD emulation of OOB data on top of TCP's urgent data can have
368     security implications, AnyEvent::Handle sets this flag automatically
369 root 1.184 unless explicitly specified. Note that setting this flag after
370     establishing a connection I<may> be a bit too late (data loss could
371     already have occured on BSD systems), but at least it will protect you
372     from most attacks.
373 root 1.182
374 root 1.8 =item read_size => <bytes>
375 elmex 1.2
376 root 1.221 The initial read block size, the number of bytes this module will try
377     to read during each loop iteration. Each handle object will consume
378     at least this amount of memory for the read buffer as well, so when
379     handling many connections watch out for memory requirements). See also
380     C<max_read_size>. Default: C<2048>.
381 root 1.203
382     =item max_read_size => <bytes>
383    
384     The maximum read buffer size used by the dynamic adjustment
385     algorithm: Each time AnyEvent::Handle can read C<read_size> bytes in
386     one go it will double C<read_size> up to the maximum given by this
387     option. Default: C<131072> or C<read_size>, whichever is higher.
388 root 1.8
389     =item low_water_mark => <bytes>
390    
391 root 1.198 Sets the number of bytes (default: C<0>) that make up an "empty" write
392     buffer: If the buffer reaches this size or gets even samller it is
393 root 1.8 considered empty.
394 elmex 1.2
395 root 1.88 Sometimes it can be beneficial (for performance reasons) to add data to
396     the write buffer before it is fully drained, but this is a rare case, as
397     the operating system kernel usually buffers data as well, so the default
398     is good in almost all cases.
399    
400 root 1.62 =item linger => <seconds>
401    
402 root 1.198 If this is non-zero (default: C<3600>), the destructor of the
403 root 1.88 AnyEvent::Handle object will check whether there is still outstanding
404     write data and will install a watcher that will write this data to the
405     socket. No errors will be reported (this mostly matches how the operating
406     system treats outstanding data at socket close time).
407 root 1.62
408 root 1.88 This will not work for partial TLS data that could not be encoded
409 root 1.93 yet. This data will be lost. Calling the C<stoptls> method in time might
410     help.
411 root 1.62
412 root 1.133 =item peername => $string
413    
414 root 1.134 A string used to identify the remote site - usually the DNS hostname
415     (I<not> IDN!) used to create the connection, rarely the IP address.
416 root 1.131
417 root 1.133 Apart from being useful in error messages, this string is also used in TLS
418 root 1.144 peername verification (see C<verify_peername> in L<AnyEvent::TLS>). This
419 root 1.198 verification will be skipped when C<peername> is not specified or is
420 root 1.144 C<undef>.
421 root 1.131
422 root 1.19 =item tls => "accept" | "connect" | Net::SSLeay::SSL object
423    
424 root 1.85 When this parameter is given, it enables TLS (SSL) mode, that means
425 root 1.186 AnyEvent will start a TLS handshake as soon as the connection has been
426 root 1.88 established and will transparently encrypt/decrypt data afterwards.
427 root 1.19
428 root 1.133 All TLS protocol errors will be signalled as C<EPROTO>, with an
429     appropriate error message.
430    
431 root 1.26 TLS mode requires Net::SSLeay to be installed (it will be loaded
432 root 1.88 automatically when you try to create a TLS handle): this module doesn't
433     have a dependency on that module, so if your module requires it, you have
434 root 1.234 to add the dependency yourself. If Net::SSLeay cannot be loaded or is too
435     old, you get an C<EPROTO> error.
436 root 1.26
437 root 1.85 Unlike TCP, TLS has a server and client side: for the TLS server side, use
438     C<accept>, and for the TLS client side of a connection, use C<connect>
439     mode.
440 root 1.19
441     You can also provide your own TLS connection object, but you have
442     to make sure that you call either C<Net::SSLeay::set_connect_state>
443     or C<Net::SSLeay::set_accept_state> on it before you pass it to
444 root 1.131 AnyEvent::Handle. Also, this module will take ownership of this connection
445     object.
446    
447     At some future point, AnyEvent::Handle might switch to another TLS
448     implementation, then the option to use your own session object will go
449     away.
450 root 1.19
451 root 1.109 B<IMPORTANT:> since Net::SSLeay "objects" are really only integers,
452     passing in the wrong integer will lead to certain crash. This most often
453     happens when one uses a stylish C<< tls => 1 >> and is surprised about the
454     segmentation fault.
455    
456 root 1.198 Use the C<< ->starttls >> method if you need to start TLS negotiation later.
457 root 1.26
458 root 1.131 =item tls_ctx => $anyevent_tls
459 root 1.19
460 root 1.131 Use the given C<AnyEvent::TLS> object to create the new TLS connection
461 root 1.207 (unless a connection object was specified directly). If this
462     parameter is missing (or C<undef>), then AnyEvent::Handle will use
463     C<AnyEvent::Handle::TLS_CTX>.
464 root 1.19
465 root 1.131 Instead of an object, you can also specify a hash reference with C<< key
466     => value >> pairs. Those will be passed to L<AnyEvent::TLS> to create a
467     new TLS context object.
468    
469 root 1.143 =item on_starttls => $cb->($handle, $success[, $error_message])
470 root 1.142
471     This callback will be invoked when the TLS/SSL handshake has finished. If
472     C<$success> is true, then the TLS handshake succeeded, otherwise it failed
473     (C<on_stoptls> will not be called in this case).
474    
475     The session in C<< $handle->{tls} >> can still be examined in this
476     callback, even when the handshake was not successful.
477    
478 root 1.143 TLS handshake failures will not cause C<on_error> to be invoked when this
479     callback is in effect, instead, the error message will be passed to C<on_starttls>.
480    
481     Without this callback, handshake failures lead to C<on_error> being
482 root 1.198 called as usual.
483 root 1.143
484 root 1.198 Note that you cannot just call C<starttls> again in this callback. If you
485 root 1.143 need to do that, start an zero-second timer instead whose callback can
486     then call C<< ->starttls >> again.
487    
488 root 1.142 =item on_stoptls => $cb->($handle)
489    
490     When a SSLv3/TLS shutdown/close notify/EOF is detected and this callback is
491     set, then it will be invoked after freeing the TLS session. If it is not,
492     then a TLS shutdown condition will be treated like a normal EOF condition
493     on the handle.
494    
495     The session in C<< $handle->{tls} >> can still be examined in this
496     callback.
497    
498     This callback will only be called on TLS shutdowns, not when the
499     underlying handle signals EOF.
500    
501 root 1.238 =item json => L<JSON> or L<JSON::XS> object
502 root 1.40
503     This is the json coder object used by the C<json> read and write types.
504    
505 root 1.41 If you don't supply it, then AnyEvent::Handle will create and use a
506 root 1.86 suitable one (on demand), which will write and expect UTF-8 encoded JSON
507     texts.
508 root 1.40
509 root 1.238 Note that you are responsible to depend on the L<JSON> module if you want
510     to use this functionality, as AnyEvent does not have a dependency on it
511     itself.
512    
513     =item cbor => L<CBOR::XS> object
514    
515     This is the cbor coder object used by the C<cbor> read and write types.
516    
517     If you don't supply it, then AnyEvent::Handle will create and use a
518     suitable one (on demand), which will write CBOR without using extensions,
519     if possible. texts.
520    
521     Note that you are responsible to depend on the L<CBOR::XS> module if you
522     want to use this functionality, as AnyEvent does not have a dependency on
523     it itself.
524 root 1.40
525 elmex 1.1 =back
526    
527     =cut
528    
529     sub new {
530 root 1.8 my $class = shift;
531     my $self = bless { @_ }, $class;
532    
533 root 1.159 if ($self->{fh}) {
534     $self->_start;
535     return unless $self->{fh}; # could be gone by now
536    
537     } elsif ($self->{connect}) {
538     require AnyEvent::Socket;
539    
540     $self->{peername} = $self->{connect}[0]
541     unless exists $self->{peername};
542    
543     $self->{_skip_drain_rbuf} = 1;
544    
545     {
546     Scalar::Util::weaken (my $self = $self);
547    
548     $self->{_connect} =
549     AnyEvent::Socket::tcp_connect (
550     $self->{connect}[0],
551     $self->{connect}[1],
552     sub {
553     my ($fh, $host, $port, $retry) = @_;
554    
555 root 1.206 delete $self->{_connect}; # no longer needed
556 root 1.205
557 root 1.159 if ($fh) {
558     $self->{fh} = $fh;
559    
560     delete $self->{_skip_drain_rbuf};
561     $self->_start;
562    
563     $self->{on_connect}
564     and $self->{on_connect}($self, $host, $port, sub {
565 root 1.178 delete @$self{qw(fh _tw _rtw _wtw _ww _rw _eof _queue rbuf _wbuf tls _tls_rbuf _tls_wbuf)};
566 root 1.159 $self->{_skip_drain_rbuf} = 1;
567     &$retry;
568     });
569    
570     } else {
571     if ($self->{on_connect_error}) {
572     $self->{on_connect_error}($self, "$!");
573 root 1.217 $self->destroy if $self;
574 root 1.159 } else {
575 root 1.161 $self->_error ($!, 1);
576 root 1.159 }
577     }
578     },
579     sub {
580     local $self->{fh} = $_[0];
581    
582 root 1.161 $self->{on_prepare}
583 root 1.210 ? $self->{on_prepare}->($self)
584 root 1.161 : ()
585 root 1.159 }
586     );
587     }
588    
589     } else {
590     Carp::croak "AnyEvent::Handle: either an existing fh or the connect parameter must be specified";
591     }
592    
593     $self
594     }
595    
596     sub _start {
597     my ($self) = @_;
598 root 1.8
599 root 1.194 # too many clueless people try to use udp and similar sockets
600     # with AnyEvent::Handle, do them a favour.
601 root 1.195 my $type = getsockopt $self->{fh}, Socket::SOL_SOCKET (), Socket::SO_TYPE ();
602     Carp::croak "AnyEvent::Handle: only stream sockets supported, anything else will NOT work!"
603 root 1.196 if Socket::SOCK_STREAM () != (unpack "I", $type) && defined $type;
604 root 1.194
605 root 1.8 AnyEvent::Util::fh_nonblocking $self->{fh}, 1;
606 elmex 1.1
607 root 1.176 $self->{_activity} =
608     $self->{_ractivity} =
609     $self->{_wactivity} = AE::now;
610    
611 root 1.203 $self->{read_size} ||= 2048;
612     $self->{max_read_size} = $self->{read_size}
613     if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
614    
615 root 1.182 $self->timeout (delete $self->{timeout} ) if $self->{timeout};
616     $self->rtimeout (delete $self->{rtimeout} ) if $self->{rtimeout};
617     $self->wtimeout (delete $self->{wtimeout} ) if $self->{wtimeout};
618    
619 root 1.183 $self->no_delay (delete $self->{no_delay} ) if exists $self->{no_delay} && $self->{no_delay};
620     $self->keepalive (delete $self->{keepalive}) if exists $self->{keepalive} && $self->{keepalive};
621    
622     $self->oobinline (exists $self->{oobinline} ? delete $self->{oobinline} : 1);
623 root 1.131
624 root 1.182 $self->starttls (delete $self->{tls}, delete $self->{tls_ctx})
625 root 1.94 if $self->{tls};
626 root 1.19
627 root 1.199 $self->on_drain (delete $self->{on_drain} ) if $self->{on_drain};
628 root 1.10
629 root 1.66 $self->start_read
630 root 1.159 if $self->{on_read} || @{ $self->{_queue} };
631 root 1.160
632     $self->_drain_wbuf;
633 root 1.8 }
634 elmex 1.2
635 root 1.52 sub _error {
636 root 1.133 my ($self, $errno, $fatal, $message) = @_;
637 root 1.8
638 root 1.52 $! = $errno;
639 root 1.133 $message ||= "$!";
640 root 1.37
641 root 1.52 if ($self->{on_error}) {
642 root 1.133 $self->{on_error}($self, $fatal, $message);
643 root 1.151 $self->destroy if $fatal;
644 root 1.187 } elsif ($self->{fh} || $self->{connect}) {
645 root 1.149 $self->destroy;
646 root 1.133 Carp::croak "AnyEvent::Handle uncaught error: $message";
647 root 1.52 }
648 elmex 1.1 }
649    
650 root 1.8 =item $fh = $handle->fh
651 elmex 1.1
652 root 1.88 This method returns the file handle used to create the L<AnyEvent::Handle> object.
653 elmex 1.1
654     =cut
655    
656 root 1.38 sub fh { $_[0]{fh} }
657 elmex 1.1
658 root 1.8 =item $handle->on_error ($cb)
659 elmex 1.1
660 root 1.8 Replace the current C<on_error> callback (see the C<on_error> constructor argument).
661 elmex 1.1
662 root 1.8 =cut
663    
664     sub on_error {
665     $_[0]{on_error} = $_[1];
666     }
667    
668     =item $handle->on_eof ($cb)
669    
670     Replace the current C<on_eof> callback (see the C<on_eof> constructor argument).
671 elmex 1.1
672     =cut
673    
674 root 1.8 sub on_eof {
675     $_[0]{on_eof} = $_[1];
676     }
677    
678 root 1.43 =item $handle->on_timeout ($cb)
679    
680 root 1.176 =item $handle->on_rtimeout ($cb)
681    
682     =item $handle->on_wtimeout ($cb)
683    
684     Replace the current C<on_timeout>, C<on_rtimeout> or C<on_wtimeout>
685     callback, or disables the callback (but not the timeout) if C<$cb> =
686     C<undef>. See the C<timeout> constructor argument and method.
687 root 1.43
688     =cut
689    
690 root 1.176 # see below
691 root 1.43
692 root 1.70 =item $handle->autocork ($boolean)
693    
694     Enables or disables the current autocork behaviour (see C<autocork>
695 root 1.105 constructor argument). Changes will only take effect on the next write.
696 root 1.70
697     =cut
698    
699 root 1.105 sub autocork {
700     $_[0]{autocork} = $_[1];
701     }
702    
703 root 1.70 =item $handle->no_delay ($boolean)
704    
705     Enables or disables the C<no_delay> setting (see constructor argument of
706     the same name for details).
707    
708     =cut
709    
710     sub no_delay {
711     $_[0]{no_delay} = $_[1];
712    
713 root 1.200 setsockopt $_[0]{fh}, Socket::IPPROTO_TCP (), Socket::TCP_NODELAY (), int $_[1]
714     if $_[0]{fh};
715 root 1.182 }
716    
717     =item $handle->keepalive ($boolean)
718    
719     Enables or disables the C<keepalive> setting (see constructor argument of
720     the same name for details).
721    
722     =cut
723    
724     sub keepalive {
725     $_[0]{keepalive} = $_[1];
726    
727     eval {
728     local $SIG{__DIE__};
729     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_KEEPALIVE (), int $_[1]
730     if $_[0]{fh};
731     };
732     }
733    
734     =item $handle->oobinline ($boolean)
735    
736     Enables or disables the C<oobinline> setting (see constructor argument of
737     the same name for details).
738    
739     =cut
740    
741     sub oobinline {
742     $_[0]{oobinline} = $_[1];
743    
744     eval {
745     local $SIG{__DIE__};
746     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_OOBINLINE (), int $_[1]
747     if $_[0]{fh};
748     };
749     }
750    
751     =item $handle->keepalive ($boolean)
752    
753     Enables or disables the C<keepalive> setting (see constructor argument of
754     the same name for details).
755    
756     =cut
757    
758     sub keepalive {
759     $_[0]{keepalive} = $_[1];
760    
761     eval {
762     local $SIG{__DIE__};
763     setsockopt $_[0]{fh}, Socket::SOL_SOCKET (), Socket::SO_KEEPALIVE (), int $_[1]
764 root 1.159 if $_[0]{fh};
765 root 1.70 };
766     }
767    
768 root 1.142 =item $handle->on_starttls ($cb)
769    
770     Replace the current C<on_starttls> callback (see the C<on_starttls> constructor argument).
771    
772     =cut
773    
774     sub on_starttls {
775     $_[0]{on_starttls} = $_[1];
776     }
777    
778     =item $handle->on_stoptls ($cb)
779    
780     Replace the current C<on_stoptls> callback (see the C<on_stoptls> constructor argument).
781    
782     =cut
783    
784 root 1.189 sub on_stoptls {
785 root 1.142 $_[0]{on_stoptls} = $_[1];
786     }
787    
788 root 1.168 =item $handle->rbuf_max ($max_octets)
789    
790     Configures the C<rbuf_max> setting (C<undef> disables it).
791    
792 root 1.209 =item $handle->wbuf_max ($max_octets)
793    
794     Configures the C<wbuf_max> setting (C<undef> disables it).
795    
796 root 1.168 =cut
797    
798     sub rbuf_max {
799     $_[0]{rbuf_max} = $_[1];
800     }
801    
802 root 1.215 sub wbuf_max {
803 root 1.209 $_[0]{wbuf_max} = $_[1];
804     }
805    
806 root 1.43 #############################################################################
807    
808     =item $handle->timeout ($seconds)
809    
810 root 1.176 =item $handle->rtimeout ($seconds)
811    
812     =item $handle->wtimeout ($seconds)
813    
814 root 1.43 Configures (or disables) the inactivity timeout.
815    
816 root 1.218 The timeout will be checked instantly, so this method might destroy the
817     handle before it returns.
818    
819 root 1.176 =item $handle->timeout_reset
820    
821     =item $handle->rtimeout_reset
822    
823     =item $handle->wtimeout_reset
824    
825     Reset the activity timeout, as if data was received or sent.
826    
827     These methods are cheap to call.
828    
829 root 1.43 =cut
830    
831 root 1.176 for my $dir ("", "r", "w") {
832     my $timeout = "${dir}timeout";
833     my $tw = "_${dir}tw";
834     my $on_timeout = "on_${dir}timeout";
835     my $activity = "_${dir}activity";
836     my $cb;
837    
838     *$on_timeout = sub {
839     $_[0]{$on_timeout} = $_[1];
840     };
841    
842     *$timeout = sub {
843     my ($self, $new_value) = @_;
844 root 1.43
845 root 1.201 $new_value >= 0
846     or Carp::croak "AnyEvent::Handle->$timeout called with negative timeout ($new_value), caught";
847    
848 root 1.176 $self->{$timeout} = $new_value;
849     delete $self->{$tw}; &$cb;
850     };
851 root 1.43
852 root 1.176 *{"${dir}timeout_reset"} = sub {
853     $_[0]{$activity} = AE::now;
854     };
855 root 1.43
856 root 1.176 # main workhorse:
857     # reset the timeout watcher, as neccessary
858     # also check for time-outs
859     $cb = sub {
860     my ($self) = @_;
861    
862     if ($self->{$timeout} && $self->{fh}) {
863     my $NOW = AE::now;
864    
865     # when would the timeout trigger?
866     my $after = $self->{$activity} + $self->{$timeout} - $NOW;
867    
868     # now or in the past already?
869     if ($after <= 0) {
870     $self->{$activity} = $NOW;
871 root 1.43
872 root 1.176 if ($self->{$on_timeout}) {
873     $self->{$on_timeout}($self);
874     } else {
875     $self->_error (Errno::ETIMEDOUT);
876     }
877 root 1.43
878 root 1.176 # callback could have changed timeout value, optimise
879     return unless $self->{$timeout};
880 root 1.43
881 root 1.176 # calculate new after
882     $after = $self->{$timeout};
883 root 1.43 }
884    
885 root 1.176 Scalar::Util::weaken $self;
886     return unless $self; # ->error could have destroyed $self
887 root 1.43
888 root 1.176 $self->{$tw} ||= AE::timer $after, 0, sub {
889     delete $self->{$tw};
890     $cb->($self);
891     };
892     } else {
893     delete $self->{$tw};
894 root 1.43 }
895     }
896     }
897    
898 root 1.9 #############################################################################
899    
900     =back
901    
902     =head2 WRITE QUEUE
903    
904     AnyEvent::Handle manages two queues per handle, one for writing and one
905     for reading.
906    
907     The write queue is very simple: you can add data to its end, and
908     AnyEvent::Handle will automatically try to get rid of it for you.
909    
910 elmex 1.20 When data could be written and the write buffer is shorter then the low
911 root 1.229 water mark, the C<on_drain> callback will be invoked once.
912 root 1.9
913     =over 4
914    
915 root 1.8 =item $handle->on_drain ($cb)
916    
917     Sets the C<on_drain> callback or clears it (see the description of
918     C<on_drain> in the constructor).
919    
920 root 1.193 This method may invoke callbacks (and therefore the handle might be
921     destroyed after it returns).
922    
923 root 1.8 =cut
924    
925     sub on_drain {
926 elmex 1.1 my ($self, $cb) = @_;
927    
928 root 1.8 $self->{on_drain} = $cb;
929    
930     $cb->($self)
931 root 1.93 if $cb && $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf});
932 root 1.8 }
933    
934     =item $handle->push_write ($data)
935    
936 root 1.209 Queues the given scalar to be written. You can push as much data as
937     you want (only limited by the available memory and C<wbuf_max>), as
938     C<AnyEvent::Handle> buffers it independently of the kernel.
939 root 1.8
940 root 1.193 This method may invoke callbacks (and therefore the handle might be
941     destroyed after it returns).
942    
943 root 1.8 =cut
944    
945 root 1.17 sub _drain_wbuf {
946     my ($self) = @_;
947 root 1.8
948 root 1.38 if (!$self->{_ww} && length $self->{wbuf}) {
949 root 1.35
950 root 1.8 Scalar::Util::weaken $self;
951 root 1.35
952 root 1.8 my $cb = sub {
953     my $len = syswrite $self->{fh}, $self->{wbuf};
954    
955 root 1.146 if (defined $len) {
956 root 1.8 substr $self->{wbuf}, 0, $len, "";
957    
958 root 1.176 $self->{_activity} = $self->{_wactivity} = AE::now;
959 root 1.43
960 root 1.8 $self->{on_drain}($self)
961 root 1.93 if $self->{low_water_mark} >= (length $self->{wbuf}) + (length $self->{_tls_wbuf})
962 root 1.8 && $self->{on_drain};
963    
964 root 1.38 delete $self->{_ww} unless length $self->{wbuf};
965 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
966 root 1.52 $self->_error ($!, 1);
967 elmex 1.1 }
968 root 1.8 };
969    
970 root 1.35 # try to write data immediately
971 root 1.70 $cb->() unless $self->{autocork};
972 root 1.8
973 root 1.35 # if still data left in wbuf, we need to poll
974 root 1.175 $self->{_ww} = AE::io $self->{fh}, 1, $cb
975 root 1.35 if length $self->{wbuf};
976 root 1.209
977     if (
978     defined $self->{wbuf_max}
979     && $self->{wbuf_max} < length $self->{wbuf}
980     ) {
981     $self->_error (Errno::ENOSPC, 1), return;
982     }
983 root 1.8 };
984     }
985    
986 root 1.30 our %WH;
987    
988 root 1.185 # deprecated
989 root 1.30 sub register_write_type($$) {
990     $WH{$_[0]} = $_[1];
991     }
992    
993 root 1.17 sub push_write {
994     my $self = shift;
995    
996 root 1.29 if (@_ > 1) {
997     my $type = shift;
998    
999 root 1.185 @_ = ($WH{$type} ||= _load_func "$type\::anyevent_write_type"
1000     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_write")
1001 root 1.29 ->($self, @_);
1002     }
1003    
1004 root 1.190 # we downgrade here to avoid hard-to-track-down bugs,
1005     # and diagnose the problem earlier and better.
1006    
1007 root 1.93 if ($self->{tls}) {
1008 root 1.190 utf8::downgrade $self->{_tls_wbuf} .= $_[0];
1009 root 1.160 &_dotls ($self) if $self->{fh};
1010 root 1.17 } else {
1011 root 1.190 utf8::downgrade $self->{wbuf} .= $_[0];
1012 root 1.159 $self->_drain_wbuf if $self->{fh};
1013 root 1.17 }
1014     }
1015    
1016 root 1.29 =item $handle->push_write (type => @args)
1017    
1018 root 1.185 Instead of formatting your data yourself, you can also let this module
1019     do the job by specifying a type and type-specific arguments. You
1020     can also specify the (fully qualified) name of a package, in which
1021     case AnyEvent tries to load the package and then expects to find the
1022 root 1.197 C<anyevent_write_type> function inside (see "custom write types", below).
1023 root 1.29
1024 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
1025     drop by and tell us):
1026 root 1.29
1027     =over 4
1028    
1029     =item netstring => $string
1030    
1031     Formats the given value as netstring
1032     (http://cr.yp.to/proto/netstrings.txt, this is not a recommendation to use them).
1033    
1034     =cut
1035    
1036     register_write_type netstring => sub {
1037     my ($self, $string) = @_;
1038    
1039 root 1.96 (length $string) . ":$string,"
1040 root 1.29 };
1041    
1042 root 1.61 =item packstring => $format, $data
1043    
1044     An octet string prefixed with an encoded length. The encoding C<$format>
1045     uses the same format as a Perl C<pack> format, but must specify a single
1046     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
1047     optional C<!>, C<< < >> or C<< > >> modifier).
1048    
1049     =cut
1050    
1051     register_write_type packstring => sub {
1052     my ($self, $format, $string) = @_;
1053    
1054 root 1.65 pack "$format/a*", $string
1055 root 1.61 };
1056    
1057 root 1.39 =item json => $array_or_hashref
1058    
1059 root 1.40 Encodes the given hash or array reference into a JSON object. Unless you
1060     provide your own JSON object, this means it will be encoded to JSON text
1061     in UTF-8.
1062    
1063     JSON objects (and arrays) are self-delimiting, so you can write JSON at
1064     one end of a handle and read them at the other end without using any
1065     additional framing.
1066    
1067 root 1.41 The generated JSON text is guaranteed not to contain any newlines: While
1068     this module doesn't need delimiters after or between JSON texts to be
1069     able to read them, many other languages depend on that.
1070    
1071 root 1.238 A simple RPC protocol that interoperates easily with other languages is
1072     to send JSON arrays (or objects, although arrays are usually the better
1073     choice as they mimic how function argument passing works) and a newline
1074     after each JSON text:
1075 root 1.41
1076     $handle->push_write (json => ["method", "arg1", "arg2"]); # whatever
1077     $handle->push_write ("\012");
1078    
1079     An AnyEvent::Handle receiver would simply use the C<json> read type and
1080     rely on the fact that the newline will be skipped as leading whitespace:
1081    
1082     $handle->push_read (json => sub { my $array = $_[1]; ... });
1083    
1084     Other languages could read single lines terminated by a newline and pass
1085     this line into their JSON decoder of choice.
1086    
1087 root 1.238 =item cbor => $perl_scalar
1088    
1089     Encodes the given scalar into a CBOR value. Unless you provide your own
1090     L<CBOR::XS> object, this means it will be encoded to a CBOR string not
1091     using any extensions, if possible.
1092    
1093     CBOR values are self-delimiting, so you can write CBOR at one end of
1094     a handle and read them at the other end without using any additional
1095     framing.
1096    
1097     A simple nd very very fast RPC protocol that interoperates with
1098     other languages is to send CBOR and receive CBOR values (arrays are
1099     recommended):
1100    
1101     $handle->push_write (cbor => ["method", "arg1", "arg2"]); # whatever
1102    
1103     An AnyEvent::Handle receiver would simply use the C<cbor> read type:
1104    
1105     $handle->push_read (cbor => sub { my $array = $_[1]; ... });
1106    
1107 root 1.40 =cut
1108    
1109 root 1.179 sub json_coder() {
1110     eval { require JSON::XS; JSON::XS->new->utf8 }
1111     || do { require JSON; JSON->new->utf8 }
1112     }
1113    
1114 root 1.40 register_write_type json => sub {
1115     my ($self, $ref) = @_;
1116    
1117 root 1.238 ($self->{json} ||= json_coder)
1118     ->encode ($ref)
1119     };
1120    
1121     sub cbor_coder() {
1122     require CBOR::XS;
1123     CBOR::XS->new
1124     }
1125    
1126     register_write_type cbor => sub {
1127     my ($self, $scalar) = @_;
1128 root 1.40
1129 root 1.238 ($self->{cbor} ||= cbor_coder)
1130     ->encode ($scalar)
1131 root 1.40 };
1132    
1133 root 1.63 =item storable => $reference
1134    
1135     Freezes the given reference using L<Storable> and writes it to the
1136     handle. Uses the C<nfreeze> format.
1137    
1138     =cut
1139    
1140     register_write_type storable => sub {
1141     my ($self, $ref) = @_;
1142    
1143 root 1.224 require Storable unless $Storable::VERSION;
1144 root 1.63
1145 root 1.65 pack "w/a*", Storable::nfreeze ($ref)
1146 root 1.63 };
1147    
1148 root 1.53 =back
1149    
1150 root 1.133 =item $handle->push_shutdown
1151    
1152     Sometimes you know you want to close the socket after writing your data
1153     before it was actually written. One way to do that is to replace your
1154 root 1.142 C<on_drain> handler by a callback that shuts down the socket (and set
1155     C<low_water_mark> to C<0>). This method is a shorthand for just that, and
1156     replaces the C<on_drain> callback with:
1157 root 1.133
1158 root 1.214 sub { shutdown $_[0]{fh}, 1 }
1159 root 1.133
1160     This simply shuts down the write side and signals an EOF condition to the
1161     the peer.
1162    
1163     You can rely on the normal read queue and C<on_eof> handling
1164     afterwards. This is the cleanest way to close a connection.
1165    
1166 root 1.193 This method may invoke callbacks (and therefore the handle might be
1167     destroyed after it returns).
1168    
1169 root 1.133 =cut
1170    
1171     sub push_shutdown {
1172 root 1.142 my ($self) = @_;
1173    
1174     delete $self->{low_water_mark};
1175     $self->on_drain (sub { shutdown $_[0]{fh}, 1 });
1176 root 1.133 }
1177    
1178 root 1.185 =item custom write types - Package::anyevent_write_type $handle, @args
1179    
1180     Instead of one of the predefined types, you can also specify the name of
1181     a package. AnyEvent will try to load the package and then expects to find
1182     a function named C<anyevent_write_type> inside. If it isn't found, it
1183     progressively tries to load the parent package until it either finds the
1184     function (good) or runs out of packages (bad).
1185    
1186     Whenever the given C<type> is used, C<push_write> will the function with
1187     the handle object and the remaining arguments.
1188    
1189     The function is supposed to return a single octet string that will be
1190 root 1.223 appended to the write buffer, so you can mentally treat this function as a
1191 root 1.185 "arguments to on-the-wire-format" converter.
1192 root 1.30
1193 root 1.185 Example: implement a custom write type C<join> that joins the remaining
1194     arguments using the first one.
1195 root 1.29
1196 root 1.185 $handle->push_write (My::Type => " ", 1,2,3);
1197 root 1.29
1198 root 1.185 # uses the following package, which can be defined in the "My::Type" or in
1199     # the "My" modules to be auto-loaded, or just about anywhere when the
1200     # My::Type::anyevent_write_type is defined before invoking it.
1201    
1202     package My::Type;
1203    
1204     sub anyevent_write_type {
1205     my ($handle, $delim, @args) = @_;
1206    
1207     join $delim, @args
1208     }
1209 root 1.29
1210 root 1.30 =cut
1211 root 1.29
1212 root 1.8 #############################################################################
1213    
1214 root 1.9 =back
1215    
1216     =head2 READ QUEUE
1217    
1218     AnyEvent::Handle manages two queues per handle, one for writing and one
1219     for reading.
1220    
1221     The read queue is more complex than the write queue. It can be used in two
1222     ways, the "simple" way, using only C<on_read> and the "complex" way, using
1223     a queue.
1224    
1225     In the simple case, you just install an C<on_read> callback and whenever
1226     new data arrives, it will be called. You can then remove some data (if
1227 root 1.197 enough is there) from the read buffer (C<< $handle->rbuf >>). Or you can
1228 root 1.69 leave the data there if you want to accumulate more (e.g. when only a
1229 root 1.197 partial message has been received so far), or change the read queue with
1230     e.g. C<push_read>.
1231 root 1.9
1232     In the more complex case, you want to queue multiple callbacks. In this
1233     case, AnyEvent::Handle will call the first queued callback each time new
1234 root 1.198 data arrives (also the first time it is queued) and remove it when it has
1235 root 1.61 done its job (see C<push_read>, below).
1236 root 1.9
1237     This way you can, for example, push three line-reads, followed by reading
1238     a chunk of data, and AnyEvent::Handle will execute them in order.
1239    
1240     Example 1: EPP protocol parser. EPP sends 4 byte length info, followed by
1241     the specified number of bytes which give an XML datagram.
1242    
1243     # in the default state, expect some header bytes
1244     $handle->on_read (sub {
1245     # some data is here, now queue the length-header-read (4 octets)
1246 root 1.52 shift->unshift_read (chunk => 4, sub {
1247 root 1.9 # header arrived, decode
1248     my $len = unpack "N", $_[1];
1249    
1250     # now read the payload
1251 root 1.52 shift->unshift_read (chunk => $len, sub {
1252 root 1.9 my $xml = $_[1];
1253     # handle xml
1254     });
1255     });
1256     });
1257    
1258 root 1.69 Example 2: Implement a client for a protocol that replies either with "OK"
1259     and another line or "ERROR" for the first request that is sent, and 64
1260     bytes for the second request. Due to the availability of a queue, we can
1261     just pipeline sending both requests and manipulate the queue as necessary
1262     in the callbacks.
1263    
1264     When the first callback is called and sees an "OK" response, it will
1265     C<unshift> another line-read. This line-read will be queued I<before> the
1266     64-byte chunk callback.
1267 root 1.9
1268 root 1.69 # request one, returns either "OK + extra line" or "ERROR"
1269 root 1.9 $handle->push_write ("request 1\015\012");
1270    
1271     # we expect "ERROR" or "OK" as response, so push a line read
1272 root 1.52 $handle->push_read (line => sub {
1273 root 1.9 # if we got an "OK", we have to _prepend_ another line,
1274     # so it will be read before the second request reads its 64 bytes
1275     # which are already in the queue when this callback is called
1276     # we don't do this in case we got an error
1277     if ($_[1] eq "OK") {
1278 root 1.52 $_[0]->unshift_read (line => sub {
1279 root 1.9 my $response = $_[1];
1280     ...
1281     });
1282     }
1283     });
1284    
1285 root 1.69 # request two, simply returns 64 octets
1286 root 1.9 $handle->push_write ("request 2\015\012");
1287    
1288     # simply read 64 bytes, always
1289 root 1.52 $handle->push_read (chunk => 64, sub {
1290 root 1.9 my $response = $_[1];
1291     ...
1292     });
1293    
1294     =over 4
1295    
1296 root 1.10 =cut
1297    
1298 root 1.8 sub _drain_rbuf {
1299     my ($self) = @_;
1300 elmex 1.1
1301 root 1.159 # avoid recursion
1302 root 1.167 return if $self->{_skip_drain_rbuf};
1303 root 1.159 local $self->{_skip_drain_rbuf} = 1;
1304 root 1.59
1305     while () {
1306 root 1.117 # we need to use a separate tls read buffer, as we must not receive data while
1307     # we are draining the buffer, and this can only happen with TLS.
1308 root 1.163 $self->{rbuf} .= delete $self->{_tls_rbuf}
1309     if exists $self->{_tls_rbuf};
1310 root 1.115
1311 root 1.59 my $len = length $self->{rbuf};
1312 elmex 1.1
1313 root 1.38 if (my $cb = shift @{ $self->{_queue} }) {
1314 root 1.29 unless ($cb->($self)) {
1315 root 1.163 # no progress can be made
1316     # (not enough data and no data forthcoming)
1317     $self->_error (Errno::EPIPE, 1), return
1318     if $self->{_eof};
1319 root 1.10
1320 root 1.38 unshift @{ $self->{_queue} }, $cb;
1321 root 1.55 last;
1322 root 1.8 }
1323     } elsif ($self->{on_read}) {
1324 root 1.61 last unless $len;
1325    
1326 root 1.8 $self->{on_read}($self);
1327    
1328     if (
1329 root 1.55 $len == length $self->{rbuf} # if no data has been consumed
1330     && !@{ $self->{_queue} } # and the queue is still empty
1331     && $self->{on_read} # but we still have on_read
1332 root 1.8 ) {
1333 root 1.55 # no further data will arrive
1334     # so no progress can be made
1335 root 1.150 $self->_error (Errno::EPIPE, 1), return
1336 root 1.55 if $self->{_eof};
1337    
1338     last; # more data might arrive
1339 elmex 1.1 }
1340 root 1.8 } else {
1341     # read side becomes idle
1342 root 1.93 delete $self->{_rw} unless $self->{tls};
1343 root 1.55 last;
1344 root 1.8 }
1345     }
1346    
1347 root 1.80 if ($self->{_eof}) {
1348 root 1.163 $self->{on_eof}
1349     ? $self->{on_eof}($self)
1350     : $self->_error (0, 1, "Unexpected end-of-file");
1351    
1352     return;
1353 root 1.80 }
1354 root 1.55
1355 root 1.169 if (
1356     defined $self->{rbuf_max}
1357     && $self->{rbuf_max} < length $self->{rbuf}
1358     ) {
1359     $self->_error (Errno::ENOSPC, 1), return;
1360     }
1361    
1362 root 1.55 # may need to restart read watcher
1363     unless ($self->{_rw}) {
1364     $self->start_read
1365     if $self->{on_read} || @{ $self->{_queue} };
1366     }
1367 elmex 1.1 }
1368    
1369 root 1.8 =item $handle->on_read ($cb)
1370 elmex 1.1
1371 root 1.8 This replaces the currently set C<on_read> callback, or clears it (when
1372     the new callback is C<undef>). See the description of C<on_read> in the
1373     constructor.
1374 elmex 1.1
1375 root 1.193 This method may invoke callbacks (and therefore the handle might be
1376     destroyed after it returns).
1377    
1378 root 1.8 =cut
1379    
1380     sub on_read {
1381     my ($self, $cb) = @_;
1382 elmex 1.1
1383 root 1.8 $self->{on_read} = $cb;
1384 root 1.159 $self->_drain_rbuf if $cb;
1385 elmex 1.1 }
1386    
1387 root 1.8 =item $handle->rbuf
1388    
1389 root 1.199 Returns the read buffer (as a modifiable lvalue). You can also access the
1390     read buffer directly as the C<< ->{rbuf} >> member, if you want (this is
1391     much faster, and no less clean).
1392    
1393     The only operation allowed on the read buffer (apart from looking at it)
1394     is removing data from its beginning. Otherwise modifying or appending to
1395     it is not allowed and will lead to hard-to-track-down bugs.
1396    
1397     NOTE: The read buffer should only be used or modified in the C<on_read>
1398     callback or when C<push_read> or C<unshift_read> are used with a single
1399     callback (i.e. untyped). Typed C<push_read> and C<unshift_read> methods
1400     will manage the read buffer on their own.
1401 elmex 1.1
1402     =cut
1403    
1404 elmex 1.2 sub rbuf : lvalue {
1405 root 1.8 $_[0]{rbuf}
1406 elmex 1.2 }
1407 elmex 1.1
1408 root 1.8 =item $handle->push_read ($cb)
1409    
1410     =item $handle->unshift_read ($cb)
1411    
1412     Append the given callback to the end of the queue (C<push_read>) or
1413     prepend it (C<unshift_read>).
1414    
1415     The callback is called each time some additional read data arrives.
1416 elmex 1.1
1417 elmex 1.20 It must check whether enough data is in the read buffer already.
1418 elmex 1.1
1419 root 1.8 If not enough data is available, it must return the empty list or a false
1420     value, in which case it will be called repeatedly until enough data is
1421     available (or an error condition is detected).
1422    
1423     If enough data was available, then the callback must remove all data it is
1424     interested in (which can be none at all) and return a true value. After returning
1425     true, it will be removed from the queue.
1426 elmex 1.1
1427 root 1.193 These methods may invoke callbacks (and therefore the handle might be
1428     destroyed after it returns).
1429    
1430 elmex 1.1 =cut
1431    
1432 root 1.30 our %RH;
1433    
1434     sub register_read_type($$) {
1435     $RH{$_[0]} = $_[1];
1436     }
1437    
1438 root 1.8 sub push_read {
1439 root 1.28 my $self = shift;
1440     my $cb = pop;
1441    
1442     if (@_) {
1443     my $type = shift;
1444    
1445 root 1.185 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1446     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::push_read")
1447 root 1.28 ->($self, $cb, @_);
1448     }
1449 elmex 1.1
1450 root 1.38 push @{ $self->{_queue} }, $cb;
1451 root 1.159 $self->_drain_rbuf;
1452 elmex 1.1 }
1453    
1454 root 1.8 sub unshift_read {
1455 root 1.28 my $self = shift;
1456     my $cb = pop;
1457    
1458     if (@_) {
1459     my $type = shift;
1460    
1461 root 1.199 $cb = ($RH{$type} ||= _load_func "$type\::anyevent_read_type"
1462     or Carp::croak "unsupported/unloadable type '$type' passed to AnyEvent::Handle::unshift_read")
1463 root 1.28 ->($self, $cb, @_);
1464     }
1465    
1466 root 1.38 unshift @{ $self->{_queue} }, $cb;
1467 root 1.159 $self->_drain_rbuf;
1468 root 1.8 }
1469 elmex 1.1
1470 root 1.28 =item $handle->push_read (type => @args, $cb)
1471 elmex 1.1
1472 root 1.28 =item $handle->unshift_read (type => @args, $cb)
1473 elmex 1.1
1474 root 1.28 Instead of providing a callback that parses the data itself you can chose
1475     between a number of predefined parsing formats, for chunks of data, lines
1476 root 1.185 etc. You can also specify the (fully qualified) name of a package, in
1477     which case AnyEvent tries to load the package and then expects to find the
1478     C<anyevent_read_type> function inside (see "custom read types", below).
1479 elmex 1.1
1480 root 1.30 Predefined types are (if you have ideas for additional types, feel free to
1481     drop by and tell us):
1482 root 1.28
1483     =over 4
1484    
1485 root 1.40 =item chunk => $octets, $cb->($handle, $data)
1486 root 1.28
1487     Invoke the callback only once C<$octets> bytes have been read. Pass the
1488     data read to the callback. The callback will never be called with less
1489     data.
1490    
1491     Example: read 2 bytes.
1492    
1493     $handle->push_read (chunk => 2, sub {
1494 root 1.225 say "yay " . unpack "H*", $_[1];
1495 root 1.28 });
1496 elmex 1.1
1497     =cut
1498    
1499 root 1.28 register_read_type chunk => sub {
1500     my ($self, $cb, $len) = @_;
1501 elmex 1.1
1502 root 1.8 sub {
1503     $len <= length $_[0]{rbuf} or return;
1504 elmex 1.12 $cb->($_[0], substr $_[0]{rbuf}, 0, $len, "");
1505 root 1.8 1
1506     }
1507 root 1.28 };
1508 root 1.8
1509 root 1.40 =item line => [$eol, ]$cb->($handle, $line, $eol)
1510 elmex 1.1
1511 root 1.8 The callback will be called only once a full line (including the end of
1512     line marker, C<$eol>) has been read. This line (excluding the end of line
1513     marker) will be passed to the callback as second argument (C<$line>), and
1514     the end of line marker as the third argument (C<$eol>).
1515 elmex 1.1
1516 root 1.8 The end of line marker, C<$eol>, can be either a string, in which case it
1517     will be interpreted as a fixed record end marker, or it can be a regex
1518     object (e.g. created by C<qr>), in which case it is interpreted as a
1519     regular expression.
1520 elmex 1.1
1521 root 1.8 The end of line marker argument C<$eol> is optional, if it is missing (NOT
1522     undef), then C<qr|\015?\012|> is used (which is good for most internet
1523     protocols).
1524 elmex 1.1
1525 root 1.8 Partial lines at the end of the stream will never be returned, as they are
1526     not marked by the end of line marker.
1527 elmex 1.1
1528 root 1.8 =cut
1529 elmex 1.1
1530 root 1.28 register_read_type line => sub {
1531     my ($self, $cb, $eol) = @_;
1532 elmex 1.1
1533 root 1.76 if (@_ < 3) {
1534 root 1.237 # this is faster then the generic code below
1535 root 1.76 sub {
1536 root 1.237 (my $pos = index $_[0]{rbuf}, "\012") >= 0
1537     or return;
1538 elmex 1.1
1539 root 1.237 (my $str = substr $_[0]{rbuf}, 0, $pos + 1, "") =~ s/(\015?\012)\Z// or die;
1540     $cb->($_[0], $str, "$1");
1541 root 1.76 1
1542     }
1543     } else {
1544     $eol = quotemeta $eol unless ref $eol;
1545     $eol = qr|^(.*?)($eol)|s;
1546    
1547     sub {
1548     $_[0]{rbuf} =~ s/$eol// or return;
1549 elmex 1.1
1550 root 1.227 $cb->($_[0], "$1", "$2");
1551 root 1.76 1
1552     }
1553 root 1.8 }
1554 root 1.28 };
1555 elmex 1.1
1556 root 1.40 =item regex => $accept[, $reject[, $skip], $cb->($handle, $data)
1557 root 1.36
1558     Makes a regex match against the regex object C<$accept> and returns
1559     everything up to and including the match.
1560    
1561     Example: read a single line terminated by '\n'.
1562    
1563     $handle->push_read (regex => qr<\n>, sub { ... });
1564    
1565     If C<$reject> is given and not undef, then it determines when the data is
1566     to be rejected: it is matched against the data when the C<$accept> regex
1567     does not match and generates an C<EBADMSG> error when it matches. This is
1568     useful to quickly reject wrong data (to avoid waiting for a timeout or a
1569     receive buffer overflow).
1570    
1571     Example: expect a single decimal number followed by whitespace, reject
1572     anything else (not the use of an anchor).
1573    
1574     $handle->push_read (regex => qr<^[0-9]+\s>, qr<[^0-9]>, sub { ... });
1575    
1576     If C<$skip> is given and not C<undef>, then it will be matched against
1577     the receive buffer when neither C<$accept> nor C<$reject> match,
1578     and everything preceding and including the match will be accepted
1579     unconditionally. This is useful to skip large amounts of data that you
1580     know cannot be matched, so that the C<$accept> or C<$reject> regex do not
1581     have to start matching from the beginning. This is purely an optimisation
1582 root 1.198 and is usually worth it only when you expect more than a few kilobytes.
1583 root 1.36
1584     Example: expect a http header, which ends at C<\015\012\015\012>. Since we
1585 root 1.198 expect the header to be very large (it isn't in practice, but...), we use
1586 root 1.36 a skip regex to skip initial portions. The skip regex is tricky in that
1587     it only accepts something not ending in either \015 or \012, as these are
1588     required for the accept regex.
1589    
1590     $handle->push_read (regex =>
1591     qr<\015\012\015\012>,
1592     undef, # no reject
1593     qr<^.*[^\015\012]>,
1594     sub { ... });
1595    
1596     =cut
1597    
1598     register_read_type regex => sub {
1599     my ($self, $cb, $accept, $reject, $skip) = @_;
1600    
1601     my $data;
1602     my $rbuf = \$self->{rbuf};
1603    
1604     sub {
1605     # accept
1606     if ($$rbuf =~ $accept) {
1607     $data .= substr $$rbuf, 0, $+[0], "";
1608 root 1.220 $cb->($_[0], $data);
1609 root 1.36 return 1;
1610     }
1611    
1612     # reject
1613     if ($reject && $$rbuf =~ $reject) {
1614 root 1.220 $_[0]->_error (Errno::EBADMSG);
1615 root 1.36 }
1616    
1617     # skip
1618     if ($skip && $$rbuf =~ $skip) {
1619     $data .= substr $$rbuf, 0, $+[0], "";
1620     }
1621    
1622     ()
1623     }
1624     };
1625    
1626 root 1.61 =item netstring => $cb->($handle, $string)
1627    
1628     A netstring (http://cr.yp.to/proto/netstrings.txt, this is not an endorsement).
1629    
1630     Throws an error with C<$!> set to EBADMSG on format violations.
1631    
1632     =cut
1633    
1634     register_read_type netstring => sub {
1635     my ($self, $cb) = @_;
1636    
1637     sub {
1638     unless ($_[0]{rbuf} =~ s/^(0|[1-9][0-9]*)://) {
1639     if ($_[0]{rbuf} =~ /[^0-9]/) {
1640 root 1.220 $_[0]->_error (Errno::EBADMSG);
1641 root 1.61 }
1642     return;
1643     }
1644    
1645     my $len = $1;
1646    
1647 root 1.220 $_[0]->unshift_read (chunk => $len, sub {
1648 root 1.61 my $string = $_[1];
1649     $_[0]->unshift_read (chunk => 1, sub {
1650     if ($_[1] eq ",") {
1651     $cb->($_[0], $string);
1652     } else {
1653 root 1.220 $_[0]->_error (Errno::EBADMSG);
1654 root 1.61 }
1655     });
1656     });
1657    
1658     1
1659     }
1660     };
1661    
1662     =item packstring => $format, $cb->($handle, $string)
1663    
1664     An octet string prefixed with an encoded length. The encoding C<$format>
1665     uses the same format as a Perl C<pack> format, but must specify a single
1666     integer only (only one of C<cCsSlLqQiInNvVjJw> is allowed, plus an
1667     optional C<!>, C<< < >> or C<< > >> modifier).
1668    
1669 root 1.96 For example, DNS over TCP uses a prefix of C<n> (2 octet network order),
1670     EPP uses a prefix of C<N> (4 octtes).
1671 root 1.61
1672     Example: read a block of data prefixed by its length in BER-encoded
1673     format (very efficient).
1674    
1675     $handle->push_read (packstring => "w", sub {
1676     my ($handle, $data) = @_;
1677     });
1678    
1679     =cut
1680    
1681     register_read_type packstring => sub {
1682     my ($self, $cb, $format) = @_;
1683    
1684     sub {
1685     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1686 root 1.76 defined (my $len = eval { unpack $format, $_[0]{rbuf} })
1687 root 1.61 or return;
1688    
1689 root 1.77 $format = length pack $format, $len;
1690 root 1.61
1691 root 1.77 # bypass unshift if we already have the remaining chunk
1692     if ($format + $len <= length $_[0]{rbuf}) {
1693     my $data = substr $_[0]{rbuf}, $format, $len;
1694     substr $_[0]{rbuf}, 0, $format + $len, "";
1695     $cb->($_[0], $data);
1696     } else {
1697     # remove prefix
1698     substr $_[0]{rbuf}, 0, $format, "";
1699    
1700     # read remaining chunk
1701     $_[0]->unshift_read (chunk => $len, $cb);
1702     }
1703 root 1.61
1704     1
1705     }
1706     };
1707    
1708 root 1.40 =item json => $cb->($handle, $hash_or_arrayref)
1709    
1710 root 1.110 Reads a JSON object or array, decodes it and passes it to the
1711     callback. When a parse error occurs, an C<EBADMSG> error will be raised.
1712 root 1.40
1713     If a C<json> object was passed to the constructor, then that will be used
1714     for the final decode, otherwise it will create a JSON coder expecting UTF-8.
1715    
1716     This read type uses the incremental parser available with JSON version
1717     2.09 (and JSON::XS version 2.2) and above. You have to provide a
1718     dependency on your own: this module will load the JSON module, but
1719     AnyEvent does not depend on it itself.
1720    
1721     Since JSON texts are fully self-delimiting, the C<json> read and write
1722 root 1.41 types are an ideal simple RPC protocol: just exchange JSON datagrams. See
1723     the C<json> write type description, above, for an actual example.
1724 root 1.40
1725     =cut
1726    
1727     register_read_type json => sub {
1728 root 1.63 my ($self, $cb) = @_;
1729 root 1.40
1730 root 1.179 my $json = $self->{json} ||= json_coder;
1731 root 1.40
1732     my $data;
1733    
1734     sub {
1735 root 1.220 my $ref = eval { $json->incr_parse ($_[0]{rbuf}) };
1736 root 1.110
1737 root 1.113 if ($ref) {
1738 root 1.220 $_[0]{rbuf} = $json->incr_text;
1739 root 1.113 $json->incr_text = "";
1740 root 1.220 $cb->($_[0], $ref);
1741 root 1.110
1742     1
1743 root 1.113 } elsif ($@) {
1744 root 1.111 # error case
1745 root 1.110 $json->incr_skip;
1746 root 1.40
1747 root 1.220 $_[0]{rbuf} = $json->incr_text;
1748 root 1.40 $json->incr_text = "";
1749    
1750 root 1.220 $_[0]->_error (Errno::EBADMSG);
1751 root 1.114
1752 root 1.113 ()
1753     } else {
1754 root 1.220 $_[0]{rbuf} = "";
1755 root 1.114
1756 root 1.113 ()
1757     }
1758 root 1.40 }
1759     };
1760    
1761 root 1.238 =item cbor => $cb->($handle, $scalar)
1762    
1763     Reads a CBOR value, decodes it and passes it to the callback. When a parse
1764     error occurs, an C<EBADMSG> error will be raised.
1765    
1766     If a L<CBOR::XS> object was passed to the constructor, then that will be
1767     used for the final decode, otherwise it will create a CBOR coder without
1768     enabling any options.
1769    
1770     You have to provide a dependency to L<CBOR::XS> on your own: this module
1771     will load the L<CBOR::XS> module, but AnyEvent does not depend on it
1772     itself.
1773    
1774     Since CBOR values are fully self-delimiting, the C<cbor> read and write
1775     types are an ideal simple RPC protocol: just exchange CBOR datagrams. See
1776     the C<cbor> write type description, above, for an actual example.
1777    
1778     =cut
1779    
1780     register_read_type cbor => sub {
1781     my ($self, $cb) = @_;
1782    
1783     my $cbor = $self->{cbor} ||= cbor_coder;
1784    
1785     my $data;
1786    
1787     sub {
1788     my (@value) = eval { $cbor->incr_parse ($_[0]{rbuf}) };
1789    
1790     if (@value) {
1791     $cb->($_[0], @value);
1792    
1793     1
1794     } elsif ($@) {
1795     # error case
1796     $cbor->incr_reset;
1797    
1798     $_[0]->_error (Errno::EBADMSG);
1799    
1800     ()
1801     } else {
1802     ()
1803     }
1804     }
1805     };
1806    
1807 root 1.63 =item storable => $cb->($handle, $ref)
1808    
1809     Deserialises a L<Storable> frozen representation as written by the
1810     C<storable> write type (BER-encoded length prefix followed by nfreeze'd
1811     data).
1812    
1813     Raises C<EBADMSG> error if the data could not be decoded.
1814    
1815     =cut
1816    
1817     register_read_type storable => sub {
1818     my ($self, $cb) = @_;
1819    
1820 root 1.224 require Storable unless $Storable::VERSION;
1821 root 1.63
1822     sub {
1823     # when we can use 5.10 we can use ".", but for 5.8 we use the re-pack method
1824 root 1.76 defined (my $len = eval { unpack "w", $_[0]{rbuf} })
1825 root 1.63 or return;
1826    
1827 root 1.77 my $format = length pack "w", $len;
1828 root 1.63
1829 root 1.77 # bypass unshift if we already have the remaining chunk
1830     if ($format + $len <= length $_[0]{rbuf}) {
1831     my $data = substr $_[0]{rbuf}, $format, $len;
1832     substr $_[0]{rbuf}, 0, $format + $len, "";
1833 root 1.232
1834     eval { $cb->($_[0], Storable::thaw ($data)); 1 }
1835     or return $_[0]->_error (Errno::EBADMSG);
1836 root 1.77 } else {
1837     # remove prefix
1838     substr $_[0]{rbuf}, 0, $format, "";
1839    
1840     # read remaining chunk
1841     $_[0]->unshift_read (chunk => $len, sub {
1842 root 1.232 eval { $cb->($_[0], Storable::thaw ($_[1])); 1 }
1843     or $_[0]->_error (Errno::EBADMSG);
1844 root 1.77 });
1845     }
1846    
1847     1
1848 root 1.63 }
1849     };
1850    
1851 root 1.236 =item tls_detect => $cb->($handle, $detect, $major, $minor)
1852    
1853     Checks the input stream for a valid SSL or TLS handshake TLSPaintext
1854     record without consuming anything. Only SSL version 3 or higher
1855     is handled, up to the fictituous protocol 4.x (but both SSL3+ and
1856     SSL2-compatible framing is supported).
1857    
1858     If it detects that the input data is likely TLS, it calls the callback
1859     with a true value for C<$detect> and the (on-wire) TLS version as second
1860     and third argument (C<$major> is C<3>, and C<$minor> is 0..3 for SSL
1861     3.0, TLS 1.0, 1.1 and 1.2, respectively). If it detects the input to
1862     be definitely not TLS, it calls the callback with a false value for
1863     C<$detect>.
1864    
1865     The callback could use this information to decide whether or not to start
1866     TLS negotiation.
1867    
1868     In all cases the data read so far is passed to the following read
1869     handlers.
1870    
1871     Usually you want to use the C<tls_autostart> read type instead.
1872    
1873     If you want to design a protocol that works in the presence of TLS
1874     dtection, make sure that any non-TLS data doesn't start with the octet 22
1875     (ASCII SYN, 16 hex) or 128-255 (i.e. highest bit set). The checks this
1876     read type does are a bit more strict, but might losen in the future to
1877     accomodate protocol changes.
1878    
1879     This read type does not rely on L<AnyEvent::TLS> (and thus, not on
1880     L<Net::SSLeay>).
1881    
1882     =item tls_autostart => $tls[, $tls_ctx]
1883    
1884     Tries to detect a valid SSL or TLS handshake. If one is detected, it tries
1885     to start tls by calling C<starttls> with the given arguments.
1886    
1887     In practise, C<$tls> must be C<accept>, or a Net::SSLeay context that has
1888     been configured to accept, as servers do not normally send a handshake on
1889     their own and ths cannot be detected in this way.
1890    
1891     See C<tls_detect> above for more details.
1892    
1893     Example: give the client a chance to start TLS before accepting a text
1894     line.
1895    
1896     $hdl->push_read (tls_detect => "accept");
1897     $hdl->push_read (line => sub {
1898     print "received ", ($_[0]{tls} ? "encrypted" : "cleartext"), " <$_[1]>\n";
1899     });
1900    
1901     =cut
1902    
1903     register_read_type tls_detect => sub {
1904     my ($self, $cb) = @_;
1905    
1906     sub {
1907     # this regex matches a full or partial tls record
1908     if (
1909     # ssl3+: type(22=handshake) major(=3) minor(any) length_hi
1910     $self->{rbuf} =~ /^(?:\z| \x16 (\z| [\x03\x04] (?:\z| . (?:\z| [\x00-\x40] ))))/xs
1911     # ssl2 comapatible: len_hi len_lo type(1) major minor dummy(forlength)
1912     or $self->{rbuf} =~ /^(?:\z| [\x80-\xff] (?:\z| . (?:\z| \x01 (\z| [\x03\x04] (?:\z| . (?:\z| . ))))))/xs
1913     ) {
1914     return if 3 != length $1; # partial match, can't decide yet
1915    
1916     # full match, valid TLS record
1917     my ($major, $minor) = unpack "CC", $1;
1918     $cb->($self, "accept", $major + $minor * 0.1);
1919     } else {
1920     # mismatch == guaranteed not TLS
1921     $cb->($self, undef);
1922     }
1923    
1924     1
1925     }
1926     };
1927    
1928     register_read_type tls_autostart => sub {
1929     my ($self, @tls) = @_;
1930    
1931     $RH{tls_detect}($self, sub {
1932     return unless $_[1];
1933     $_[0]->starttls (@tls);
1934     })
1935     };
1936    
1937 root 1.28 =back
1938    
1939 root 1.185 =item custom read types - Package::anyevent_read_type $handle, $cb, @args
1940 root 1.30
1941 root 1.185 Instead of one of the predefined types, you can also specify the name
1942     of a package. AnyEvent will try to load the package and then expects to
1943     find a function named C<anyevent_read_type> inside. If it isn't found, it
1944     progressively tries to load the parent package until it either finds the
1945     function (good) or runs out of packages (bad).
1946    
1947     Whenever this type is used, C<push_read> will invoke the function with the
1948     handle object, the original callback and the remaining arguments.
1949    
1950     The function is supposed to return a callback (usually a closure) that
1951     works as a plain read callback (see C<< ->push_read ($cb) >>), so you can
1952     mentally treat the function as a "configurable read type to read callback"
1953     converter.
1954    
1955     It should invoke the original callback when it is done reading (remember
1956     to pass C<$handle> as first argument as all other callbacks do that,
1957     although there is no strict requirement on this).
1958 root 1.30
1959 root 1.185 For examples, see the source of this module (F<perldoc -m
1960     AnyEvent::Handle>, search for C<register_read_type>)).
1961 root 1.30
1962 root 1.10 =item $handle->stop_read
1963    
1964     =item $handle->start_read
1965    
1966 root 1.18 In rare cases you actually do not want to read anything from the
1967 root 1.58 socket. In this case you can call C<stop_read>. Neither C<on_read> nor
1968 root 1.22 any queued callbacks will be executed then. To start reading again, call
1969 root 1.10 C<start_read>.
1970    
1971 root 1.56 Note that AnyEvent::Handle will automatically C<start_read> for you when
1972     you change the C<on_read> callback or push/unshift a read callback, and it
1973     will automatically C<stop_read> for you when neither C<on_read> is set nor
1974     there are any read requests in the queue.
1975    
1976 root 1.213 In older versions of this module (<= 5.3), these methods had no effect,
1977     as TLS does not support half-duplex connections. In current versions they
1978     work as expected, as this behaviour is required to avoid certain resource
1979     attacks, where the program would be forced to read (and buffer) arbitrary
1980     amounts of data before being able to send some data. The drawback is that
1981     some readings of the the SSL/TLS specifications basically require this
1982     attack to be working, as SSL/TLS implementations might stall sending data
1983     during a rehandshake.
1984    
1985     As a guideline, during the initial handshake, you should not stop reading,
1986 root 1.226 and as a client, it might cause problems, depending on your application.
1987 root 1.93
1988 root 1.10 =cut
1989    
1990     sub stop_read {
1991     my ($self) = @_;
1992 elmex 1.1
1993 root 1.213 delete $self->{_rw};
1994 root 1.8 }
1995 elmex 1.1
1996 root 1.10 sub start_read {
1997     my ($self) = @_;
1998    
1999 root 1.192 unless ($self->{_rw} || $self->{_eof} || !$self->{fh}) {
2000 root 1.10 Scalar::Util::weaken $self;
2001    
2002 root 1.175 $self->{_rw} = AE::io $self->{fh}, 0, sub {
2003 root 1.93 my $rbuf = \($self->{tls} ? my $buf : $self->{rbuf});
2004 root 1.203 my $len = sysread $self->{fh}, $$rbuf, $self->{read_size}, length $$rbuf;
2005 root 1.10
2006     if ($len > 0) {
2007 root 1.176 $self->{_activity} = $self->{_ractivity} = AE::now;
2008 root 1.43
2009 root 1.93 if ($self->{tls}) {
2010     Net::SSLeay::BIO_write ($self->{_rbio}, $$rbuf);
2011 root 1.97
2012 root 1.93 &_dotls ($self);
2013     } else {
2014 root 1.159 $self->_drain_rbuf;
2015 root 1.93 }
2016 root 1.10
2017 root 1.203 if ($len == $self->{read_size}) {
2018     $self->{read_size} *= 2;
2019     $self->{read_size} = $self->{max_read_size} || MAX_READ_SIZE
2020     if $self->{read_size} > ($self->{max_read_size} || MAX_READ_SIZE);
2021     }
2022    
2023 root 1.10 } elsif (defined $len) {
2024 root 1.38 delete $self->{_rw};
2025     $self->{_eof} = 1;
2026 root 1.159 $self->_drain_rbuf;
2027 root 1.10
2028 root 1.42 } elsif ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK) {
2029 root 1.52 return $self->_error ($!, 1);
2030 root 1.10 }
2031 root 1.175 };
2032 root 1.10 }
2033 elmex 1.1 }
2034    
2035 root 1.133 our $ERROR_SYSCALL;
2036     our $ERROR_WANT_READ;
2037    
2038     sub _tls_error {
2039     my ($self, $err) = @_;
2040    
2041     return $self->_error ($!, 1)
2042     if $err == Net::SSLeay::ERROR_SYSCALL ();
2043    
2044 root 1.233 my $err = Net::SSLeay::ERR_error_string (Net::SSLeay::ERR_get_error ());
2045 root 1.137
2046     # reduce error string to look less scary
2047     $err =~ s/^error:[0-9a-fA-F]{8}:[^:]+:([^:]+):/\L$1: /;
2048    
2049 root 1.143 if ($self->{_on_starttls}) {
2050     (delete $self->{_on_starttls})->($self, undef, $err);
2051     &_freetls;
2052     } else {
2053     &_freetls;
2054 root 1.150 $self->_error (Errno::EPROTO, 1, $err);
2055 root 1.143 }
2056 root 1.133 }
2057    
2058 root 1.97 # poll the write BIO and send the data if applicable
2059 root 1.133 # also decode read data if possible
2060     # this is basiclaly our TLS state machine
2061     # more efficient implementations are possible with openssl,
2062     # but not with the buggy and incomplete Net::SSLeay.
2063 root 1.19 sub _dotls {
2064     my ($self) = @_;
2065    
2066 root 1.97 my $tmp;
2067 root 1.56
2068 root 1.38 if (length $self->{_tls_wbuf}) {
2069 root 1.97 while (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) > 0) {
2070     substr $self->{_tls_wbuf}, 0, $tmp, "";
2071 root 1.22 }
2072 root 1.133
2073     $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp);
2074     return $self->_tls_error ($tmp)
2075     if $tmp != $ERROR_WANT_READ
2076 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
2077 root 1.19 }
2078    
2079 root 1.97 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) {
2080     unless (length $tmp) {
2081 root 1.143 $self->{_on_starttls}
2082     and (delete $self->{_on_starttls})->($self, undef, "EOF during handshake"); # ???
2083 root 1.92 &_freetls;
2084 root 1.143
2085 root 1.142 if ($self->{on_stoptls}) {
2086     $self->{on_stoptls}($self);
2087     return;
2088     } else {
2089     # let's treat SSL-eof as we treat normal EOF
2090     delete $self->{_rw};
2091     $self->{_eof} = 1;
2092     }
2093 root 1.56 }
2094 root 1.91
2095 root 1.116 $self->{_tls_rbuf} .= $tmp;
2096 root 1.159 $self->_drain_rbuf;
2097 root 1.92 $self->{tls} or return; # tls session might have gone away in callback
2098 root 1.23 }
2099    
2100 root 1.97 $tmp = Net::SSLeay::get_error ($self->{tls}, -1);
2101 root 1.133 return $self->_tls_error ($tmp)
2102     if $tmp != $ERROR_WANT_READ
2103 root 1.142 && ($tmp != $ERROR_SYSCALL || $!);
2104 root 1.91
2105 root 1.97 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) {
2106     $self->{wbuf} .= $tmp;
2107 root 1.91 $self->_drain_wbuf;
2108 root 1.192 $self->{tls} or return; # tls session might have gone away in callback
2109 root 1.91 }
2110 root 1.142
2111     $self->{_on_starttls}
2112     and Net::SSLeay::state ($self->{tls}) == Net::SSLeay::ST_OK ()
2113 root 1.143 and (delete $self->{_on_starttls})->($self, 1, "TLS/SSL connection established");
2114 root 1.19 }
2115    
2116 root 1.25 =item $handle->starttls ($tls[, $tls_ctx])
2117    
2118     Instead of starting TLS negotiation immediately when the AnyEvent::Handle
2119     object is created, you can also do that at a later time by calling
2120 root 1.234 C<starttls>. See the C<tls> constructor argument for general info.
2121 root 1.25
2122 root 1.157 Starting TLS is currently an asynchronous operation - when you push some
2123     write data and then call C<< ->starttls >> then TLS negotiation will start
2124 root 1.234 immediately, after which the queued write data is then sent. This might
2125     change in future versions, so best make sure you have no outstanding write
2126     data when calling this method.
2127 root 1.157
2128 root 1.25 The first argument is the same as the C<tls> constructor argument (either
2129     C<"connect">, C<"accept"> or an existing Net::SSLeay object).
2130    
2131 root 1.131 The second argument is the optional C<AnyEvent::TLS> object that is used
2132     when AnyEvent::Handle has to create its own TLS connection object, or
2133     a hash reference with C<< key => value >> pairs that will be used to
2134     construct a new context.
2135    
2136     The TLS connection object will end up in C<< $handle->{tls} >>, the TLS
2137     context in C<< $handle->{tls_ctx} >> after this call and can be used or
2138     changed to your liking. Note that the handshake might have already started
2139     when this function returns.
2140 root 1.38
2141 root 1.160 Due to bugs in OpenSSL, it might or might not be possible to do multiple
2142 root 1.198 handshakes on the same stream. It is best to not attempt to use the
2143     stream after stopping TLS.
2144 root 1.92
2145 root 1.193 This method may invoke callbacks (and therefore the handle might be
2146     destroyed after it returns).
2147    
2148 root 1.25 =cut
2149    
2150 root 1.137 our %TLS_CACHE; #TODO not yet documented, should we?
2151    
2152 root 1.19 sub starttls {
2153 root 1.160 my ($self, $tls, $ctx) = @_;
2154    
2155     Carp::croak "It is an error to call starttls on an AnyEvent::Handle object while TLS is already active, caught"
2156     if $self->{tls};
2157    
2158 root 1.234 unless (defined $AnyEvent::TLS::VERSION) {
2159     eval {
2160     require Net::SSLeay;
2161     require AnyEvent::TLS;
2162     1
2163     } or return $self->_error (Errno::EPROTO, 1, "TLS support not available on this system");
2164     }
2165    
2166 root 1.160 $self->{tls} = $tls;
2167     $self->{tls_ctx} = $ctx if @_ > 2;
2168    
2169     return unless $self->{fh};
2170 root 1.19
2171 root 1.142 $ERROR_SYSCALL = Net::SSLeay::ERROR_SYSCALL ();
2172     $ERROR_WANT_READ = Net::SSLeay::ERROR_WANT_READ ();
2173 root 1.133
2174 root 1.180 $tls = delete $self->{tls};
2175 root 1.160 $ctx = $self->{tls_ctx};
2176 root 1.131
2177 root 1.157 local $Carp::CarpLevel = 1; # skip ourselves when creating a new context or session
2178    
2179 root 1.131 if ("HASH" eq ref $ctx) {
2180 root 1.137 if ($ctx->{cache}) {
2181     my $key = $ctx+0;
2182     $ctx = $TLS_CACHE{$key} ||= new AnyEvent::TLS %$ctx;
2183     } else {
2184     $ctx = new AnyEvent::TLS %$ctx;
2185     }
2186 root 1.131 }
2187 root 1.92
2188 root 1.131 $self->{tls_ctx} = $ctx || TLS_CTX ();
2189 root 1.160 $self->{tls} = $tls = $self->{tls_ctx}->_get_session ($tls, $self, $self->{peername});
2190 root 1.19
2191 root 1.21 # basically, this is deep magic (because SSL_read should have the same issues)
2192     # but the openssl maintainers basically said: "trust us, it just works".
2193     # (unfortunately, we have to hardcode constants because the abysmally misdesigned
2194     # and mismaintained ssleay-module doesn't even offer them).
2195 root 1.27 # http://www.mail-archive.com/openssl-dev@openssl.org/msg22420.html
2196 root 1.87 #
2197     # in short: this is a mess.
2198     #
2199 root 1.93 # note that we do not try to keep the length constant between writes as we are required to do.
2200 root 1.87 # we assume that most (but not all) of this insanity only applies to non-blocking cases,
2201 root 1.93 # and we drive openssl fully in blocking mode here. Or maybe we don't - openssl seems to
2202     # have identity issues in that area.
2203 root 1.131 # Net::SSLeay::CTX_set_mode ($ssl,
2204     # (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ENABLE_PARTIAL_WRITE () } || 1)
2205     # | (eval { local $SIG{__DIE__}; Net::SSLeay::MODE_ACCEPT_MOVING_WRITE_BUFFER () } || 2));
2206 root 1.160 Net::SSLeay::CTX_set_mode ($tls, 1|2);
2207 root 1.21
2208 root 1.38 $self->{_rbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
2209     $self->{_wbio} = Net::SSLeay::BIO_new (Net::SSLeay::BIO_s_mem ());
2210 root 1.19
2211 root 1.219 Net::SSLeay::BIO_write ($self->{_rbio}, $self->{rbuf});
2212     $self->{rbuf} = "";
2213 root 1.172
2214 root 1.160 Net::SSLeay::set_bio ($tls, $self->{_rbio}, $self->{_wbio});
2215 root 1.19
2216 root 1.142 $self->{_on_starttls} = sub { $_[0]{on_starttls}(@_) }
2217 root 1.143 if $self->{on_starttls};
2218 root 1.142
2219 root 1.93 &_dotls; # need to trigger the initial handshake
2220     $self->start_read; # make sure we actually do read
2221 root 1.19 }
2222    
2223 root 1.25 =item $handle->stoptls
2224    
2225 root 1.92 Shuts down the SSL connection - this makes a proper EOF handshake by
2226     sending a close notify to the other side, but since OpenSSL doesn't
2227 root 1.192 support non-blocking shut downs, it is not guaranteed that you can re-use
2228 root 1.160 the stream afterwards.
2229 root 1.25
2230 root 1.193 This method may invoke callbacks (and therefore the handle might be
2231     destroyed after it returns).
2232    
2233 root 1.25 =cut
2234    
2235     sub stoptls {
2236     my ($self) = @_;
2237    
2238 root 1.192 if ($self->{tls} && $self->{fh}) {
2239 root 1.94 Net::SSLeay::shutdown ($self->{tls});
2240 root 1.92
2241     &_dotls;
2242    
2243 root 1.142 # # we don't give a shit. no, we do, but we can't. no...#d#
2244     # # we, we... have to use openssl :/#d#
2245     # &_freetls;#d#
2246 root 1.92 }
2247     }
2248    
2249     sub _freetls {
2250     my ($self) = @_;
2251    
2252     return unless $self->{tls};
2253 root 1.38
2254 root 1.160 $self->{tls_ctx}->_put_session (delete $self->{tls})
2255 root 1.171 if $self->{tls} > 0;
2256 root 1.92
2257 root 1.143 delete @$self{qw(_rbio _wbio _tls_wbuf _on_starttls)};
2258 root 1.25 }
2259    
2260 root 1.216 =item $handle->resettls
2261    
2262     This rarely-used method simply resets and TLS state on the handle, usually
2263     causing data loss.
2264    
2265     One case where it may be useful is when you want to skip over the data in
2266     the stream but you are not interested in interpreting it, so data loss is
2267     no concern.
2268    
2269     =cut
2270    
2271     *resettls = \&_freetls;
2272    
2273 root 1.19 sub DESTROY {
2274 root 1.120 my ($self) = @_;
2275 root 1.19
2276 root 1.92 &_freetls;
2277 root 1.62
2278     my $linger = exists $self->{linger} ? $self->{linger} : 3600;
2279    
2280 root 1.156 if ($linger && length $self->{wbuf} && $self->{fh}) {
2281 root 1.62 my $fh = delete $self->{fh};
2282     my $wbuf = delete $self->{wbuf};
2283    
2284     my @linger;
2285    
2286 root 1.175 push @linger, AE::io $fh, 1, sub {
2287 root 1.62 my $len = syswrite $fh, $wbuf, length $wbuf;
2288    
2289     if ($len > 0) {
2290     substr $wbuf, 0, $len, "";
2291 root 1.202 } elsif (defined $len || ($! != EAGAIN && $! != EINTR && $! != WSAEWOULDBLOCK)) {
2292 root 1.62 @linger = (); # end
2293     }
2294 root 1.175 };
2295     push @linger, AE::timer $linger, 0, sub {
2296 root 1.62 @linger = ();
2297 root 1.175 };
2298 root 1.62 }
2299 root 1.19 }
2300    
2301 root 1.99 =item $handle->destroy
2302    
2303 root 1.101 Shuts down the handle object as much as possible - this call ensures that
2304 root 1.141 no further callbacks will be invoked and as many resources as possible
2305 root 1.165 will be freed. Any method you will call on the handle object after
2306     destroying it in this way will be silently ignored (and it will return the
2307     empty list).
2308 root 1.99
2309 root 1.101 Normally, you can just "forget" any references to an AnyEvent::Handle
2310     object and it will simply shut down. This works in fatal error and EOF
2311     callbacks, as well as code outside. It does I<NOT> work in a read or write
2312     callback, so when you want to destroy the AnyEvent::Handle object from
2313     within such an callback. You I<MUST> call C<< ->destroy >> explicitly in
2314     that case.
2315    
2316 root 1.149 Destroying the handle object in this way has the advantage that callbacks
2317     will be removed as well, so if those are the only reference holders (as
2318     is common), then one doesn't need to do anything special to break any
2319     reference cycles.
2320    
2321 root 1.99 The handle might still linger in the background and write out remaining
2322     data, as specified by the C<linger> option, however.
2323    
2324     =cut
2325    
2326     sub destroy {
2327     my ($self) = @_;
2328    
2329     $self->DESTROY;
2330     %$self = ();
2331 root 1.164 bless $self, "AnyEvent::Handle::destroyed";
2332     }
2333    
2334 root 1.165 sub AnyEvent::Handle::destroyed::AUTOLOAD {
2335     #nop
2336 root 1.99 }
2337    
2338 root 1.192 =item $handle->destroyed
2339    
2340     Returns false as long as the handle hasn't been destroyed by a call to C<<
2341     ->destroy >>, true otherwise.
2342    
2343     Can be useful to decide whether the handle is still valid after some
2344     callback possibly destroyed the handle. For example, C<< ->push_write >>,
2345     C<< ->starttls >> and other methods can call user callbacks, which in turn
2346     can destroy the handle, so work can be avoided by checking sometimes:
2347    
2348     $hdl->starttls ("accept");
2349     return if $hdl->destroyed;
2350     $hdl->push_write (...
2351    
2352     Note that the call to C<push_write> will silently be ignored if the handle
2353     has been destroyed, so often you can just ignore the possibility of the
2354     handle being destroyed.
2355    
2356     =cut
2357    
2358     sub destroyed { 0 }
2359     sub AnyEvent::Handle::destroyed::destroyed { 1 }
2360    
2361 root 1.19 =item AnyEvent::Handle::TLS_CTX
2362    
2363 root 1.131 This function creates and returns the AnyEvent::TLS object used by default
2364     for TLS mode.
2365 root 1.19
2366 root 1.131 The context is created by calling L<AnyEvent::TLS> without any arguments.
2367 root 1.19
2368     =cut
2369    
2370     our $TLS_CTX;
2371    
2372     sub TLS_CTX() {
2373 root 1.131 $TLS_CTX ||= do {
2374     require AnyEvent::TLS;
2375 root 1.19
2376 root 1.131 new AnyEvent::TLS
2377 root 1.19 }
2378     }
2379    
2380 elmex 1.1 =back
2381    
2382 root 1.95
2383     =head1 NONFREQUENTLY ASKED QUESTIONS
2384    
2385     =over 4
2386    
2387 root 1.101 =item I C<undef> the AnyEvent::Handle reference inside my callback and
2388     still get further invocations!
2389    
2390     That's because AnyEvent::Handle keeps a reference to itself when handling
2391     read or write callbacks.
2392    
2393     It is only safe to "forget" the reference inside EOF or error callbacks,
2394     from within all other callbacks, you need to explicitly call the C<<
2395     ->destroy >> method.
2396    
2397 root 1.208 =item Why is my C<on_eof> callback never called?
2398    
2399     Probably because your C<on_error> callback is being called instead: When
2400     you have outstanding requests in your read queue, then an EOF is
2401     considered an error as you clearly expected some data.
2402    
2403     To avoid this, make sure you have an empty read queue whenever your handle
2404 root 1.223 is supposed to be "idle" (i.e. connection closes are O.K.). You can set
2405 root 1.208 an C<on_read> handler that simply pushes the first read requests in the
2406     queue.
2407    
2408     See also the next question, which explains this in a bit more detail.
2409    
2410     =item How can I serve requests in a loop?
2411    
2412     Most protocols consist of some setup phase (authentication for example)
2413     followed by a request handling phase, where the server waits for requests
2414     and handles them, in a loop.
2415    
2416     There are two important variants: The first (traditional, better) variant
2417     handles requests until the server gets some QUIT command, causing it to
2418     close the connection first (highly desirable for a busy TCP server). A
2419     client dropping the connection is an error, which means this variant can
2420     detect an unexpected detection close.
2421    
2422 root 1.235 To handle this case, always make sure you have a non-empty read queue, by
2423 root 1.208 pushing the "read request start" handler on it:
2424    
2425     # we assume a request starts with a single line
2426     my @start_request; @start_request = (line => sub {
2427     my ($hdl, $line) = @_;
2428    
2429     ... handle request
2430    
2431     # push next request read, possibly from a nested callback
2432     $hdl->push_read (@start_request);
2433     });
2434    
2435     # auth done, now go into request handling loop
2436     # now push the first @start_request
2437     $hdl->push_read (@start_request);
2438    
2439     By always having an outstanding C<push_read>, the handle always expects
2440     some data and raises the C<EPIPE> error when the connction is dropped
2441     unexpectedly.
2442    
2443     The second variant is a protocol where the client can drop the connection
2444     at any time. For TCP, this means that the server machine may run out of
2445 root 1.223 sockets easier, and in general, it means you cannot distinguish a protocl
2446 root 1.208 failure/client crash from a normal connection close. Nevertheless, these
2447     kinds of protocols are common (and sometimes even the best solution to the
2448     problem).
2449    
2450     Having an outstanding read request at all times is possible if you ignore
2451     C<EPIPE> errors, but this doesn't help with when the client drops the
2452     connection during a request, which would still be an error.
2453    
2454     A better solution is to push the initial request read in an C<on_read>
2455     callback. This avoids an error, as when the server doesn't expect data
2456     (i.e. is idly waiting for the next request, an EOF will not raise an
2457     error, but simply result in an C<on_eof> callback. It is also a bit slower
2458     and simpler:
2459    
2460     # auth done, now go into request handling loop
2461     $hdl->on_read (sub {
2462     my ($hdl) = @_;
2463    
2464     # called each time we receive data but the read queue is empty
2465     # simply start read the request
2466    
2467     $hdl->push_read (line => sub {
2468     my ($hdl, $line) = @_;
2469    
2470     ... handle request
2471    
2472     # do nothing special when the request has been handled, just
2473     # let the request queue go empty.
2474     });
2475     });
2476    
2477 root 1.101 =item I get different callback invocations in TLS mode/Why can't I pause
2478     reading?
2479    
2480     Unlike, say, TCP, TLS connections do not consist of two independent
2481 root 1.198 communication channels, one for each direction. Or put differently, the
2482 root 1.101 read and write directions are not independent of each other: you cannot
2483     write data unless you are also prepared to read, and vice versa.
2484    
2485 root 1.198 This means that, in TLS mode, you might get C<on_error> or C<on_eof>
2486 root 1.101 callback invocations when you are not expecting any read data - the reason
2487     is that AnyEvent::Handle always reads in TLS mode.
2488    
2489     During the connection, you have to make sure that you always have a
2490     non-empty read-queue, or an C<on_read> watcher. At the end of the
2491     connection (or when you no longer want to use it) you can call the
2492     C<destroy> method.
2493    
2494 root 1.95 =item How do I read data until the other side closes the connection?
2495    
2496 root 1.96 If you just want to read your data into a perl scalar, the easiest way
2497     to achieve this is by setting an C<on_read> callback that does nothing,
2498     clearing the C<on_eof> callback and in the C<on_error> callback, the data
2499     will be in C<$_[0]{rbuf}>:
2500 root 1.95
2501     $handle->on_read (sub { });
2502     $handle->on_eof (undef);
2503     $handle->on_error (sub {
2504     my $data = delete $_[0]{rbuf};
2505     });
2506    
2507 root 1.219 Note that this example removes the C<rbuf> member from the handle object,
2508     which is not normally allowed by the API. It is expressly permitted in
2509     this case only, as the handle object needs to be destroyed afterwards.
2510    
2511 root 1.95 The reason to use C<on_error> is that TCP connections, due to latencies
2512     and packets loss, might get closed quite violently with an error, when in
2513 root 1.198 fact all data has been received.
2514 root 1.95
2515 root 1.101 It is usually better to use acknowledgements when transferring data,
2516 root 1.95 to make sure the other side hasn't just died and you got the data
2517     intact. This is also one reason why so many internet protocols have an
2518     explicit QUIT command.
2519    
2520 root 1.96 =item I don't want to destroy the handle too early - how do I wait until
2521     all data has been written?
2522 root 1.95
2523     After writing your last bits of data, set the C<on_drain> callback
2524     and destroy the handle in there - with the default setting of
2525     C<low_water_mark> this will be called precisely when all data has been
2526     written to the socket:
2527    
2528     $handle->push_write (...);
2529     $handle->on_drain (sub {
2530 root 1.231 AE::log debug => "All data submitted to the kernel.";
2531 root 1.95 undef $handle;
2532     });
2533    
2534 root 1.143 If you just want to queue some data and then signal EOF to the other side,
2535     consider using C<< ->push_shutdown >> instead.
2536    
2537     =item I want to contact a TLS/SSL server, I don't care about security.
2538    
2539     If your TLS server is a pure TLS server (e.g. HTTPS) that only speaks TLS,
2540 root 1.198 connect to it and then create the AnyEvent::Handle with the C<tls>
2541 root 1.143 parameter:
2542    
2543 root 1.144 tcp_connect $host, $port, sub {
2544     my ($fh) = @_;
2545 root 1.143
2546 root 1.144 my $handle = new AnyEvent::Handle
2547     fh => $fh,
2548     tls => "connect",
2549     on_error => sub { ... };
2550    
2551     $handle->push_write (...);
2552     };
2553 root 1.143
2554     =item I want to contact a TLS/SSL server, I do care about security.
2555    
2556 root 1.144 Then you should additionally enable certificate verification, including
2557     peername verification, if the protocol you use supports it (see
2558     L<AnyEvent::TLS>, C<verify_peername>).
2559    
2560     E.g. for HTTPS:
2561    
2562     tcp_connect $host, $port, sub {
2563     my ($fh) = @_;
2564    
2565     my $handle = new AnyEvent::Handle
2566     fh => $fh,
2567     peername => $host,
2568     tls => "connect",
2569     tls_ctx => { verify => 1, verify_peername => "https" },
2570     ...
2571    
2572     Note that you must specify the hostname you connected to (or whatever
2573     "peername" the protocol needs) as the C<peername> argument, otherwise no
2574     peername verification will be done.
2575    
2576     The above will use the system-dependent default set of trusted CA
2577     certificates. If you want to check against a specific CA, add the
2578     C<ca_file> (or C<ca_cert>) arguments to C<tls_ctx>:
2579    
2580     tls_ctx => {
2581     verify => 1,
2582     verify_peername => "https",
2583     ca_file => "my-ca-cert.pem",
2584     },
2585    
2586     =item I want to create a TLS/SSL server, how do I do that?
2587    
2588     Well, you first need to get a server certificate and key. You have
2589     three options: a) ask a CA (buy one, use cacert.org etc.) b) create a
2590     self-signed certificate (cheap. check the search engine of your choice,
2591     there are many tutorials on the net) or c) make your own CA (tinyca2 is a
2592     nice program for that purpose).
2593    
2594     Then create a file with your private key (in PEM format, see
2595     L<AnyEvent::TLS>), followed by the certificate (also in PEM format). The
2596     file should then look like this:
2597    
2598     -----BEGIN RSA PRIVATE KEY-----
2599     ...header data
2600     ... lots of base64'y-stuff
2601     -----END RSA PRIVATE KEY-----
2602    
2603     -----BEGIN CERTIFICATE-----
2604     ... lots of base64'y-stuff
2605     -----END CERTIFICATE-----
2606    
2607     The important bits are the "PRIVATE KEY" and "CERTIFICATE" parts. Then
2608     specify this file as C<cert_file>:
2609    
2610     tcp_server undef, $port, sub {
2611     my ($fh) = @_;
2612    
2613     my $handle = new AnyEvent::Handle
2614     fh => $fh,
2615     tls => "accept",
2616     tls_ctx => { cert_file => "my-server-keycert.pem" },
2617     ...
2618 root 1.143
2619 root 1.144 When you have intermediate CA certificates that your clients might not
2620     know about, just append them to the C<cert_file>.
2621 root 1.143
2622 root 1.95 =back
2623    
2624 root 1.38 =head1 SUBCLASSING AnyEvent::Handle
2625    
2626     In many cases, you might want to subclass AnyEvent::Handle.
2627    
2628     To make this easier, a given version of AnyEvent::Handle uses these
2629     conventions:
2630    
2631     =over 4
2632    
2633     =item * all constructor arguments become object members.
2634    
2635     At least initially, when you pass a C<tls>-argument to the constructor it
2636 root 1.75 will end up in C<< $handle->{tls} >>. Those members might be changed or
2637 root 1.38 mutated later on (for example C<tls> will hold the TLS connection object).
2638    
2639     =item * other object member names are prefixed with an C<_>.
2640    
2641     All object members not explicitly documented (internal use) are prefixed
2642     with an underscore character, so the remaining non-C<_>-namespace is free
2643     for use for subclasses.
2644    
2645     =item * all members not documented here and not prefixed with an underscore
2646     are free to use in subclasses.
2647    
2648     Of course, new versions of AnyEvent::Handle may introduce more "public"
2649 root 1.198 member variables, but that's just life. At least it is documented.
2650 root 1.38
2651     =back
2652    
2653 elmex 1.1 =head1 AUTHOR
2654    
2655 root 1.8 Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>.
2656 elmex 1.1
2657     =cut
2658    
2659 root 1.230 1
2660