|  | @@ -577,16 +577,19 @@ func runWeb(ctx *cli.Context) error {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Flag for port number in case first time run conflict.
 | 
	
		
			
				|  |  |  	if ctx.IsSet("port") {
 | 
	
		
			
				|  |  | -		setting.AppUrl = strings.Replace(setting.AppUrl, setting.HttpPort, ctx.String("port"), 1)
 | 
	
		
			
				|  |  | -		setting.HttpPort = ctx.String("port")
 | 
	
		
			
				|  |  | +		setting.AppUrl = strings.Replace(setting.AppUrl, setting.HTTPPort, ctx.String("port"), 1)
 | 
	
		
			
				|  |  | +		setting.HTTPPort = ctx.String("port")
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	var err error
 | 
	
		
			
				|  |  | -	listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort)
 | 
	
		
			
				|  |  | +	var listenAddr string
 | 
	
		
			
				|  |  |  	if setting.Protocol == setting.UNIX_SOCKET {
 | 
	
		
			
				|  |  | -		listenAddr = fmt.Sprintf("%s", setting.HttpAddr)
 | 
	
		
			
				|  |  | +		listenAddr = fmt.Sprintf("%s", setting.HTTPAddr)
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		listenAddr = fmt.Sprintf("%s:%s", setting.HTTPAddr, setting.HTTPPort)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	var err error
 | 
	
		
			
				|  |  |  	switch setting.Protocol {
 | 
	
		
			
				|  |  |  	case setting.HTTP:
 | 
	
		
			
				|  |  |  		err = http.ListenAndServe(listenAddr, m)
 | 
	
	
		
			
				|  | @@ -597,18 +600,19 @@ func runWeb(ctx *cli.Context) error {
 | 
	
		
			
				|  |  |  		err = fcgi.Serve(nil, m)
 | 
	
		
			
				|  |  |  	case setting.UNIX_SOCKET:
 | 
	
		
			
				|  |  |  		os.Remove(listenAddr)
 | 
	
		
			
				|  |  | -		listener, err := net.ListenUnix("unix", &net.UnixAddr{listenAddr, "unix"})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		var listener *net.UnixListener
 | 
	
		
			
				|  |  | +		listener, err = net.ListenUnix("unix", &net.UnixAddr{listenAddr, "unix"})
 | 
	
		
			
				|  |  |  		if err != nil {
 | 
	
		
			
				|  |  | -			break
 | 
	
		
			
				|  |  | +			break // Handle error after switch
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		// FIXME add proper implementation of signal capture on all protocols
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// FIXME: add proper implementation of signal capture on all protocols
 | 
	
		
			
				|  |  |  		// execute this on SIGTERM or SIGINT: listener.Close()
 | 
	
		
			
				|  |  | -		err = os.Chmod(listenAddr, os.FileMode(setting.UnixSocketPermission))
 | 
	
		
			
				|  |  | -		if err != nil {
 | 
	
		
			
				|  |  | +		if err = os.Chmod(listenAddr, os.FileMode(setting.UnixSocketPermission)); err != nil {
 | 
	
		
			
				|  |  |  			log.Fatal(4, "Failed to set permission of unix socket: %v", err)
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		err = http.Serve(listener, m)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	default:
 | 
	
		
			
				|  |  |  		log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
 | 
	
		
			
				|  |  |  	}
 |