diff --git a/ChangeLog.md b/ChangeLog.md
index de8628d..63da2a5 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+## 1.1.1
+
+* Changed default port range to 15000-24999 to avoid ephemeral ports.
+* Portserver bugfix.
+
 ## 1.1.0
 
 * Renamed portpicker APIs to use PEP8 style function names in code and docs.
diff --git a/setup.py b/setup.py
index f7bc4d8..161d8a3 100644
--- a/setup.py
+++ b/setup.py
@@ -33,7 +33,7 @@
 
     distutils.core.setup(
         name='portpicker',
-        version='1.1.0',
+        version='1.1.1',
         description='A library to choose unique available network ports.',
         long_description=textwrap.dedent("""\
           Portpicker provides an API to find and return an available network
diff --git a/src/portpicker.py b/src/portpicker.py
index 08dde0a..6820391 100644
--- a/src/portpicker.py
+++ b/src/portpicker.py
@@ -139,7 +139,7 @@
     # Try random ports first.
     rng = random.Random()
     for _ in range(10):
-        port = int(rng.randrange(32768, 60000))
+        port = int(rng.randrange(15000, 25000))
         if is_port_free(port):
             return port
 
diff --git a/src/portserver.py b/src/portserver.py
index fcade6c..43f5567 100644
--- a/src/portserver.py
+++ b/src/portserver.py
@@ -180,7 +180,7 @@
             check_count += 1
             if (candidate.start_time == 0 or
                 candidate.start_time != _get_process_start_time(candidate.pid)):
-                if _is_port_free(candidate.pid):
+                if _is_port_free(candidate.port):
                     candidate.pid = pid
                     candidate.start_time = _get_process_start_time(pid)
                     if not candidate.start_time:
@@ -283,8 +283,8 @@
     parser.add_argument(
         '--portserver_static_pool',
         type=str,
-        default='32768-60000',
-        help='Comma separated N-P Range(s) of ports to manage.')
+        default='15000-24999',
+        help='Comma separated N-P Range(s) of ports to manage (inclusive).')
     parser.add_argument(
         '--portserver_unix_socket_address',
         type=str,
diff --git a/src/tests/portserver_test.py b/src/tests/portserver_test.py
index f0475c3..bd7d61e 100644
--- a/src/tests/portserver_test.py
+++ b/src/tests/portserver_test.py
@@ -192,6 +192,28 @@
         self.assertEqual(2, self.pool.num_ports())
         self.assertEqual(2, self.pool.ports_checked_for_last_request)
 
+    @mock.patch.object(portserver, '_is_port_free')
+    @mock.patch.object(os, 'getpid')
+    def test_get_port_for_process_pid_eq_port(self, mock_getpid, mock_is_port_free):
+        self.pool.add_port_to_free_pool(12345)
+        self.pool.add_port_to_free_pool(12344)
+        mock_is_port_free.side_effect = lambda port: port == os.getpid()
+        mock_getpid.return_value = 12345
+        self.assertEqual(2, self.pool.num_ports())
+        self.assertEqual(12345, self.pool.get_port_for_process(os.getpid()))
+        self.assertEqual(2, self.pool.ports_checked_for_last_request)
+
+    @mock.patch.object(portserver, '_is_port_free')
+    @mock.patch.object(os, 'getpid')
+    def test_get_port_for_process_pid_ne_port(self, mock_getpid, mock_is_port_free):
+        self.pool.add_port_to_free_pool(12344)
+        self.pool.add_port_to_free_pool(12345)
+        mock_is_port_free.side_effect = lambda port: port != os.getpid()
+        mock_getpid.return_value = 12345
+        self.assertEqual(2, self.pool.num_ports())
+        self.assertEqual(12344, self.pool.get_port_for_process(os.getpid()))
+        self.assertEqual(2, self.pool.ports_checked_for_last_request)
+
 
 @mock.patch.object(portserver, '_get_process_command_line')
 @mock.patch.object(portserver, '_should_allocate_port')
