@@ -58,10 +58,7 @@ function($error) use ($client) {
58
58
59
59
public function createServer ($ address )
60
60
{
61
- $ parts = parse_url ($ address );
62
- if ($ parts === false || !isset ($ parts ['host ' ]) || !isset ($ parts ['port ' ])) {
63
- return When::reject (new InvalidArgumentException ('Invalid server address given ' ));
64
- }
61
+ $ parts = $ this ->parseUrl ($ address );
65
62
66
63
$ socket = new ServerSocket ($ this ->loop );
67
64
try {
@@ -79,15 +76,38 @@ public function createProtocol()
79
76
return ProtocolFactory::create ();
80
77
}
81
78
82
- private function connect ($ target )
79
+ private function parseUrl ($ target )
83
80
{
84
81
if ($ target === null ) {
85
- $ target = 'tcp://127.0.0.1:6379 ' ;
82
+ $ target = 'tcp://127.0.0.1 ' ;
83
+ }
84
+ if (strpos ($ target , ':// ' ) === false ) {
85
+ $ target = 'tcp:// ' . $ target ;
86
86
}
87
87
88
88
$ parts = parse_url ($ target );
89
- if ($ parts === false || !isset ($ parts ['host ' ]) || !isset ($ parts ['port ' ])) {
90
- return When::reject (new InvalidArgumentException ('Invalid target host given ' ));
89
+ if ($ parts === false || !isset ($ parts ['host ' ]) || $ parts ['scheme ' ] !== 'tcp ' ) {
90
+ throw new Exception ('Given URL can not be parsed ' );
91
+ }
92
+
93
+ if (!isset ($ parts ['port ' ])) {
94
+ $ parts ['port ' ] = '6379 ' ;
95
+ }
96
+
97
+ if ($ parts ['host ' ] === 'localhost ' ) {
98
+ $ parts ['host ' ] = '127.0.0.1 ' ;
99
+ }
100
+
101
+ return $ parts ;
102
+ }
103
+
104
+ private function connect ($ target )
105
+ {
106
+ try {
107
+ $ parts = $ this ->parseUrl ($ target );
108
+ }
109
+ catch (Exception $ e ) {
110
+ return When::reject ($ e );
91
111
}
92
112
93
113
if ($ this ->connector === null ) {
0 commit comments