• Show log

    Commit

  • Hash : fc52dbac
    Author : Mark Ellzey
    Date : 2011-11-14T10:24:07

    Avoid potential SSL read spinlocks
    
    OpenSSL bufferevents with deferred callbacks enabled under high load will
    spinlock in the function consider_reading(). This loop continues until all
    data has been read.
    
    Because of this condition; openssl bufferevents will never return back into
    event_base_loop() until SSL_read has determined data is no longer ready.
    
    As of yet I have not found a reason why this while loop exists, so this patch
    just swaps out while for if.
    
    If needed I can write same code which would trigger this effect; optionally
    libevhtp has a test.c program which can be run with the following flags:
    
    ./test -s <keyfile.pem>
    
    curl -vvvv -k -d@<HUGE_ASS_FILE> https://127.0.0.1:8081/
    
    The return data will include the number of times the readcb got data and the
    length of that read.
    
    Without this patch, you are likely to see a small amount of "bytes read....",
    otherwise the "bytes read..." return data should show much more reasonable
    numbers.
    

  • README

  • 0. BUILDING AND INSTALLATION (Briefly)
    
    $ ./configure
    $ make
    $ make verify   # (optional)
    $ sudo make install
    
    1. BUILDING AND INSTALLATION (In Depth)
    
    To build libevent, type
    
    $ ./configure && make
    
         (If you got libevent from the git repository, you will
          first need to run the included "autogen.sh" script in order to
          generate the configure script.)
    
    You can run the regression tests by running
    
    $ make verify
    
    Install as root via
    
    # make install
    
    Before, reporting any problems, please run the regression tests.
    
    To enable the low-level tracing build the library as:
    
       CFLAGS=-DUSE_DEBUG ./configure [...]
    
    Standard configure flags should work.  In particular, see:
    
       --disable-shared          Only build static libraries
       --prefix                  Install all files relative to this directory.
    
    
    The configure script also supports the following flags:
    
       --enable-gcc-warnings     Enable extra compiler checking with GCC.
       --disable-malloc-replacement
                                 Don't let applications replace our memory
                                 management functions
       --disable-openssl         Disable support for OpenSSL encryption.
       --disable-thread-support  Don't support multithreaded environments.
    
    2. USEFUL LINKS:
    
    For the latest released version of Libevent, see the official website at
    http://monkey.org/~provos/libevent/ .
    
    There's a pretty good work-in-progress manual up at
       http://www.wangafu.net/~nickm/libevent-book/ .
    
    For the latest development versions of Libevent, access our Git repository
    via
       "git clone git://levent.git.sourceforge.net/gitroot/levent/libevent"
    
    You can browse the git repository online at
    http://levent.git.sourceforge.net/git/gitweb-index.cgi .
    
    To report bugs, request features, or submit patches to Libevent,
    use the Sourceforge trackers at
    https://sourceforge.net/tracker/?group_id=50884 .
    
    There's also a libevent-users mailing list for talking about Libevent
    use and development: http://archives.seul.org/libevent/users/
    
    3. ACKNOWLEDGMENTS
    
    The following people have helped with suggestions, ideas, code or
    fixing bugs:
    
      Alejo
      Weston Andros Adamson
      William Ahern
      Ivan Andropov
      Sergey Avseyev
      Avi Bab
      Gilad Benjamini
      Stas Bekman
      Joachim Bauch
      Denis Bilenko
      Julien Blache
      Kevin Bowling
      Tomash Brechko
      Kelly Brock
      Ralph Castain
      Adrian Chadd
      Lawnstein Chan
      Shuo Chen
      Ka-Hing Cheung
      Andrew Danforth
      Ed Day
      Christopher Davis
      Mike Davis
      Mihai Draghicioiu
      Mark Ellzey
      Shie Erlich
      Leonid Evdokimov
      Christophe Fillot
      Alexander von Gernler
      Artur Grabowski
      Dave Hart
      Greg Hazel
      Michael Herf
      Sebastian Hahn
      Aaron Hopkins
      Tani Hosokawa
      Claudio Jeker
      Evan Jones
      George Kadianakis
      Phua Keat
      Kevin Ko
      Brian Koehmstedt
      Marko Kreen
      Valery Kyholodov
      Scott Lamb
      Christopher Layne
      Adam Langley
      Philip Lewis
      Zhou Li
      David Libenzi
      Yan Lin
      Moshe Litvin
      Mitchell Livingston
      Hagne Mahre
      Lubomir Marinov
      Abilio Marques
      Nick Mathewson
      James Mansion
      Nicholas Marriott
      Andrey Matveev
      Caitlin Mercer
      Dagobert Michelsen
      Mansour Moufid
      Felix Nawothnig
      Trond Norbye
      Linus Nordberg
      Richard Nyberg
      Jon Oberheide
      Phil Oleson
      Dave Pacheco
      Tassilo von Parseval
      Simon Perreault
      Pierre Phaneuf
      Ryan Phillips
      Dimitre Piskyulev
      Pavel Plesov
      Jon Poland
      Robert Ransom
      Bert JW Regeer
      Peter Rosin
      Hanna Schroeter
      Ralf Schmitt
      Mike Smellie
      Kevin Springborn
      Harlan Stenn
      Ferenc Szalai
      Dug Song
      Dongsheng Song
      Brodie Thiesfield
      Jason Toffaletti
      Bas Verhoeven
      Constantine Verutin
      Zack Weinberg
      Jardel Weyrich
      Alex
      Taral
      propanbutan
      mmadia
    
    If we have forgotten your name, please contact us.