func send1_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() if ptx, ok := network.TransactionsToSend[txid.BIdx()]; ok { network.TxMutex.Unlock() usif.SendInvToRandomPeer(1, txid) ptx.Invsentcnt++ fmt.Println("INV for TxID", txid.String(), "sent to a random node") fmt.Println("If it does not appear in the chain, you may want to redo it.") } else { network.TxMutex.Unlock() fmt.Println("No such transaction ID in the memory pool.") list_txs("") } }
func xml_txs2s(w http.ResponseWriter, r *http.Request) { if !ipchecker(r) { return } if checksid(r) { if len(r.Form["del"]) > 0 { tid := btc.NewUint256FromString(r.Form["del"][0]) if tid != nil { network.TxMutex.Lock() delete(network.TransactionsToSend, tid.BIdx()) 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() } } } } w.Header()["Content-Type"] = []string{"text/xml"} if len(r.Form["id"]) > 0 { output_tx_xml(w, r.Form["id"][0]) return } w.Write([]byte("<txpool>")) network.TxMutex.Lock() for _, v := range network.TransactionsToSend { if len(r.Form["ownonly"]) > 0 && v.Own == 0 { continue } w.Write([]byte("<tx>")) fmt.Fprint(w, "<id>", v.Tx.Hash.String(), "</id>") fmt.Fprint(w, "<time>", v.Firstseen.Unix(), "</time>") fmt.Fprint(w, "<len>", len(v.Data), "</len>") fmt.Fprint(w, "<own>", v.Own, "</own>") fmt.Fprint(w, "<firstseen>", v.Firstseen.Unix(), "</firstseen>") fmt.Fprint(w, "<invsentcnt>", v.Invsentcnt, "</invsentcnt>") fmt.Fprint(w, "<sentcnt>", v.SentCnt, "</sentcnt>") fmt.Fprint(w, "<sentlast>", v.Lastsent.Unix(), "</sentlast>") fmt.Fprint(w, "<volume>", v.Volume, "</volume>") fmt.Fprint(w, "<fee>", v.Fee, "</fee>") fmt.Fprint(w, "<blocked>", v.Blocked, "</blocked>") w.Write([]byte("</tx>")) } network.TxMutex.Unlock() w.Write([]byte("</txpool>")) }