Tedious: tls.createSecurePair๋Š” ๋Ÿฐํƒ€์ž„์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 02์›” 26์ผ  ยท  33์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tediousjs/tedious

์ฐธ์กฐ: https://github.com/nodejs/node/pull/11349

์‚ฌ์šฉ:

tedious-1.14.0.tgz/lib/message-io.js:117:      this.securePair = tls.createSecurePair(credentials);

#135๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
๊ธฐ๋Šฅ ๊ฐ์ง€ ์˜ˆ๋Š” https://github.com/sidores/node-mysql2/pull/367 ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

738์—๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ @tediousjs/microsoft-contributors ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฒ€ํ† ํ•œ ํ›„ ๋ณ‘ํ•ฉ ๋ฐ ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  33 ๋Œ“๊ธ€

@ChALkeR ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ์— ์ ‘๊ทผํ•  ๋•Œ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜๊ฐ์„ ๋ฐ›์•˜๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ PR์„ ๋ณด๋‚ด์ฃผ์„ธ์š” :-)

@tvrprasad : @ChALkeR ๋Š” Node.js ํŒ€์˜ ์ผ์›์ด๋ฉฐ ์ด ๊ฒŒ์‹œ๋ฌผ์€ ๋Œ€๋ถ€๋ถ„ ์ด ๊ธฐ๋Šฅ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฐ€ ์‹ค์ œ๋กœ tedious ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

@ChALkeR : ์ด ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•ด ์ž ์‹œ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ด ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์ •๋ง ํฌ๋ฐ•ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ์˜ˆ์ œ(์˜ˆ: node-mysql ๋Œ€ํ•œ PR)๋Š” ์—ฐ๊ฒฐ์ด ๋น„ TLS์—์„œ TLS๋กœ ์ „ํ™˜๋˜๋Š” "๋‹จ์ˆœํ•œ" TLS ์—…๊ทธ๋ ˆ์ด๋“œ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

TDS์—์„œ๋Š” TLS ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๊ณ  ๋ชจ๋“  ํ•ธ๋“œ์…ฐ์ดํ‚น ํŒจํ‚ท์„ TDS ๋ฉ”์‹œ์ง€๋กœ ๋ž˜ํ•‘ํ•ด์•ผ ํ•˜๋ฉฐ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๋ฉด ๋” ์ด์ƒ ๋ชจ๋“  TLS ํŒจํ‚ท์„ ๋ž˜ํ•‘ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. tls.createSecurePair ๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ–ˆ์ง€๋งŒ TLSSocket ๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ž‘๋™ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ž

์‹œ๊ฐ„์ด ๋˜๋ฉด ๋‹ค์‹œ ํ•ด๋ด์•ผ ๊ฒ ์ง€๋งŒ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„ ์ ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

๋‚ด๊ฐ€ ์šฐ์—ฐํžˆ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š”์—์„œ ์†Œ์ผ“ ํฌ์žฅ์ด๋‹ค readable-stream ๋กœ ํŒจํ‚ค์ง€๋ฅผ TLSSocket ์„ธ๊ทธ๋จผํŠธ ํดํŠธ (!)๊ฐ€ Node.js๋ฅผ ํ”„๋กœ์„ธ์Šค์˜ ์›์ธ์ด๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ง€๊ธˆ ๋‹น์žฅ์€ ์žฌ์ƒ์‚ฐ ๋‹จ๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ž

@arthurschreiber ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :-)

๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ง€๋ง‰์œผ๋กœ TLSSocket์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ž‘๋™ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์ด github์— ์žˆ๋‹ค๋ฉด ํฌ์ธํ„ฐ๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”. ๊ถ๊ธˆํ•ด์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

@tvrprasad @arthurschreiber tls.createSecurePair ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. https://nodejs.org/dist/latest-v6.x/docs/api/tls.html#tls_class_securepair

Node v8.0.1์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์€ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ›„ ๋‹ค์Œ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

(node:6344) [DEP0064] DeprecationWarning: tls.createSecurePair() is deprecated. Please use tls.Socket instead.

