kgio 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/.manifest +11 -2
- data/.wrongdoc.yml +4 -0
- data/ChangeLog +810 -531
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +4 -147
- data/LATEST +25 -0
- data/NEWS +49 -9
- data/README +2 -2
- data/Rakefile +2 -2
- data/ext/kgio/accept.c +64 -20
- data/ext/kgio/{missing/ancient_ruby.h → ancient_ruby.h} +0 -0
- data/ext/kgio/autopush.c +203 -0
- data/ext/kgio/connect.c +29 -14
- data/ext/kgio/extconf.rb +13 -2
- data/ext/kgio/kgio.h +7 -1
- data/ext/kgio/kgio_ext.c +1 -0
- data/ext/kgio/{missing/accept4.h → missing_accept4.h} +0 -0
- data/ext/kgio/read_write.c +58 -3
- data/kgio.gemspec +2 -1
- data/pkg.mk +168 -0
- data/test/lib_read_write.rb +10 -2
- data/test/test_autopush.rb +165 -0
- data/test/test_kgio_addr.rb +19 -0
- data/test/test_no_dns_on_tcp_connect.rb +13 -0
- data/test/test_singleton_read_write.rb +21 -0
- data/test/test_tcp6_client_read_server_write.rb +23 -0
- metadata +41 -12
data/ChangeLog
CHANGED
@@ -1,532 +1,811 @@
|
|
1
|
-
ChangeLog from
|
1
|
+
ChangeLog from http://bogomips.org/kgio.git
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
3
|
+
commit 75a7da2bd757617995f5492df1205e4a3459618b
|
4
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
5
|
+
Date: Thu Feb 3 18:46:21 2011 -0800
|
6
|
+
|
7
|
+
kgio 2.2.0 - kinder, gentler I/O for the Internets
|
8
|
+
|
9
|
+
* sockets accept()ed by a TCP_NOPUSH/TCP_CORK listener
|
10
|
+
automatically flush on kgio_*read calls if there is pending
|
11
|
+
data. "Kgio.autopush = false" disables this globally,
|
12
|
+
and Kgio::Socket also get "kgio_autopush=" to enable/disable
|
13
|
+
on a per-object individual basis.
|
14
|
+
|
15
|
+
* ECONNRESET exceptions get empty backtraces for kgio_*read.
|
16
|
+
There's nothing a programmer can do about these, so there's
|
17
|
+
no point in going through the expensive backtrace generation
|
18
|
+
process.
|
19
|
+
|
20
|
+
* Kgio.try* singleton methods added for working with non-Kgio
|
21
|
+
enhanced objects. No more needing to use Object#extend
|
22
|
+
and blowing away your method cache to make existing I/O
|
23
|
+
objects kinder and gentler.
|
24
|
+
|
25
|
+
* IPv6 support should be complete, systems without a native
|
26
|
+
getaddrinfo(3) are now unsupported (and will remain so
|
27
|
+
unless somebody complains).
|
28
|
+
|
29
|
+
There should be no other backwards-incompatible changes other
|
30
|
+
than requiring getaddrinfo(3) and friends for IPv6 support.
|
31
|
+
|
32
|
+
commit c8fb5aa33262a455997ff6a57659a8d125f36d66
|
33
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
34
|
+
Date: Thu Feb 3 14:28:11 2011 -0800
|
35
|
+
|
36
|
+
add SocketMethods#kgio_addr!
|
37
|
+
|
38
|
+
This refreshes (or sets) the @kgio_addr ivar for sockets
|
39
|
+
that didn't go through kgio_accept or kgio_tryaccept.
|
40
|
+
|
41
|
+
commit cff0dd2f73acc73f721b2a589af9e37baedd2489
|
42
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
43
|
+
Date: Wed Feb 2 13:56:31 2011 -0800
|
44
|
+
|
45
|
+
fix typos in ipv6 test case
|
46
|
+
|
47
|
+
Oops, RTFE :P
|
48
|
+
|
49
|
+
commit 17abe6ce8f01810022b948c71de0026b4ac89597
|
50
|
+
Author: Eric Wong <e@yhbt.net>
|
51
|
+
Date: Wed Feb 2 21:33:28 2011 +0000
|
52
|
+
|
53
|
+
add proper IPv6 support
|
54
|
+
|
55
|
+
No extra #ifdefs, we just won't support old systems without
|
56
|
+
getaddrinfo() and friends anymore. I doubt anybody still has
|
57
|
+
them...
|
58
|
+
|
59
|
+
commit 879f2f0ee9133f34ec3e24141bdb4936e3408d3a
|
60
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
61
|
+
Date: Tue Feb 1 14:00:07 2011 -0800
|
62
|
+
|
63
|
+
avoid re-interning if GCC is not used (or under 1.8)
|
64
|
+
|
65
|
+
Needless calls to rb_intern are wasteful in even semi-frequently
|
66
|
+
used code.
|
67
|
+
|
68
|
+
commit 499f158c74b7c455dca08fc30be88cb699ee24c6
|
69
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
70
|
+
Date: Tue Feb 1 13:58:20 2011 -0800
|
71
|
+
|
72
|
+
kgio_*read: empty backtrace for ECONNRESET
|
73
|
+
|
74
|
+
There's nothing a programmer can do about ECONNRESET
|
75
|
+
so just make the exception cheaper to raise so it
|
76
|
+
can still be logged.
|
77
|
+
|
78
|
+
commit 36f69750cd69cbf892580da04be6675e23d92f6f
|
79
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
80
|
+
Date: Mon Jan 31 18:39:31 2011 -0800
|
81
|
+
|
82
|
+
add singleton methods for non-Kgio objects
|
83
|
+
|
84
|
+
This allows people to more easily use Kgio in existing apps.
|
85
|
+
|
86
|
+
commit 37e50a9a5fcd45242373379c0dc61ebf8ff609af
|
87
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
88
|
+
Date: Mon Jan 31 18:27:24 2011 -0800
|
89
|
+
|
90
|
+
autopush: enable accessors for client sockets
|
91
|
+
|
92
|
+
Might as well allow clients to efficiently handle
|
93
|
+
TCP_CORK/TCP_NOPUSH, too.
|
94
|
+
|
95
|
+
commit d4773fc63a847119004c17a1b8803a815f99d98a
|
96
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
97
|
+
Date: Mon Jan 31 17:34:07 2011 -0800
|
98
|
+
|
99
|
+
autopush: enable this by default
|
100
|
+
|
101
|
+
TCP_CORK (and presuably TCP_NOPUSH) aren't remotely useful in
|
102
|
+
Rainbows! without this and there's almost no overhead for MRI,
|
103
|
+
either.
|
104
|
+
|
105
|
+
commit 8a1fc65c88dee174940735bb46074c72ac47ce61
|
106
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
107
|
+
Date: Mon Jan 31 17:05:48 2011 -0800
|
108
|
+
|
109
|
+
autopush: optimize away ivar usage under MRI
|
110
|
+
|
111
|
+
We know that all versions of MRI have a small RFile structure
|
112
|
+
that is allocated in the same object slots as other Ruby types
|
113
|
+
and also zeroed on allocation.
|
114
|
+
|
115
|
+
This optimization enables us to fall back to using ivars in
|
116
|
+
case MRI changes or if we're used on other Rubies.
|
117
|
+
|
118
|
+
commit 6479b6d3934b8930910e0057f516aa019dd7a8c7
|
119
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
120
|
+
Date: Mon Jan 31 15:18:33 2011 -0800
|
121
|
+
|
122
|
+
autopush: enable for TCP_NOPUSH under FreeBSD
|
123
|
+
|
124
|
+
Hopefully it works for people who use TCP_NOPUSH...
|
125
|
+
|
126
|
+
commit 15744a90cda72e9007914cd2a78b0b2949193479
|
127
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
128
|
+
Date: Mon Jan 31 13:58:53 2011 -0800
|
129
|
+
|
130
|
+
autopush: simplify implementation and just use ivars
|
131
|
+
|
132
|
+
Duh...
|
133
|
+
|
134
|
+
commit 313d2bb8d37dbc5602e464def90b3e7fa9f60924
|
135
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
136
|
+
Date: Mon Jan 31 13:03:02 2011 -0800
|
137
|
+
|
138
|
+
rename nopush_smart to autopush
|
139
|
+
|
140
|
+
This is probably a better name for it, libautocork is a nice
|
141
|
+
name even though we won't use it directly.
|
142
|
+
|
143
|
+
commit 910f6f3df099c04fcd55bd6b20785cce69cb36ae
|
144
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
145
|
+
Date: Thu Jan 27 19:43:39 2011 -0800
|
146
|
+
|
147
|
+
preliminary implementation of "smart_nopush"
|
148
|
+
|
149
|
+
It only supports TCP_CORK under Linux right now.
|
150
|
+
|
151
|
+
We use a very basic strategy to use TCP_CORK semantics optimally
|
152
|
+
in most TCP servers: On corked sockets, we will uncork on recv()
|
153
|
+
if there was a previous send(). Otherwise we do not fiddle
|
154
|
+
with TCP_CORK at all.
|
155
|
+
|
156
|
+
Under Linux, we can rely on TCP_CORK being inherited in an
|
157
|
+
accept()-ed client socket so we can avoid syscalls for each
|
158
|
+
accept()-ed client if we already know the accept() socket corks.
|
159
|
+
|
160
|
+
This module does NOTHING for client TCP sockets, we only deal
|
161
|
+
with accept()-ed sockets right now.
|
162
|
+
|
163
|
+
commit ec91ac3d8c8d9236ba0cd01794c9c4a3ee3f7eeb
|
164
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
165
|
+
Date: Thu Jan 27 14:11:16 2011 -0800
|
166
|
+
|
167
|
+
revamp packaging makefile, update URLs
|
168
|
+
|
169
|
+
More common code that's still GNU make is better for my
|
170
|
+
sanity. Also, bogomips.org went on a URL diet recently.
|
171
|
+
|
172
|
+
commit f6c79438ed195bb706903d104cce850bfbfbac41
|
173
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
174
|
+
Date: Tue Jan 18 15:52:25 2011 -0800
|
175
|
+
|
176
|
+
add tests for empty writes, too
|
177
|
+
|
178
|
+
There could be some platforms that dislike it...
|
179
|
+
|
180
|
+
commit 9c81cc3fd8d2b3dce68d69d8e0c56a4c5d89ebf0
|
181
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
182
|
+
Date: Thu Jan 13 14:46:02 2011 -0800
|
183
|
+
|
184
|
+
Makefile: remove non-existent target reference
|
185
|
+
|
186
|
+
Oops
|
187
|
+
|
188
|
+
commit fb8104e1f2a5d1cdcb99a19b6a4bdabf0b1c2643
|
189
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
190
|
+
Date: Sat Dec 25 18:06:47 2010 -0800
|
191
|
+
|
192
|
+
kgio 2.1.1 - one small Rubinius fix
|
193
|
+
|
194
|
+
We now avoid errno side-effects in kgio_wait_*able methods.
|
195
|
+
This affects Rubinius, but may affect other Ruby platforms
|
196
|
+
(particularly those that use stdio) as well.
|
197
|
+
|
198
|
+
commit 6ab4331f8137e949ab57f014f96ff3918a315044
|
199
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
200
|
+
Date: Sat Dec 25 18:02:16 2010 -0800
|
201
|
+
|
202
|
+
avoid errno side-effects in kgio_wait_*able
|
203
|
+
|
204
|
+
Retrieving the file descriptor may have side-effects on
|
205
|
+
certain Ruby implementations (e.g. Rubinius), so ensure
|
206
|
+
our errno is preserved before calling rb_io_wait_*able().
|
207
|
+
|
208
|
+
commit 3a0323b642ee054319a5e64ffe28e089bbd013e4
|
209
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
210
|
+
Date: Sun Dec 26 01:08:58 2010 +0000
|
211
|
+
|
212
|
+
gemspec: point folks to the public mailing list
|
213
|
+
|
214
|
+
It's more useful that way.
|
215
|
+
|
216
|
+
commit 9d5c9e6c9975cb5c10e7384aed9ed22ae0ee57c8
|
217
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
218
|
+
Date: Sun Dec 26 01:02:00 2010 +0000
|
219
|
+
|
220
|
+
kgio 2.1.0 - accept improvements and fixes
|
221
|
+
|
222
|
+
kgio_accept and kgio_tryaccept now take an optional argument
|
223
|
+
to override the default Kgio::Socket class that is returned.
|
224
|
+
|
225
|
+
These methods also fall back to using regular accept() if
|
226
|
+
kgio was built on a system with accept4() and later run on
|
227
|
+
a system without accept4().
|
228
|
+
|
229
|
+
commit dcd5eff7dd5d5861b67667f48424979be9bcabc8
|
230
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
231
|
+
Date: Sun Dec 26 00:21:25 2010 +0000
|
232
|
+
|
233
|
+
quiet down some harmless compiler warnings
|
234
|
+
|
235
|
+
Less noise means we'll notice real bugs sooner.
|
236
|
+
|
237
|
+
commit 5280f35f131d88f90afffff0e10f7900530728aa
|
238
|
+
Author: Eric Wong <e@yhbt.net>
|
239
|
+
Date: Sat Dec 25 23:00:05 2010 +0000
|
240
|
+
|
241
|
+
accept4: fall back to regular accept() on ENOSYS
|
242
|
+
|
243
|
+
kgio may occasionally be built on a system with accept4()
|
244
|
+
and then deployed on one without it. Handle this case
|
245
|
+
gracefully since it unfortunately happens on production systems.
|
246
|
+
|
247
|
+
commit b859c4a12905cbd71d19cde2aaa9f88ec0374cc5
|
248
|
+
Author: Eric Wong <e@yhbt.net>
|
249
|
+
Date: Sat Dec 25 22:44:53 2010 +0000
|
250
|
+
|
251
|
+
accept methods may take an optional argument
|
252
|
+
|
253
|
+
This is preferred as we no longer have to rely on a global
|
254
|
+
constant.
|
255
|
+
|
256
|
+
commit ef069ece624906b3946248421620d8458bcef605
|
257
|
+
Author: Eric Wong <e@yhbt.net>
|
258
|
+
Date: Fri Dec 24 09:21:19 2010 +0000
|
259
|
+
|
260
|
+
Rakefile: fix RAA license
|
261
|
+
|
262
|
+
Oops, we were never Ruby licensed.
|
263
|
+
|
264
|
+
commit 472240687caf3f113a3ff408729f8205c475d7d5
|
265
|
+
Author: Eric Wong <e@yhbt.net>
|
266
|
+
Date: Fri Dec 24 09:20:40 2010 +0000
|
267
|
+
|
268
|
+
doc: use wrongdoc for documentation
|
269
|
+
|
270
|
+
wrongdoc factors out a bunch of common code from this
|
271
|
+
project into its own and removes JavaScript from RDoc
|
272
|
+
to boot.
|
273
|
+
|
274
|
+
commit 64bbc95d2192fb621b763c1c4d1ae32940c1a5ac
|
275
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
276
|
+
Date: Wed Dec 22 12:12:18 2010 -0800
|
277
|
+
|
278
|
+
fix errors in RDoc
|
279
|
+
|
280
|
+
Noticed-by: Iñaki Baz Castillo
|
281
|
+
|
282
|
+
commit f093312ad1ed336363f352991b6b99d96f7aed1d
|
283
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
284
|
+
Date: Thu Nov 18 17:16:53 2010 -0800
|
285
|
+
|
286
|
+
kgio 2.0.0 - major internal API changes
|
287
|
+
|
288
|
+
(no code changes from 2.0.0pre1)
|
289
|
+
|
290
|
+
This release should make Kgio easier and more consistent
|
291
|
+
to use across a variety of libraries/applications.
|
292
|
+
|
293
|
+
The global Kgio.wait_*able(=) accessor methods are gone in favor
|
294
|
+
of having default kgio_wait_readable and kgio_wait_writable
|
295
|
+
methods added to all Kgio-using classes. Sub-classes may (and
|
296
|
+
are encouraged to) redefine these if needed.
|
297
|
+
|
298
|
+
Eric Wong (7):
|
299
|
+
expand Kgio::*#kgio_read! documentation
|
300
|
+
prefer symbolic names for waiting read/writability
|
301
|
+
EOFError message matches Ruby's
|
302
|
+
README: Gemcutter => RubyGems.org
|
303
|
+
update documentation with mailing list info
|
304
|
+
add default kgio_wait_*able methods
|
305
|
+
switch entirely to kgio_wait_*able methods
|
306
|
+
|
307
|
+
commit edfa7e60de5556b6abc9febe6a21e12dadbafd0b
|
308
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
309
|
+
Date: Thu Nov 18 15:42:27 2010 -0800
|
310
|
+
|
311
|
+
Rakefile: list prerelease tags as well
|
312
|
+
|
313
|
+
Since we do prerelease nowadays before real ones.
|
314
|
+
|
315
|
+
commit d78a2075bdb0a30bf0064d2857011c330cc0d09e
|
316
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
317
|
+
Date: Thu Nov 18 15:38:12 2010 -0800
|
318
|
+
|
319
|
+
move website to bogomips.org
|
320
|
+
|
321
|
+
This project is useful enough for others and to stand alone
|
322
|
+
without needing to be associated with Unicorn.
|
323
|
+
|
324
|
+
commit 28070c522aff233eadb7e167f8d4e8122cd0bb47
|
325
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
326
|
+
Date: Thu Nov 18 15:15:40 2010 -0800
|
327
|
+
|
328
|
+
kgio 2.0.0pre1 - major internal API changes
|
329
|
+
|
330
|
+
This release should make Kgio easier and more consistent
|
331
|
+
to use across a variety of libraries/applications.
|
332
|
+
|
333
|
+
The global Kgio.wait_*able(=) accessor methods are gone in favor
|
334
|
+
of having default kgio_wait_readable and kgio_wait_writable
|
335
|
+
methods added to all Kgio-using classes. Sub-classes may (and
|
336
|
+
are encouraged to) redefine these if needed.
|
337
|
+
|
338
|
+
Eric Wong (7):
|
339
|
+
expand Kgio::*#kgio_read! documentation
|
340
|
+
prefer symbolic names for waiting read/writability
|
341
|
+
EOFError message matches Ruby's
|
342
|
+
README: Gemcutter => RubyGems.org
|
343
|
+
update documentation with mailing list info
|
344
|
+
add default kgio_wait_*able methods
|
345
|
+
switch entirely to kgio_wait_*able methods
|
346
|
+
|
347
|
+
commit c69955e64648ab6a3471a54f7885a320428682f9
|
348
|
+
Author: Eric Wong <e@yhbt.net>
|
349
|
+
Date: Thu Nov 18 14:37:05 2010 -0800
|
350
|
+
|
351
|
+
switch entirely to kgio_wait_*able methods
|
352
|
+
|
353
|
+
This removes the global Kgio.wait_*able accesors and requires
|
354
|
+
each class to define (or fall back to) the Kgio::DefaultWaiters
|
355
|
+
methods.
|
356
|
+
|
357
|
+
commit f1b497e601ed2acb54f75dc989d0a5ec7afebca0
|
358
|
+
Author: Eric Wong <e@yhbt.net>
|
359
|
+
Date: Thu Nov 18 13:38:32 2010 -0800
|
360
|
+
|
361
|
+
add default kgio_wait_*able methods
|
362
|
+
|
363
|
+
It makes it easier for people to use certain overrides without
|
364
|
+
killing other methods. This is the first step in fixing
|
365
|
+
problems people were having with dalli 0.11.1+ while running
|
366
|
+
Unicorn.
|
367
|
+
|
368
|
+
commit 827ad6b4fba768a5cac8fb4e83fbbf61cf7a3194
|
369
|
+
Author: Eric Wong <e@yhbt.net>
|
370
|
+
Date: Mon Nov 15 10:33:55 2010 -0800
|
371
|
+
|
372
|
+
update documentation with mailing list info
|
373
|
+
|
374
|
+
We're a real project, apparently, so it can have its
|
375
|
+
own mailing list.
|
376
|
+
|
377
|
+
commit fd88eae588c1e715dcaf3a1a000391cc13481e02
|
378
|
+
Author: Eric Wong <e@yhbt.net>
|
379
|
+
Date: Mon Nov 15 10:22:49 2010 -0800
|
380
|
+
|
381
|
+
README: Gemcutter => RubyGems.org
|
382
|
+
|
383
|
+
That's the new name for it and it's official
|
384
|
+
|
385
|
+
commit 8615a3f9554df0fd7f7f088cd49cf1e3be49de9f
|
386
|
+
Author: Eric Wong <e@yhbt.net>
|
387
|
+
Date: Fri Nov 12 20:25:50 2010 -0800
|
388
|
+
|
389
|
+
EOFError message matches Ruby's
|
390
|
+
|
391
|
+
This makes messages appear less different than Ruby
|
392
|
+
when using kgio_read!
|
393
|
+
|
394
|
+
Requested-by: Mike Perham
|
395
|
+
|
396
|
+
commit 2772ed8bfe108b66b7493bc5cb0c40ddeb1ca57d
|
397
|
+
Author: Eric Wong <e@yhbt.net>
|
398
|
+
Date: Fri Nov 5 09:01:08 2010 +0800
|
399
|
+
|
400
|
+
prefer symbolic names for waiting read/writability
|
401
|
+
|
402
|
+
There's no point in using constants that point to symbols
|
403
|
+
instead of just the symbols themselves.
|
404
|
+
|
405
|
+
commit bf3b507791403811bece9dff915ca10757bca519
|
406
|
+
Author: Eric Wong <e@yhbt.net>
|
407
|
+
Date: Thu Oct 28 21:02:31 2010 +0000
|
408
|
+
|
409
|
+
expand Kgio::*#kgio_read! documentation
|
410
|
+
|
411
|
+
If the author can forget why it was written, so can
|
412
|
+
the rest of the world.
|
413
|
+
|
414
|
+
commit f4d08a07a02393cca5ddd1277acc4f95c83307ff
|
415
|
+
Author: Eric Wong <e@yhbt.net>
|
416
|
+
Date: Fri Oct 8 14:55:16 2010 -0700
|
417
|
+
|
418
|
+
kgio 1.3.1 - fix zero-length reads
|
419
|
+
|
420
|
+
kgio_read and kgio_tryread will now return an empty string when
|
421
|
+
a length of zero is specified instead of nil (which would signal
|
422
|
+
an EOF). This emulates the behavior of IO#read, IO#readpartial,
|
423
|
+
IO#sysread, IO#read_nonblock in core Ruby for consistency.
|
424
|
+
|
425
|
+
commit d225ede82d820d045bd7cfb826f444cf6601577c
|
426
|
+
Author: Eric Wong <normalperson@yhbt.net>
|
427
|
+
Date: Fri Oct 8 02:53:38 2010 -0700
|
428
|
+
|
429
|
+
return empty string on length=0
|
430
|
+
|
431
|
+
This matches behavior of all the core Ruby methods.
|
432
|
+
|
433
|
+
commit e4599227f0da0f652cbcb52838e631d7384dcd0d
|
434
|
+
Author: Eric Wong <e@yhbt.net>
|
435
|
+
Date: Thu Oct 7 20:02:40 2010 -0700
|
436
|
+
|
437
|
+
kgio 1.3.0 - bug and usability fixes
|
438
|
+
|
439
|
+
* make Kgio::WaitWritable and Kgio::WaitReadable symbols
|
440
|
+
* trywrite: fix stupid off-by-one error causing corrupt writes
|
441
|
+
on retries
|
442
|
+
|
443
|
+
commit f5fc35221d37141b0f72278c7b969211410e94c0
|
444
|
+
Author: Eric Wong <e@yhbt.net>
|
445
|
+
Date: Thu Oct 7 20:00:09 2010 -0700
|
446
|
+
|
447
|
+
tests: don't trust what I think I know about Ruby
|
448
|
+
|
449
|
+
case/when and === didn't actually work as I expected
|
450
|
+
them to.
|
451
|
+
|
452
|
+
commit 2152188f41bf2a5067e84a4404b48b2282a9dd55
|
453
|
+
Author: Eric Wong <e@yhbt.net>
|
454
|
+
Date: Thu Oct 7 19:56:57 2010 -0700
|
455
|
+
|
456
|
+
trywrite: fix stupid off-by-one error causing corrupt writes
|
457
|
+
|
458
|
+
Oops!
|
459
|
+
|
460
|
+
commit c448ad898ecb7f354a32a320294da4727fc9af52
|
461
|
+
Author: Eric Wong <e@yhbt.net>
|
462
|
+
Date: Thu Oct 7 19:55:49 2010 -0700
|
463
|
+
|
464
|
+
make WaitWritable and WaitReadable symbols
|
465
|
+
|
466
|
+
This makes them easier to compare with === when used
|
467
|
+
in case/when statements in Ruby
|
468
|
+
|
469
|
+
commit 49f0b98c69f1f0bf637953d0bfc96b764f00ab9b
|
470
|
+
Author: Eric Wong <e@yhbt.net>
|
471
|
+
Date: Thu Oct 7 07:15:49 2010 +0000
|
472
|
+
|
473
|
+
kgio 1.2.1 - doc and *BSD workarounds
|
474
|
+
|
475
|
+
This fixes our accept4() wrapper which did not work as expected
|
476
|
+
on some *BSD-based systems due to fcntl(fd, F_GETFL) returning
|
477
|
+
false information. Linux 2.6+ users are unnaffected, including
|
478
|
+
those without accept4().
|
479
|
+
|
480
|
+
Also some RDoc fixes.
|
481
|
+
|
482
|
+
commit 03344bb763f5269afe7fafd56a47270719c7ef9e
|
483
|
+
Author: Eric Wong <e@yhbt.net>
|
484
|
+
Date: Thu Oct 7 07:14:07 2010 +0000
|
485
|
+
|
486
|
+
doc: fix RDoc generation
|
487
|
+
|
488
|
+
Oops, completely broken by the splitting of the code.
|
489
|
+
|
490
|
+
commit 637317eb479525dca543eda7a8977410bc43b832
|
491
|
+
Author: Eric Wong <e+07380@yhbt.net>
|
492
|
+
Date: Wed Oct 6 14:08:35 2010 -0700
|
493
|
+
|
494
|
+
accept4: workaround (P)OS X bug w/O_NONBLOCK
|
495
|
+
|
496
|
+
Apparently fcntl(fd, F_GETFL) can return falsely return the
|
497
|
+
O_NONBLOCK flag without actually having it set in the kernel.
|
498
|
+
This is totally broken on the part of the OS.
|
499
|
+
|
500
|
+
commit ca76c75f8a24d0cd6828fe16ca3790a277b35f8d
|
501
|
+
Author: Eric Wong <e+07380@yhbt.net>
|
502
|
+
Date: Wed Oct 6 14:06:27 2010 -0700
|
503
|
+
|
504
|
+
build: pick on on modified extension files
|
505
|
+
|
506
|
+
We build more than one file nowadays.
|
507
|
+
|
508
|
+
commit 65f96b7750616bc210397c16eea40961e578a788
|
509
|
+
Author: Eric Wong <e@yhbt.net>
|
510
|
+
Date: Wed Oct 6 11:51:04 2010 -0700
|
511
|
+
|
512
|
+
doc: fix typo in Kgio.accept_cloexec= doc
|
513
|
+
|
514
|
+
oops...
|
515
|
+
|
516
|
+
commit 414dd17f1009c571e2d7657721271756e3d4dd8e
|
517
|
+
Author: Eric Wong <e@yhbt.net>
|
518
|
+
Date: Tue Oct 5 16:09:40 2010 -0700
|
519
|
+
|
520
|
+
kgio 1.2.0 - cleanups and minor improvements
|
521
|
+
|
522
|
+
The C extension is now split into several files for
|
523
|
+
ease-of-maintenance.
|
524
|
+
|
525
|
+
Slightly more common, client-triggerable exceptions (EOFError,
|
526
|
+
Errno::EPIPE, Errno::ECONNRESET) are now less expensive as they
|
527
|
+
are generated without backtraces.
|
528
|
+
|
529
|
+
commit e085bb9600b190692beb5efc85656ebf127ae08c
|
530
|
+
Author: Eric Wong <e@yhbt.net>
|
531
|
+
Date: Tue Oct 5 15:45:16 2010 -0700
|
532
|
+
|
533
|
+
generate empty backtraces for EPIPE and ECONNRESET
|
534
|
+
|
535
|
+
Malicious clients may disconnect during big writes to cause
|
536
|
+
EPIPE and ECONNRESET exceptions. Generating backtraces can be
|
537
|
+
expensive with Ruby, so mitigate the DoS vector by lowering the
|
538
|
+
cost of generating an exception.
|
539
|
+
|
540
|
+
commit b168cc894037620cab82fa82f3ab37a3aab81570
|
541
|
+
Author: Eric Wong <e@yhbt.net>
|
542
|
+
Date: Tue Oct 5 15:26:57 2010 -0700
|
543
|
+
|
544
|
+
add kgio_read! methods which may raise EOFError
|
545
|
+
|
546
|
+
Except EOFError is gently raised to not include a huge
|
547
|
+
backtrace. Large backtraces can be a performance problem on
|
548
|
+
busy servers that malicious clients may exploit to deny service.
|
549
|
+
|
550
|
+
commit 870ada92db7071c7982913e508ac35b97d6e8761
|
551
|
+
Author: Eric Wong <e@yhbt.net>
|
552
|
+
Date: Tue Oct 5 11:45:02 2010 -0700
|
553
|
+
|
554
|
+
GNUmakefile: use portable tar invocation
|
555
|
+
|
556
|
+
We've been spoiled by GNU tar.
|
557
|
+
|
558
|
+
commit 2a6115a89d5c95428bd6c3e0bc10e5a3a4c3c3be
|
559
|
+
Author: Eric Wong <e@yhbt.net>
|
560
|
+
Date: Wed Sep 29 18:25:58 2010 -0700
|
561
|
+
|
562
|
+
refactor and split into separate files
|
563
|
+
|
564
|
+
Making the code easier to read and navigate. This also
|
565
|
+
frees us from having to use the stupid A4_ prefix for
|
566
|
+
accept4(2) flags since it conflicts with the socket(2)
|
567
|
+
ones.
|
568
|
+
|
569
|
+
commit 8fe89997453d6c530c3f5e08bc9c1da40a621248
|
570
|
+
Author: Eric Wong <e@yhbt.net>
|
571
|
+
Date: Wed Sep 29 17:13:21 2010 -0700
|
572
|
+
|
573
|
+
Make kgio_trywrite more aggressive with retrying
|
574
|
+
|
575
|
+
Partial writes can be retried until completely denied with
|
576
|
+
EAGAIN. Often times, it is beneficial to retry immediately
|
577
|
+
after a partial write because the kernel may allocate more
|
578
|
+
buffers or the reader can drain the buffers.
|
579
|
+
|
580
|
+
This helps the caller avoid crossing the Ruby <-> C boundary
|
581
|
+
more than necessary.
|
582
|
+
|
583
|
+
commit 39c851e595970a2349a8a39878afd94a3324e102
|
584
|
+
Author: Eric Wong <e@yhbt.net>
|
585
|
+
Date: Tue Sep 28 18:16:53 2010 -0700
|
586
|
+
|
587
|
+
kgio 1.1.0 - flexible accept methods
|
588
|
+
|
589
|
+
* an alternate class now be returned by accept/tryaccept
|
590
|
+
by setting "Kgio.accept_class ="
|
591
|
+
|
592
|
+
commit 911f6ab306aff1e24c9c570eeae33923fa1b99d9
|
593
|
+
Author: Eric Wong <e@yhbt.net>
|
594
|
+
Date: Tue Sep 28 18:04:51 2010 -0700
|
595
|
+
|
596
|
+
alternate classes may be returned by accept/tryaccept
|
597
|
+
|
598
|
+
These can be useful for avoiding wrapper objects and
|
599
|
+
also allows users to more easily try different things
|
600
|
+
without stepping on others' toe^H^H^Hclasses.
|
601
|
+
|
602
|
+
commit 526b4bd48a20a34ef5959fdc4aa580d5f9199652
|
603
|
+
Author: Eric Wong <e@yhbt.net>
|
604
|
+
Date: Mon Sep 27 19:59:34 2010 -0700
|
605
|
+
|
606
|
+
kgio 1.0.1 - compatibility fixes
|
607
|
+
|
608
|
+
* add compatibility for ancient Rubies (1.8.6)
|
609
|
+
* linux: fix accept4() support for newer Linux
|
610
|
+
|
611
|
+
commit 20cbc0355104470fb433dd13e87a5d5c7e888ab1
|
612
|
+
Author: Eric Wong <e@yhbt.net>
|
613
|
+
Date: Tue Sep 28 02:56:41 2010 +0000
|
614
|
+
|
615
|
+
linux: fix accept4() support for newer Linux
|
616
|
+
|
617
|
+
Oops :x Tested on Debian sid.
|
618
|
+
|
619
|
+
commit 24f1d168eb0937f0586c45b266bcd208431f0107
|
620
|
+
Author: Eric Wong <e@yhbt.net>
|
621
|
+
Date: Mon Sep 27 18:06:34 2010 -0700
|
622
|
+
|
623
|
+
add compatibility for ancient Rubies
|
624
|
+
|
625
|
+
This is tested on Ruby 1.8.6-p114, but may work
|
626
|
+
for 1.8.5, too. Ugh, people ought to upgrade.
|
627
|
+
|
628
|
+
commit e4d204c86e9420023ba3e4d8dbeb6b3fea8d6cf7
|
629
|
+
Author: Eric Wong <e@yhbt.net>
|
630
|
+
Date: Tue Sep 28 00:27:44 2010 +0000
|
631
|
+
|
632
|
+
kgio 1.0.0 - initial release
|
633
|
+
|
634
|
+
Documentation and release infrastructure updates
|
635
|
+
and such...
|
636
|
+
|
637
|
+
commit 8984b9556a3493570fbb4f747fce712d58f2cdd8
|
638
|
+
Author: Eric Wong <e@yhbt.net>
|
639
|
+
Date: Tue Sep 28 00:07:43 2010 +0000
|
640
|
+
|
641
|
+
doc: TODO update
|
642
|
+
|
643
|
+
commit 2c64a1fc07d3b9a80d112e3b0e2baa7ec29c2f47
|
644
|
+
Author: Eric Wong <e@yhbt.net>
|
645
|
+
Date: Tue Sep 28 00:03:39 2010 +0000
|
646
|
+
|
647
|
+
read/write: account for buffer changes during wait
|
648
|
+
|
649
|
+
It's possible for applications to modify the buffer during
|
650
|
+
reads and writes, so make a best effort to account for those.
|
651
|
+
|
652
|
+
commit f2ea9918655e8ee0576bee2950d16485031fc361
|
653
|
+
Author: Eric Wong <e@yhbt.net>
|
654
|
+
Date: Mon Sep 27 23:59:59 2010 +0000
|
655
|
+
|
656
|
+
tests: fix broken monster trywrite test
|
657
|
+
|
658
|
+
Oops, use random data so it's easier to detect this.
|
659
|
+
|
660
|
+
commit 7abc0eb3dd804c2e65660b7dd9c828df0e03b80a
|
661
|
+
Author: Eric Wong <e+absinthe@yhbt.net>
|
662
|
+
Date: Mon Sep 27 15:09:44 2010 -0700
|
663
|
+
|
664
|
+
test_tcp*read_write: use blocking kgio_accept in setup
|
665
|
+
|
666
|
+
Some OSes (FreeBSD 7.0) do not seem to setup
|
667
|
+
connections as quickly.
|
668
|
+
|
669
|
+
commit 95d2eae6a4da34c504427af6ae0ab4c8c70c0ce5
|
670
|
+
Author: Eric Wong <e+absinthe@yhbt.net>
|
671
|
+
Date: Mon Sep 27 15:09:43 2010 -0700
|
672
|
+
|
673
|
+
set blocking flag before blocking IO#read
|
674
|
+
|
675
|
+
Some older Rubies may not behave correctly otherwise
|
676
|
+
|
677
|
+
commit 0806cac89f9d0e169b6c1e4da68c1ad66daa23ae
|
678
|
+
Author: Eric Wong <e@yhbt.net>
|
679
|
+
Date: Mon Sep 27 23:16:53 2010 +0000
|
680
|
+
|
681
|
+
tess: ensure buffer is cleared on failures
|
682
|
+
|
683
|
+
No need to leak data.
|
684
|
+
|
685
|
+
commit 50b86bf23063f3e6c3777b39c9464f73ccfd6ef5
|
686
|
+
Author: Eric Wong <e@yhbt.net>
|
687
|
+
Date: Mon Sep 27 22:55:52 2010 +0000
|
688
|
+
|
689
|
+
more documentation
|
690
|
+
|
691
|
+
Somebody's gotta do it...
|
692
|
+
|
693
|
+
commit 5123d66fe0b2dad67539a20fe5b91f5b9afd814a
|
694
|
+
Author: Eric Wong <e@yhbt.net>
|
695
|
+
Date: Mon Sep 27 16:56:13 2010 +0000
|
696
|
+
|
697
|
+
avoid initiating syscalls before rb_io_wait_*
|
698
|
+
|
699
|
+
Some Ruby implementations (Rubinius) may call lseek
|
700
|
+
and clobber the intended errno when looking up the
|
701
|
+
open file, causing rb_io_wait_* functions to fail.
|
702
|
+
|
703
|
+
commit 6c818b0b6f76ef733679bcea1024142b4ef3ce00
|
704
|
+
Author: Eric Wong <e@yhbt.net>
|
705
|
+
Date: Mon Sep 27 01:13:30 2010 +0000
|
706
|
+
|
707
|
+
add kgio_tryaccept, kgio_accept _really_ blocks
|
708
|
+
|
709
|
+
We'll stick with the "try" prefix if we're going to be
|
710
|
+
non-blocking. kgio_accept will favor a blocking accept() call
|
711
|
+
where it's possible to release the GVL, allowing it to avoid
|
712
|
+
thundering herd problems. Otherwise it'll use thread-safe
|
713
|
+
blocking under Ruby 1.8.
|
714
|
+
|
715
|
+
commit f81cb3c05a0eb46ec61ceb295b51ead16e6a0da4
|
716
|
+
Author: Eric Wong <e@yhbt.net>
|
717
|
+
Date: Mon Sep 27 00:57:14 2010 +0000
|
718
|
+
|
719
|
+
use SOCK_NONBLOCK for socket(2) if possible
|
720
|
+
|
721
|
+
This saves us a relatively expensive fcntl() system call.
|
722
|
+
|
723
|
+
commit 87cf3ce6185b9138032a5af53cecae98f8c93564
|
724
|
+
Author: Eric Wong <e@yhbt.net>
|
725
|
+
Date: Mon Sep 27 00:24:50 2010 +0000
|
726
|
+
|
727
|
+
connect: no do not leak descriptors on failure
|
728
|
+
|
729
|
+
We cannot raise exceptions and expect GC to clean up
|
730
|
+
after us until we've created an actual IO object.
|
731
|
+
|
732
|
+
commit 6fbde1518578dd1b828efcecaf2caf893bddc110
|
733
|
+
Author: Eric Wong <e@yhbt.net>
|
734
|
+
Date: Mon Sep 27 00:11:43 2010 +0000
|
735
|
+
|
736
|
+
"start" singleton methods for non-blocking connect
|
737
|
+
|
738
|
+
These initiate (but do not wait for) non-blocking connects.
|
739
|
+
|
740
|
+
commit fdfecc6d815bab8dfc1d8ad6758a66d44ab51e31
|
741
|
+
Author: Eric Wong <e@yhbt.net>
|
742
|
+
Date: Sun Sep 26 07:51:12 2010 +0000
|
743
|
+
|
744
|
+
introduce kgio_try* methods
|
745
|
+
|
746
|
+
Avoid altering behavior based on globals that
|
747
|
+
Kgio.wait_{read,writ}able stored in, since that's too confusing.
|
748
|
+
The non-try variants are closer to the normal IO read/write
|
749
|
+
methods, except they can be more easily plugged into alternate
|
750
|
+
reactors and event frameworks.
|
751
|
+
|
752
|
+
commit d8ee79e1e5c6e6908009213324db25cf41c583ce
|
753
|
+
Author: Eric Wong <e@yhbt.net>
|
754
|
+
Date: Sat Sep 25 17:55:07 2010 +0000
|
755
|
+
|
756
|
+
kgio_read returns nil on EOF
|
757
|
+
|
758
|
+
Just like IO#read
|
759
|
+
|
760
|
+
commit af03e4471de3d3b91eec16e26e93a84d4a717116
|
761
|
+
Author: Eric Wong <e@yhbt.net>
|
762
|
+
Date: Sat Sep 25 17:47:13 2010 +0000
|
763
|
+
|
764
|
+
split out reusable bits into separate headers
|
765
|
+
|
766
|
+
No point in cluttering up the meat of our code.
|
767
|
+
|
768
|
+
commit db53263856d864ba6273e6cac73011f699509d71
|
769
|
+
Author: Eric Wong <e+absinthe@yhbt.net>
|
770
|
+
Date: Sat Sep 25 01:36:13 2010 -0700
|
771
|
+
|
772
|
+
only use MSG_DONTWAIT under Linux
|
773
|
+
|
774
|
+
MSG_DONTWAIT is less consistently implemented/supported on other
|
775
|
+
platforms on stream sockets, so fallback to fcntl() + read()/write()
|
776
|
+
for stream sockets. This also fixes our previously broken support
|
777
|
+
of non-MSG_DONTWAIT systems.
|
778
|
+
|
779
|
+
commit a82dc40c2a509c4ab692da34b572693f243fbfae
|
780
|
+
Author: Eric Wong <e+absinthe@yhbt.net>
|
781
|
+
Date: Sat Sep 25 01:36:12 2010 -0700
|
782
|
+
|
783
|
+
write/send may fail with ECONNRESET
|
784
|
+
|
785
|
+
Tested on FreeBSD 7.0
|
786
|
+
|
787
|
+
commit 0c60192621303f5e4ebd46d43a058de48126bc8a
|
788
|
+
Author: Eric Wong <e+absinthe@yhbt.net>
|
789
|
+
Date: Sat Sep 25 01:36:11 2010 -0700
|
790
|
+
|
791
|
+
fix missing netinet/in.h include
|
792
|
+
|
793
|
+
This is needed for FreeBSD 7.0, at least.
|
794
|
+
|
795
|
+
commit 0beb82437f4ab0b8422e225080b234361092315e
|
796
|
+
Author: Eric Wong <e@yhbt.net>
|
797
|
+
Date: Sat Sep 25 08:15:13 2010 +0000
|
798
|
+
|
799
|
+
beef up the test suite
|
800
|
+
|
801
|
+
We need to test server <-> client interaction
|
802
|
+
more thoroughly since some systems don't implement
|
803
|
+
everything right.
|
804
|
+
|
805
|
+
commit 460e6b025896dee64b39d194d4c1a536129654de
|
806
|
+
Author: Eric Wong <e@yhbt.net>
|
807
|
+
Date: Thu Sep 23 22:56:44 2010 +0000
|
808
|
+
|
809
|
+
initial commit + release
|
810
|
+
|
811
|
+
everything shou^Wmight be working...
|