From 4a27e7702b9b975b066ec9d2ee7ac932d86552e3 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 4 Sep 2025 22:38:07 -0500 Subject: [PATCH] better Send() function --- patchset.Send.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/patchset.Send.go b/patchset.Send.go index 934b5c0..31e10ef 100644 --- a/patchset.Send.go +++ b/patchset.Send.go @@ -81,3 +81,39 @@ func (f *Forge) submitPatchset(pset *Patchset) error { log.Info("Total patches sent ok:", newpb.Len()) return nil } + +func (f *Forge) SubmitPatchesNew(pset *Patches, urlpath string) (*Patches, error) { + var url string + url = f.forgeURL + "oldpatchset" + msg, err := pset.Marshal() + if err != nil { + log.Info("proto.Marshal() failed:", err) + return nil, err + } + log.Info("proto.Marshal() msg len", len(msg)) + body, err := f.HttpPost(url, msg) + if err != nil { + log.Info("httpPost() failed:", err) + return nil, err + } + + newpb := NewPatches() + if err := newpb.Unmarshal(body); err != nil { + cfcheck := string(body[0:100]) + if strings.Contains(cfcheck, "Just a moment...") { + return nil, log.Errorf("Cloudflare throttled this attempt to submit. TODO: fix this") + } else { + log.Infof("forged DID NOT SEND BACK PROTOBUF len(body)=%d %s (TODO: look for failure on cloudflare 'is human' check here)\n", len(body), body[0:100]) + // log.Infof("TODO: try to identify data here len(body)=%d body[0:40]=%s\n", len(body), body[0:40]) + // log.Info("BODY START:", body[0:10], string(body[0:10])) + // log.Info(string(body)) + // if err := newpb.UnmarshalTEXT(body[2:]); err == nil { + // log.Info("wow, that did work. newpb.Len() =", newpb.Len()) + // } + } + return nil, err + } + + log.Info("Total patches sent ok:", newpb.Len()) + return newpb, nil +}