]> granicus.if.org Git - libevent/commitdiff
Merge remote-tracking branch 'origin/patches-2.0'
authorNick Mathewson <nickm@torproject.org>
Tue, 1 May 2012 01:33:56 +0000 (21:33 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 1 May 2012 01:33:56 +0000 (21:33 -0400)
Conflicts:
bufferevent_openssl.c

1  2 
bufferevent_openssl.c

index 5f9898129694aaab67a5bb8edd73821b49ecb200,bdc363e5de43cd4ac2cc6e6bdeb8108cd8ce9374..33f7d3799bf179f2ffebfc25dbc85aac8d314d3b
@@@ -803,6 -800,15 +803,15 @@@ consider_reading(struct bufferevent_ope
                        n_to_read = bytes_to_read(bev_ssl);
        }
  
 -                      _bufferevent_run_readcb(bev);
+       if (read_data == 1) {
+               struct bufferevent *bev = &bev_ssl->bev.bev;
+               struct evbuffer *input = bev->input;
+               if (evbuffer_get_length(input) >= bev->wm_read.low) {
++                      bufferevent_run_readcb_(bev);
+               }
+       }
        if (!bev_ssl->underlying) {
                /* Should be redundant, but let's avoid busy-looping */
                if (bev_ssl->bev.read_suspended ||
@@@ -824,6 -830,14 +833,14 @@@ consider_writing(struct bufferevent_ope
                r = do_read(bev_ssl, 1024); /* XXXX 1024 is a hack */
                if (r <= 0)
                        break;
 -                              _bufferevent_run_readcb(bev);
+               else {
+                       struct bufferevent *bev = &bev_ssl->bev.bev;
+                       struct evbuffer *input = bev->input;
+                       if (evbuffer_get_length(input) >= bev->wm_read.low) {
++                              bufferevent_run_readcb_(bev);
+                       }
+               }
        }
        if (bev_ssl->read_blocked_on_write)
                return;