@@ -34,7 +34,6 @@ exports = module.exports = Manager;
34
34
35
35
var defaultTransports = exports . defaultTransports = [
36
36
'websocket'
37
- , 'htmlfile'
38
37
, 'xhr-polling'
39
38
, 'jsonp-polling'
40
39
] ;
@@ -76,8 +75,6 @@ function Manager (server, options) {
76
75
, 'heartbeat interval' : 25
77
76
, 'heartbeat timeout' : 60
78
77
, 'polling duration' : 20
79
- , 'flash policy server' : true
80
- , 'flash policy port' : 10843
81
78
, 'destroy upgrade' : true
82
79
, 'destroy buffer size' : 10E7
83
80
, 'browser client' : true
@@ -159,7 +156,7 @@ function Manager (server, options) {
159
156
} ) ;
160
157
161
158
this . sequenceNumber = Date . now ( ) | 0 ;
162
-
159
+
163
160
this . log . info ( 'socket.io started' ) ;
164
161
} ;
165
162
@@ -873,30 +870,30 @@ Manager.prototype.handshakeData = function (data, connection) {
873
870
} ;
874
871
} ;
875
872
876
- /**
877
- * Verifies the origin of a request.
878
- *
879
- * @api private
880
- */
881
-
882
- Manager . prototype . verifyOrigin = function ( request ) {
883
- var origin = request . headers . origin || request . headers . referer
884
- , origins = this . get ( 'origins' ) ;
873
+ Manager . prototype . isOriginAllowed = function ( origin , request ) {
874
+ var origins = this . get ( 'origins' ) ;
885
875
886
876
if ( origin === 'null' ) origin = '*' ;
887
877
888
- if ( origins . indexOf ( '*:*' ) !== - 1 ) {
878
+ var originsIsFunction = typeof origins === 'function' ;
879
+
880
+ if ( ! originsIsFunction && origins . indexOf ( '*:*' ) !== - 1 ) {
889
881
return true ;
890
882
}
891
883
892
884
if ( origin ) {
893
885
try {
894
- var parts = url . parse ( origin ) ;
895
- parts . port = parts . port || 80 ;
896
- var ok =
897
- ~ origins . indexOf ( parts . hostname + ':' + parts . port ) ||
898
- ~ origins . indexOf ( parts . hostname + ':*' ) ||
899
- ~ origins . indexOf ( '*:' + parts . port ) ;
886
+ var ok = false ;
887
+ if ( originsIsFunction ) {
888
+ ok = origins ( origin , request ) ;
889
+ } else {
890
+ var parts = url . parse ( origin ) ;
891
+ parts . port = parts . port || 80 ;
892
+ ok =
893
+ ~ origins . indexOf ( parts . hostname + ':' + parts . port ) ||
894
+ ~ origins . indexOf ( parts . hostname + ':*' ) ||
895
+ ~ origins . indexOf ( '*:' + parts . port ) ;
896
+ }
900
897
if ( ! ok ) this . log . warn ( 'illegal origin: ' + origin ) ;
901
898
return ok ;
902
899
} catch ( ex ) {
@@ -909,6 +906,21 @@ Manager.prototype.verifyOrigin = function (request) {
909
906
return false ;
910
907
} ;
911
908
909
+ /**
910
+ * Verifies the origin of a request.
911
+ *
912
+ * @api private
913
+ */
914
+
915
+ Manager . prototype . verifyOrigin = function ( request ) {
916
+ var origin = request . headers . origin || request . headers . referer ;
917
+ var allowed = this . isOriginAllowed ( origin , request ) ;
918
+ if ( ! origin && ! allowed ) {
919
+ this . log . warn ( 'origin missing from handshake, yet required by config' , { headers : request . headers } ) ;
920
+ }
921
+ return allowed ;
922
+ } ;
923
+
912
924
/**
913
925
* Handles an incoming packet.
914
926
*
0 commit comments