func del_tx(par string) { txid := btc.NewUint256FromString(par) if txid == nil { fmt.Println("You must specify a valid transaction ID for this command.") list_txs("") return } network.TxMutex.Lock() defer network.TxMutex.Unlock() tx, ok := network.TransactionsToSend[txid.BIdx()] if !ok { network.TxMutex.Unlock() fmt.Println("No such transaction ID in the memory pool.") list_txs("") return } network.DeleteToSend(tx) fmt.Println("Transaction", txid.String(), "removed from the memory pool") }
func xml_txs2s(w http.ResponseWriter, r *http.Request) { if !ipchecker(r) { return } w.Header()["Content-Type"] = []string{"text/xml"} if len(r.Form["minedid"]) > 0 && len(r.Form["minedat"]) > 0 { output_utxo_tx_xml(w, r.Form["minedid"][0], r.Form["minedat"][0]) return } if len(r.Form["id"]) > 0 { txid := btc.NewUint256FromString(r.Form["id"][0]) if txid == nil { return } network.TxMutex.Lock() defer network.TxMutex.Unlock() if t2s, ok := network.TransactionsToSend[txid.BIdx()]; ok { tx_xml(w, t2s, true) } else { w.Write([]byte("<tx>")) fmt.Fprint(w, "<id>", txid.String(), "</id>") w.Write([]byte("<status>Not found</status>")) w.Write([]byte("</tx>")) } return } if checksid(r) { if len(r.Form["del"]) > 0 { tid := btc.NewUint256FromString(r.Form["del"][0]) if tid != nil { network.TxMutex.Lock() if tts, ok := network.TransactionsToSend[tid.BIdx()]; ok { network.DeleteToSend(tts) } network.TxMutex.Unlock() } } if len(r.Form["send"]) > 0 { tid := btc.NewUint256FromString(r.Form["send"][0]) if tid != nil { network.TxMutex.Lock() if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok { network.TxMutex.Unlock() cnt := network.NetRouteInv(1, tid, nil) if cnt == 0 { usif.SendInvToRandomPeer(1, tid) } else { ptx.Invsentcnt += cnt } } else { network.TxMutex.Unlock() } } } if len(r.Form["sendone"]) > 0 { tid := btc.NewUint256FromString(r.Form["sendone"][0]) if tid != nil { network.TxMutex.Lock() if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok { network.TxMutex.Unlock() usif.SendInvToRandomPeer(1, tid) ptx.Invsentcnt++ } else { network.TxMutex.Unlock() } } } if len(r.Form["cnt"]) > 0 { u, e := strconv.ParseUint(r.Form["cnt"][0], 10, 32) if e == nil && u > 0 && u < 10e3 { txs2s_count = int(u) } } if len(r.Form["sort"]) > 0 && len(r.Form["sort"][0]) == 3 { txs2s_sort = r.Form["sort"][0] } txs2s_sort_desc = len(r.Form["descending"]) > 0 } network.TxMutex.Lock() defer network.TxMutex.Unlock() sorted := make(sortedTxList, len(network.TransactionsToSend)) var cnt int for _, v := range network.TransactionsToSend { if len(r.Form["ownonly"]) > 0 && v.Own == 0 { continue } sorted[cnt] = v cnt++ } sorted = sorted[:cnt] sort.Sort(sorted) w.Write([]byte("<txpool>")) for cnt = 0; cnt < len(sorted) && cnt < txs2s_count; cnt++ { v := sorted[cnt] tx_xml(w, v, false) } w.Write([]byte("</txpool>")) }