From 53043cda16a4efd64705d7fc5ca188f67c92c84f Mon Sep 17 00:00:00 2001 From: Clinton Ebadi Date: Mon, 6 Oct 2014 23:17:40 -0400 Subject: [PATCH] portal: return success/failure of changing vmail password I hear it's useful to tell the difference between failure and success. --- src/main-portal.sml | 8 ++++---- src/main.sig | 2 +- src/main.sml | 21 +++++++++++---------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main-portal.sml b/src/main-portal.sml index 068d16c..bed2064 100644 --- a/src/main-portal.sml +++ b/src/main-portal.sml @@ -49,10 +49,10 @@ val _ = in case (oldpasswd, newpasswd) of (SOME oldpasswd, SOME newpasswd) => - Main.requestPortalPasswdMailbox {domain = domain, - user = user, - oldpasswd = String.substring (oldpasswd, 0, size oldpasswd - 1), - newpasswd = String.substring (newpasswd, 0, size newpasswd - 2)} + OS.Process.exit (Main.requestPortalPasswdMailbox {domain = domain, + user = user, + oldpasswd = String.substring (oldpasswd, 0, size oldpasswd - 1), + newpasswd = String.substring (newpasswd, 0, size newpasswd - 1)}) | _ => die "Invalid input" end | _ => die "Invalid command-line arguments" diff --git a/src/main.sig b/src/main.sig index fa4d398..bea8247 100644 --- a/src/main.sig +++ b/src/main.sig @@ -69,7 +69,7 @@ signature MAIN = sig val requestPasswdMailbox : {domain : string, user : string, passwd : string} -> unit val requestPortalPasswdMailbox : {domain : string, user : string, oldpasswd : string, newpasswd : string} - -> unit + -> OS.Process.status val requestRmMailbox : {domain : string, user : string} -> unit val requestSaQuery : string -> unit diff --git a/src/main.sml b/src/main.sml index 475d1aa..fcbcafe 100644 --- a/src/main.sml +++ b/src/main.sml @@ -672,16 +672,17 @@ fun requestPortalPasswdMailbox p = let val (_, bio) = requestBio (fn () => ()) in - Msg.send (bio, MsgPortalPasswdMailbox p); - case Msg.recv bio of - NONE => print "Server closed connection unexpectedly.\n" - | SOME m => - case m of - MsgOk => print ("The password for " ^ #user p ^ "@" ^ #domain p ^ " has been changed.\n") - | MsgError s => print ("Set failed: " ^ s ^ "\n") - | _ => print "Unexpected server reply.\n"; - OpenSSL.close bio - end + (Msg.send (bio, MsgPortalPasswdMailbox p); + case Msg.recv bio of + NONE => (print "Server closed connection unexpectedly.\n"; OS.Process.failure) + | SOME m => + case m of + MsgOk => (print ("The password for " ^ #user p ^ "@" ^ #domain p ^ " has been changed.\n"); + OS.Process.success) + | MsgError s => (print ("Set failed: " ^ s ^ "\n"); OS.Process.failure) + | _ => (print "Unexpected server reply.\n"; OS.Process.failure)) + before OpenSSL.close bio + end fun requestRmMailbox p = let -- 2.20.1