์ €๋Š” patriksimek/node-mssql ๋ฐ tedious ๋“œ๋ผ์ด๋ฒ„( node-mssql ์˜ ๊ธฐ๋ณธ ๋“œ๋ผ์ด๋ฒ„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Microsoft SQL Server ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๋ฃจํ•œ ๋“œ๋ผ์ด๋ฒ„์™€ ํ•จ๊ป˜ node-mssql์„ ์‚ฌ์šฉํ•˜๋Š” @olange ์™€ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Listening on port 4000
(node:4402) [DEP0064] DeprecationWarning: tls.createSecurePair() is deprecated. Please use tls.Socket instead.

์ €๋ฅผ ์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ์ด ๋ชจ๋“ˆ์„ ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ๋‹น์‹ ์˜ ๋…ธ๋ ฅ์— ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์ œ ์ˆ˜์ •๋ ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŒจํ‚ค์ง€ 'mssql' ์‚ฌ์šฉ ๋ฐ ์˜ต์…˜ ์‚ฌ์šฉ:
{
์•”ํ˜ธํ™”: ์ฐธ
}

(node:13508) [DEP0064] DeprecationWarning: tls.createSecurePair()๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  tls.Socket์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

Node ํŒ€์ด ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ Node์—์„œ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๊ฐ„์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋…ธ๋“œ 9 ๋˜๋Š” 10์—์„œ ์ œ๊ฑฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ตœ์†Œ 4๋…„ ๋™์•ˆ ๋ฌธ์„œ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :-/ ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์ธ๊ธฐ ์žˆ๋Š” NPM ํŒจํ‚ค์ง€ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ณต๋™ ์ž‘์—…์ž ์ค‘ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ถœ์‹œ๋  ์ผ์ •์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐฉ๊ธˆ ์‹œ์Šคํ…œ์„ ๋…ธ๋“œ 8.9.0 lts๋กœ ์—…๋ฐ์ดํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‘ ๊ฐœ์˜ ๋ฌด๊ฑฐ์šด ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์ง€๋งŒ ๋‘˜ ๋‹ค ์™„ํ™”๋˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@Iiridayn ๊ต‰์žฅ
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ TLSSocket์—์„œ ํ•ธ๋“œ ์…ฐ์ดํฌ ํŒจํ‚ท์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/tediousjs/tedious/issues/515#issuecomment -283191248 :confused:
๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ Azure์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋™์•ˆ ์•ฑ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์‹ ์†ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ๋‚ด๊ฐ€ ์š”์ฒญํ•œ SQL ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์ด๊ฒƒ์ด ์›์ธ์ธ์ง€ ์•Œ์•„์•ผ ํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ํ…์ŠคํŠธ๋ฅผ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ve read๋Š” ๊ทธ๋‹ค์ง€ ์›…๋ณ€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@Jorgeee1 ์ด๊ฒƒ์€ ๊ฒฝ๊ณ ์ผ ๋ฟ, ๋ฌธ์ œ์˜ ์›์ธ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Azure DB์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ๋„ ์ง€๋ฃจํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

createSecurePair ๋ฅผ TLSSocket + TCP ์„œ๋ฒ„๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์›์‹œ ํ•ธ๋“œ์…ฐ์ดํฌ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๊ฐœ๋…์˜ ๋น ๋ฅธ ์ฆ๋ช…์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋‹น๋ฉดํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹ค์ œ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค(์ถ”๊ฐ€ ์†Œ์ผ“ ๋“ฑ์„ ๋จน๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์€ ๊ฒฝ์šฐ). ์ด๊ฒƒ์€ ํ† ๋ก ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ ์ด์ƒ์ž…๋‹ˆ๋‹ค. https://github.com/nodejs/help/issues/1010 ์—์„œ ์‹ค์ œ ์ œ์•ˆ๊ณผ ํ† ๋ก ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ

@joux3 ๊ต‰์žฅํ•˜๋„ค์š” ๐Ÿ˜ƒ PR ๋งŒ๋“ค์–ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ๊ณณ์—์„œ ๊ฒ€ํ† ํ•˜๊ณ  ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌด๊ฑฐ์šด ํ”„๋กœ์ ํŠธ๋Š” ์™„ํ™”๋˜์ง€ ์•Š์•˜๊ณ  ์„ธ ๋ฒˆ์งธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ MySQL๋„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค :).

