The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 1.53 - 2006-08-24

  • Don't allow ->read() if socket has been closed (msergeant).
  • Added local_ip_string() and local_addr_string() (msergeant).
  • Removed bogus 'ticker' code from KQueue event loop (msergeant).
  • Converted comment based docs to POD and fix some of those docs to match reality (msergeant).
  • 1.52: (2006-07-09)
    • AddTimer now returns a Danga::Socket::Timer object which you can call the 'cancel' method on.
    • A good catch by Whitaker. If an epoll_ctl problem occurs when manipulatiing something that isn't an INET domain socket, the unpacking of remote information will fail.
  • 1.51: (2006-04-27)
    • let subclasses overwrite the behavior on incomplete writes. default, as always, is just to force watching of writability. but during, say, SSL stuff, it's useful to disable that.
  • 1.50: (2006-04-17)
    • use bytes. was affecting djabberd with unicode XML messages. diagnosis by Artur Bergman and Tatsuhiko Miyagawa.
  • 1.49: (2006-03-02)
    • patch to allow pluggable writer functions per socket. so you can have SSL connections that do Net::SSLeay writes (or whatever) instead of relying on tied handles.
  • 1.48: (2005-10-12)
    • patch from Eric Lambrecht <eml@guba.com> who noticed that calling sysread in Perl w/ over ~5MB could cause Perl to just die and quit. so limit reads to 5MB.
  • 1.47: (2005-08-29)
    • new $ENV{DS_DEBUG} to warn about weird conditions, which currently means just peer_ip_string returning undef. trying to trace that down in perlbal occasionally, but DS_DEBUG might be useful in the future for other things
    • account for PostEventLoop running with two items in %PushBackSet, the first of which closes the second, so the second would crash trying to deref undef when it can't find the previously evaluated key in the now-empty hash.
  • 1.46: (2005-08-24)
    • warn about undef sockets in Danga::Socket's constructor, or overwriting the descriptor map with a socket using the same fd as another in use.
    • change all print STDERR to warn (so we can trap 'em with $SIG{__WARN__})
    • delay the removal of fds from DescriptorMap to eliminate warnings when one fds in the same epoll_wait/etc return set kills one of the others which hasn't been processed yet. new test t/12-closerace.t to demonstrate the situation.
  • 1.45: (2005-08-23)
    • don't hang forever if there is a timer but no sockets and looptimeout is -1. the problem was we always picked the lesser time of LoopTimeout and NextTimerTimeout, but if LoopTimeout was -1 (which means infinity), we preferred that, wrongly.
    • in RunTimers, calculate the milliseconds in integer, and add 1 to remove some floating point weirdness which caused 20-30 extra loops which accomplished nothing. see comments.
  • 1.44: (2005-08-16)
    • fix another bug in push_back_read... ancient: comma instead of semi-colon (can you tell nobody used this function before?)
    • fix a bug in push_back_read ... apparently it never actually worked when you asked for less bytes than were available.
    • adds code for when kqueue returns a fd we don't have a mapping for (Matt Sergeant)
    • generic timer support (Matt Sergeant), use HiRes and rearrange to share some code (Brad)
    • make tcp_cork a noop on non-linux (FIXME: port to bsd at least)
  • 1.43:
    • don't even try epoll if not on a known/tested arch
    • updated POD docs
  • 1.42:
    • use the right epoll system call numbers on non-x86 machines
    • start of a good test suite
    • 64-bit struct support (test suite passes on ia64, ppc) (and presumably ppc64, but yet untested)
  • 1.41:
    • make the Poll mode behave like Epoll/Kqueue in that fds returned w/ no corresponding Danga::Socket object or OtherFds coderef just get ignored. make it robust against apps with races, perhaps? patch from Justin Azoff <JAzoff@uamail.albany.edu>
  • 1.40:
    • Kqueue support from Matt Sergeant
  • 1.39:
    • make BSD::Resource optional
  • 1.38:
    • added support for profiling (epoll only at the moment while this feature is further fleshed out); user application is required to enable profiling and actually process the resultant data
    • if epoll_wait returns an event we can't handle, delete it. this means the application fucked up and lost its state somehow. or maybe Danga::Socket did? still debugging this in Perlbal.
  • 1.25: (2004-10-22)
    • move the syscall.ph require into "package main" rather than stealing all its definitions into our namespace. now other modules can use syscall.ph and Danga::Socket at the same time (as long as they're also polite and load it into main) (NOTE: if you know a better way to do this, let us know...)
  • 1.24: (2004-10-21)
    • ability to steal the underlying socket from the Danga::Socket object. this is useful if a caller wants to hold onto the socket but destroy the Danga::Socket object (previously the Danga::Socket close would close the underlying socket)
  • 1.22: (2004-10-21)
    • minimal POD docs
    • first public release

Modules

Event loop and event-driven async socket base class

Provides

in Socket.pm