@@ -3,37 +3,14 @@ var net = require('net')
3
3
4
4
var portscanner = exports
5
5
6
- portscanner . findAnAvailablePort = function ( startPort , endPort , host , callback ) {
7
- var that = this
8
- var foundAvailablePort = false
9
- var numberOfPortsChecked = 0
10
6
11
- var check = function ( port ) {
12
- that . checkPortStatus ( port , host , function ( error , status ) {
13
- numberOfPortsChecked ++
14
- // Only callback once
15
- if ( foundAvailablePort === false ) {
16
- if ( error ) {
17
- foundAvailablePort = true
18
- callback ( error )
19
- }
20
- else {
21
- if ( status === 'open' ) {
22
- foundAvailablePort = true
23
- callback ( null , port )
24
- }
25
- // All port checks have returned unavailable
26
- else if ( numberOfPortsChecked === ( endPort - startPort + 1 ) ) {
27
- callback ( null , false )
28
- }
29
- }
30
- }
31
- } )
32
- }
7
+ portscanner . findAnOpenPort = function ( startPort , endPort , host , callback ) {
8
+ findAPortWithStatus ( 'open' , startPort , endPort , host , callback )
9
+ }
10
+
11
+ portscanner . findAClosedPort = function ( startPort , endPort , host , callback ) {
12
+ findAPortWithStatus ( 'closed' , startPort , endPort , host , callback )
33
13
34
- for ( var port = startPort ; port <= endPort ; port ++ ) {
35
- check ( port )
36
- }
37
14
}
38
15
39
16
portscanner . checkPortStatus = function ( port , host , callback ) {
@@ -67,3 +44,35 @@ portscanner.checkPortStatus = function(port, host, callback) {
67
44
socket . connect ( port , host )
68
45
}
69
46
47
+ function findAPortWithStatus ( status , startPort , endPort , host , callback ) {
48
+ var foundPort = false
49
+ var numberOfPortsChecked = 0
50
+
51
+ var check = function ( port ) {
52
+ portscanner . checkPortStatus ( port , host , function ( error , statusOfPort ) {
53
+ numberOfPortsChecked ++
54
+ // Only callback once
55
+ if ( foundPort === false ) {
56
+ if ( error ) {
57
+ foundPort = true
58
+ callback ( error )
59
+ }
60
+ else {
61
+ if ( statusOfPort === status ) {
62
+ foundPort = true
63
+ callback ( null , port )
64
+ }
65
+ // All port checks have returned unavailable
66
+ else if ( numberOfPortsChecked === ( endPort - startPort + 1 ) ) {
67
+ callback ( null , false )
68
+ }
69
+ }
70
+ }
71
+ } )
72
+ }
73
+
74
+ for ( var port = startPort ; port <= endPort ; port ++ ) {
75
+ check ( port )
76
+ }
77
+ }
78
+
0 commit comments