diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 1ac12a31fdda1ab3d8f11c7b4e3e5d3013d6d87b..ae66b099e0dbe96bb23e0f746bc48049ac899448 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -16826,7 +16826,7 @@ static int sip_poke_peer(struct sip_peer *peer)
 		sip_poke_noanswer(peer);	/* Immediately unreachable, network problems */
 	else {
 		peer->pokeexpire = ast_sched_replace(peer->pokeexpire, sched, 
-			DEFAULT_MAXMS * 2, sip_poke_noanswer, peer);
+			peer->maxms * 2, sip_poke_noanswer, peer);
 	}
 
 	return 0;
@@ -17769,7 +17769,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
 			if (!strcasecmp(v->value, "no")) {
 				peer->maxms = 0;
 			} else if (!strcasecmp(v->value, "yes")) {
-				peer->maxms = DEFAULT_MAXMS;
+				peer->maxms = default_qualify ? default_qualify : DEFAULT_MAXMS;
 			} else if (sscanf(v->value, "%d", &peer->maxms) != 1) {
 				ast_log(LOG_WARNING, "Qualification of peer '%s' should be 'yes', 'no', or a number of milliseconds at line %d of sip.conf\n", peer->name, v->lineno);
 				peer->maxms = 0;