๊ณ ์ณ์ฃผ์„ธ์š” ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค

์—ฌ๋Ÿฌ๋ถ„,

์—ฌ๊ธฐ์—์„œ ํ˜„์žฌ ์ƒํƒœ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€์› ์ค‘๋‹จ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ท€์ฐฎ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. tls.createSecurePair ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹จ๊ธฐ ๋ฐ ์ค‘๊ธฐ ๋ฏธ๋ž˜์—๋Š” ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/nodejs/node/pull/17882 ์— ๋”ฐ๋ฅด๋ฉด ๊ณง ์ œ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ https://github.com/nodejs/node/pull/17882 ๋Š” ๊ณต๊ฐœ node.js API ์ธก๋ฉด์—์„œ tls.createSecurePair ์˜ ์žฌ๊ตฌํ˜„์„ ์ œ์•ˆํ•˜์—ฌ (ํ˜„์žฌ) ๋‚ด๋ถ€ DuplexSocket ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค tls.createSecurePair ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์šฐ๋ฆฌ๋งŒ์˜ DuplexSocket ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€๋งŒ ์ ์–ด๋„ tls.createSecurePair ๊ฐ€ ์‹ค์ œ๋กœ ์ œ๊ฑฐ๋˜๋Š” ์‹œ์ ์ด ๋ช…ํ™•ํ•ด์ง€๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์ง€๋ฃจํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .

๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ์•Œ๋ ค์ฃผ์„ธ์š”! ๐Ÿ˜„

@arthurschreiber Fwiw, ์ €๋„ ๋ฐฉ๊ธˆ DuplexPair ๊ตฌํ˜„์„ https://www.npmjs.com/package/duplexpair์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค tls.createSecurePair() ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ž˜ํผ๋ฅผ ๊ฝค ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@adddaleax ์Šค์œ—! โค๏ธ ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•˜๋ฉฐ ๋‚˜์ค‘์— ์—ฐ๊ฒฐํ•˜์—ฌ ์šฐ๋ฆฌ๋ฅผ tls.createSecurePair ๋นจ๋ฆฌ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค! ๐Ÿ™‡

@arthurschreiber ์ด ํŒจ์น˜๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

diff --git a/package.json b/package.json
index bca5b266849d..8cc0ed957577 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
     "babel-runtime": "^6.26.0",
     "big-number": "0.3.1",
     "bl": "^1.2.0",
+    "duplexpair": "^1.0.1",
     "iconv-lite": "^0.4.11",
     "readable-stream": "^2.2.6",
     "sprintf": "0.1.5"
diff --git a/src/message-io.js b/src/message-io.js
index 6c2a15c32a9f..a1de3a1e91c0 100644
--- a/src/message-io.js
+++ b/src/message-io.js
@@ -1,7 +1,9 @@
+'use strict';
 const tls = require('tls');
 const crypto = require('crypto');
 const EventEmitter = require('events').EventEmitter;
 const Transform = require('readable-stream').Transform;
+const DuplexPair = require('duplexpair');

 const Packet = require('./packet').Packet;
 const TYPE = require('./packet').TYPE;
