Skip to content

Commit bce1449

Browse files
author
avenwu.wwb
committed
1 parent 16c1726 commit bce1449

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,15 @@ bugfix:修改了路径匹配可能多加一个 `/` 的问题
175175
1. 修复自定义插件不能获取[values]()的值,即 `pattern plugin://{key}` 无法正确获取ruleValue的问题
176176
2. 限制自定义插件的名称不能与内置的协议名称冲突,如果冲突则该自定义插件将无效
177177

178-
# v0.9.0
178+
### v0.9.0
179179
1. **重要bugfix:**Fix https post数据时可能出现pending的问题
180180
2. 新增[etag](https://github.com/avwo/whistle/wiki/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8#etag)协议,用于修改请求头的etag
181181
3. 支持通过`ua://``referer://``reqType://``resType://`等,把对应的字段置空
182182

183+
# v0.9.1
184+
1. 新增[reqCharset](https://github.com/avwo/whistle/wiki/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8#reqcharset)[resCharset](https://github.com/avwo/whistle/wiki/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8#rescharset)两个协议,分别用于快速修改请求、响应的编码
185+
2. bugfix:修复可能出现请求出错的情况,https://github.com/nodejs/node/pull/4482
186+
183187
### -
184188
具体参考:[功能列表](https://github.com/avwo/whistle/wiki/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8#%E7%9B%AE%E5%BD%95)
185189

lib/config.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var path = require('path');
22
var os = require('os');
3+
var httpAgent = require('http').Agent;
4+
var httpsAgent = require('https').Agent;
35
var fse = require('fs-extra');
46
var pkgConf = require('../package.json');
57
var config = require('util')._extend(exports, pkgConf);
@@ -28,13 +30,20 @@ function getDataDir(dirname) {
2830
exports.getDataDir = getDataDir;
2931

3032
function createAgent(config, https) {
31-
return new (require(https ? 'https' : 'http').Agent)(config)
33+
return new (https ? httpsAgent : httpAgent)(config)
3234
.on('free', preventThrowOutError);
3335
}
3436

3537
function preventThrowOutError(socket) {
36-
socket.removeListener('error', noop);
37-
socket.on('error', noop);
38+
socket.removeListener('error', freeSocketErrorListener);
39+
socket.on('error', freeSocketErrorListener);
40+
}
41+
42+
function freeSocketErrorListener(err) {
43+
var socket = this;
44+
socket.destroy();
45+
socket.emit('agentRemove');
46+
socket.removeListener('error', freeSocketErrorListener);
3847
}
3948

4049
function noop() {}

0 commit comments

Comments
 (0)