diff --git a/NEWS b/NEWS
index 566a56d46436249dc92f6de3b0366bb6ec44b52b..6bd7191a1c0fea111d5c8c8d6d44682314bd10c9 100644
--- a/NEWS
+++ b/NEWS
@@ -237,6 +237,7 @@ documents those changes that are of interest to users and admins.
 =========================
  - BLUEGENE - Fixed issue with nodes that return to service outside of an
    admin state is now updated in the bluegene plugin.
+ - Fix for --get-user-env parsing of non-printing characters in users' logins.
  
 * Changes in SLURM 1.1.27
 =========================
diff --git a/doc/man/man1/srun.1 b/doc/man/man1/srun.1
index 193ba2461d1a59eab2e58f047bb114533603d6e5..12554ec786f683b1d51076727f1f0fccf69d3a66 100644
--- a/doc/man/man1/srun.1
+++ b/doc/man/man1/srun.1
@@ -271,11 +271,11 @@ even if consumable resources are enabled
 
 .TP
 \fB\-\-get\-user\-env\fR
-For a batch script submission, this option will tell srun to retreive the
+For a batch script submission, this option will tell srun to retrieve the
 login environment variables for the user specified in the \-\-uid option.
 The environment variables are retrieved by running "su - <username> -c
 /usr/bin/env" and parsing the output.  Be aware that any environment
-variables already set in srun's environment will take precidence over any
+variables already set in srun's environment will take precedence over any
 environment variables in the user's login environment.
 NOTE: This option only works if the caller has an
 effective uid of "root", and only takes effect in batch mode (\-b/\-\-batch).
diff --git a/src/common/env.c b/src/common/env.c
index 561c6f7f09e3e320f3abac319477de38cd4fea5d..aa20f49c3d00916ef12a09e2bda645b6bc972911 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -1225,7 +1225,7 @@ char **env_array_user_default(const char *username)
 		return NULL;
 	}
 
-	xstrfmtcat(cmdstr, "/bin/su - %s -c \"echo %s; env; echo %s\"",
+	xstrfmtcat(cmdstr, "/bin/su - %s -c \"echo; echo; echo; echo %s; env; echo %s\"",
 		   username, starttoken, stoptoken);
 	su = popen(cmdstr, "r");
 	xfree(cmdstr);
diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c
index b8ddf353044be4e3016b0026454b4086c1f0213f..ae600e48adae6c10f053c21aea6a8c4d9610fa1d 100644
--- a/src/common/slurm_protocol_api.c
+++ b/src/common/slurm_protocol_api.c
@@ -802,16 +802,14 @@ int slurm_receive_msg(slurm_fd fd, slurm_msg_t *msg, int timeout)
 		/* convert secs to msec */
                 timeout  = slurm_get_msg_timeout() * 1000; 
 
-	if(timeout > (slurm_get_msg_timeout() * 10000)) {
-		error("slurm_receive_msg: "
-		      "You are sending a message with timeout's greater "
-		      "than %d seconds, your's is %d seconds", 
-		      (slurm_get_msg_timeout() * 10), 
-		      (timeout/1000));
+	else if(timeout > (slurm_get_msg_timeout() * 10000)) {
+		error("You are sending a message of type %d with very long "
+		      "timeout of %d seconds",
+		      msg->msg_type, (timeout/1000));
 	} else if(timeout < 1000) {
-		debug("slurm_receive_msg: "
-		      "You are sending a message with a very short timeout of "
-		      "%d milliseconds", timeout);
+		error("You are sending a message of type %d with a very short "
+		      "timeout of %d msecs", 
+		      msg->msg_type, timeout);
 	} 
 	
 
diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index d2cfed7e57c78277f907d452f81a35c157fe4f43..8fcef8bf4b09f0ff61d9659250a422ebdc077d49 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -1087,7 +1087,8 @@ static int _shutdown_backup_controller(int wait_time)
 	req.msg_type = REQUEST_CONTROL;
 	
 	START_TIMER;
-	if (slurm_send_recv_rc_msg_only_one(&req, &rc, CONTROL_TIMEOUT) < 0) {
+	if (slurm_send_recv_rc_msg_only_one(&req, &rc, 
+				(CONTROL_TIMEOUT * 1000)) < 0) {
 		END_TIMER;
 		error("_shutdown_backup_controller:send/recv: %m, %s", TIME_STR);
 		return SLURM_ERROR;