mirror of
				https://github.com/osmarks/mycorrhiza.git
				synced 2025-10-30 23:23:04 +00:00 
			
		
		
		
	Fix the locking bug with CRUD operations
This commit is contained in:
		| @@ -92,7 +92,7 @@ func factoryHandlerConfirmer( | |||||||
| 	return func(w http.ResponseWriter, rq *http.Request) { | 	return func(w http.ResponseWriter, rq *http.Request) { | ||||||
| 		log.Println(rq.URL) | 		log.Println(rq.URL) | ||||||
| 		var ( | 		var ( | ||||||
| 			hyphaName = HyphaNameFromRq(rq, "unattach-confirm") | 			hyphaName = HyphaNameFromRq(rq, actionPath) | ||||||
| 			h         = hyphae.ByName(hyphaName) | 			h         = hyphae.ByName(hyphaName) | ||||||
| 			u         = user.FromRequest(rq) | 			u         = user.FromRequest(rq) | ||||||
| 		) | 		) | ||||||
|   | |||||||
| @@ -31,8 +31,6 @@ func (h *Hypha) CanDelete(u *user.User) (err error, errtitle string) { | |||||||
|  |  | ||||||
| // DeleteHypha deletes hypha and makes a history record about that. | // DeleteHypha deletes hypha and makes a history record about that. | ||||||
| func (h *Hypha) DeleteHypha(u *user.User) (hop *history.HistoryOp, errtitle string) { | func (h *Hypha) DeleteHypha(u *user.User) (hop *history.HistoryOp, errtitle string) { | ||||||
| 	h.Lock() |  | ||||||
| 	defer h.Unlock() |  | ||||||
| 	hop = history.Operation(history.TypeDeleteHypha) | 	hop = history.Operation(history.TypeDeleteHypha) | ||||||
|  |  | ||||||
| 	if err, errtitle := h.CanDelete(u); errtitle != "" { | 	if err, errtitle := h.CanDelete(u); errtitle != "" { | ||||||
|   | |||||||
| @@ -50,8 +50,6 @@ func canRenameThisToThat(oh *Hypha, nh *Hypha, u *user.User) (err error, errtitl | |||||||
|  |  | ||||||
| // RenameHypha renames hypha from old name `hyphaName` to `newName` and makes a history record about that. If `recursive` is `true`, its subhyphae will be renamed the same way. | // RenameHypha renames hypha from old name `hyphaName` to `newName` and makes a history record about that. If `recursive` is `true`, its subhyphae will be renamed the same way. | ||||||
| func (h *Hypha) RenameHypha(newHypha *Hypha, recursive bool, u *user.User) (hop *history.HistoryOp, errtitle string) { | func (h *Hypha) RenameHypha(newHypha *Hypha, recursive bool, u *user.User) (hop *history.HistoryOp, errtitle string) { | ||||||
| 	h.Lock() |  | ||||||
| 	defer h.Unlock() |  | ||||||
| 	newHypha.Lock() | 	newHypha.Lock() | ||||||
| 	defer newHypha.Unlock() | 	defer newHypha.Unlock() | ||||||
| 	hop = history.Operation(history.TypeRenameHypha) | 	hop = history.Operation(history.TypeRenameHypha) | ||||||
|   | |||||||
| @@ -35,8 +35,6 @@ func (h *Hypha) CanUnattach(u *user.User) (err error, errtitle string) { | |||||||
|  |  | ||||||
| // UnattachHypha unattaches hypha and makes a history record about that. | // UnattachHypha unattaches hypha and makes a history record about that. | ||||||
| func (h *Hypha) UnattachHypha(u *user.User) (hop *history.HistoryOp, errtitle string) { | func (h *Hypha) UnattachHypha(u *user.User) (hop *history.HistoryOp, errtitle string) { | ||||||
| 	h.Lock() |  | ||||||
| 	defer h.Unlock() |  | ||||||
| 	hop = history.Operation(history.TypeUnattachHypha) | 	hop = history.Operation(history.TypeUnattachHypha) | ||||||
|  |  | ||||||
| 	if err, errtitle := h.CanUnattach(u); errtitle != "" { | 	if err, errtitle := h.CanUnattach(u); errtitle != "" { | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								name.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								name.go
									
									
									
									
									
								
							| @@ -47,8 +47,7 @@ func HyphaNameFromRq(rq *http.Request, actions ...string) string { | |||||||
| 			return util.CanonicalName(strings.TrimPrefix(p, "/"+action+"/")) | 			return util.CanonicalName(strings.TrimPrefix(p, "/"+action+"/")) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	log.Fatal("HyphaNameFromRq: no matching action passed") | 	panic("HyphaNameFromRq: no matching action passed") | ||||||
| 	return "" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // geminiHyphaNameFromRq extracts hypha name from gemini request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha". | // geminiHyphaNameFromRq extracts hypha name from gemini request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha". | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 bouncepaw
					bouncepaw