diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 6f319eb407639c92a67f0c930f6a0895cb29e667..45164741dfb49b6094a550393051797229981544 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -432,17 +432,17 @@ func MakeAccountManager(ctx *cli.Context) *accounts.Manager {
 func IpcSocketPath(ctx *cli.Context) (ipcpath string) {
 	if common.IsWindows() {
 		ipcpath = common.DefaultIpcPath()
-		if ipcpath != ctx.GlobalString(IPCPathFlag.Name) {
+		if ctx.GlobalIsSet(IPCPathFlag.Name) {
 			ipcpath = ctx.GlobalString(IPCPathFlag.Name)
 		}
 	} else {
 		ipcpath = common.DefaultIpcPath()
-		if ctx.GlobalString(IPCPathFlag.Name) != common.DefaultIpcPath() {
-			ipcpath = ctx.GlobalString(IPCPathFlag.Name)
-		} else if ctx.GlobalString(DataDirFlag.Name) != "" &&
-			ctx.GlobalString(DataDirFlag.Name) != common.DefaultDataDir() {
+		if ctx.GlobalIsSet(DataDirFlag.Name) {
 			ipcpath = filepath.Join(ctx.GlobalString(DataDirFlag.Name), "geth.ipc")
 		}
+		if ctx.GlobalIsSet(IPCPathFlag.Name) {
+			ipcpath = ctx.GlobalString(IPCPathFlag.Name)
+		}
 	}
 
 	return