Software /
code /
prosody
Annotate
util/random.lua @ 9994:524b8cd76780 0.11
net.server_epoll: Restore wantread flag after pause (fixes #1354)
If a chunk of data has been received that is larger than the amount read
at a time, then the connection is paused for a short time after which it
tries to read some more. If, after that, there is still more data to
read, it should do the same thing. However, because the "want read" flag
is removed and was restored after the delayed reading, it would not
schedule another delayed read.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 04 May 2019 04:23:35 +0200 |
parent | 8243:292f61d9d30a |
child | 10014:5d2f7144fa12 |
rev | line source |
---|---|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- Prosody IM |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2014 Matthew Wild |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2014 Waqas Hussain |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 -- |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 -- This project is MIT/X11 licensed. Please see the |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 -- COPYING file in the source package for more information. |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 -- |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
7187
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
9 local ok, crand = pcall(require, "util.crand"); |
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
10 if ok then return crand; end |
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
11 |
7114
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
12 local urandom, urandom_err = io.open("/dev/urandom", "r"); |
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local function bytes(n) |
7050 | 15 return urandom:read(n); |
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 end |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
7114
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
18 if not urandom then |
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
19 function bytes() |
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
20 error("Unable to obtain a secure random number generator, please see https://prosody.im/doc/random ("..urandom_err..")"); |
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
21 end |
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
22 end |
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
23 |
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 return { |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 bytes = bytes; |
8242
177873dc9cf3
util.random: Add a _source field to match util.crand
Kim Alvefur <zash@zash.se>
parents:
7187
diff
changeset
|
26 _source = "/dev/urandom"; |
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 }; |