@@ -84,10 +86,14 @@ module.exports = class MessageIO extends EventEmitter {
   startTls(credentialsDetails, hostname, trustServerCertificate) {
     const credentials = tls.createSecureContext ? tls.createSecureContext(credentialsDetails) : crypto.createCredentials(credentialsDetails);

-    this.securePair = tls.createSecurePair(credentials);
+    const duplexpair = new DuplexPair();
+    this.securePair = {
+      cleartext: new tls.TLSSocket(duplexpair.socket1),
+      encrypted: duplexpair.socket2
+    };
     this.tlsNegotiationComplete = false;

-    this.securePair.on('secure', () => {
+    this.securePair.cleartext.on('secure', () => {
       const cipher = this.securePair.cleartext.getCipher();

       if (!trustServerCertificate) {

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ผ๋ฐ˜ ํ…Œ์ŠคํŠธ ๋ชจ์Œ์˜ ์ผ๋ถ€๋กœ ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค...

๋‚˜๋Š” SecurePair๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐํšŒ๋ฅผ ์ฃผ์—ˆ๋‹ค. Node 9์—์„œ ํ…Œ์ŠคํŠธํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/joux3/tedious/commit/6d255fbdaa2f9afd388617e6e34815cae95292a0

๊ทธ๋Ÿฌ๋‚˜ ๋ช‡ ๊ฐ€์ง€ ๊ด€์ฐฐ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ํŒจ์น˜๊ฐ€ PR์ด ๋ฌธ์ œ๋ฅผ ๋…ผ์˜ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?).

  • Node.js 6์€ Assertion failed: (uv__stream_fd(stream) >= 0), function uv_read_start, file ../deps/uv/src/unix/stream.c, line 1517. ์—์„œ ์™„์ „ํžˆ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์žฌ์‹œ๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ…Œ์ŠคํŠธ์—์„œ ๊ฐ€์งœ ํƒ€์ด๋จธ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์งœ ํƒ€์ด๋จธ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ DuplexPair๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์€ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋…ผ๋ฆฌ ํ๋ฆ„ ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์‹ ํ˜ธ๊ฐ€ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „ํŒŒ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์†Œ์ผ“์— ์ˆ˜๋™ close ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์žˆ์Œ)'

์ž‘์—…์— ๋Œ€ํ•ด @addaleax ์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@joux3 ํฌํฌ๋Š” ํ˜„์žฌ LTS ๋ฆด๋ฆฌ์Šค์ธ ๋…ธ๋“œ 8์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? https://github.com/patriksimek/node-mssql/ ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์žฌ์‹œ๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ…Œ์ŠคํŠธ์—์„œ ๊ฐ€์งœ ํƒ€์ด๋จธ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์งœ ํƒ€์ด๋จธ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ DuplexPair๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@joux3 ์–ด๋–ค ํ…Œ์ŠคํŠธ๊ฐ€ ๋ ๊นŒ์š”? (์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณธ ๊ฒƒ ์™ธ์— ์ด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์— ๋Œ€ํ•ด ํŠน๋ณ„ํžˆ ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

@addaleax , ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋Š” https://github.com/tediousjs/tedious/blob/f5a0f95a5a522ad6a312170201b829e70c866976/test/integration/connection-retry-test.js#L73 -L104์ž…๋‹ˆ๋‹ค.
ํƒ€์ด๋จธ ๋น„ํ™œ์„ฑํ™”: https://github.com/tediousjs/tedious/pull/689/files#diff -ed1dc3ba8a10a8fb4b18a528b35bad00.
ํŽธ์ง‘: setTimeout https://github.com/tediousjs/tedious/pull/689/commits/ff5d5eb1a3603db05266306a823fa49a98b50209 ๋งŒ ๊ฐ€์งœ ํƒ€์ด๋จธ ๊ฐ€์งœ๋ฅผ ๋ณต์›ํ–ˆ์Šต๋‹ˆ๋‹ค

@jimmont , https://github.com/tediousjs/tedious/pull/689 ์—์„œ pull request๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค(PR ์ด๋ฆ„์— ๋ฌธ์ œ ID๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...). ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ๋…ธ๋“œ 8์„ ํ†ต๊ณผํ–ˆ์ง€๋งŒ ์•„์ง ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘ ์ด ๋ฌธ์ œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด!

์ด๊ฒƒ์— ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”์ ์„ ์œ„ํ•ด PR #689๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๊ฐ€ stdout ๋Œ€์‹  stderr๋กœ ์ „์†ก๋˜๋Š” ์„ธ์ƒ์—์„œ. <fail/>

๋ชจ๋“  ์—…๋ฐ์ดํŠธ?

738์—๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ @tediousjs/microsoft-contributors ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฒ€ํ† ํ•œ ํ›„ ๋ณ‘ํ•ฉ ๋ฐ ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค.

์˜ค๋žœ ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„, ์ด๊ฒƒ์€ https://github.com/tediousjs/tedious/pull/738์„ ํ†ตํ•ด ๋งˆ์นจ๋‚ด (๊ทธ๋ฆฌ๊ณ  ์ ์ ˆํ•˜๊ฒŒ) ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค [email protected] ์€(๋Š”) ์ด์ œ npm์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ next ๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ณง latest ๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ™‡

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