We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hello, thx for you job.
i have this problem.
i receiving response error - unexpected PDU ID: Deliver SM
there is source
func (t *Transmitter) submitMsg(sm *ShortMessage, p pdu.Body, dataCoding uint8) (*ShortMessage, error) { f := p.Fields() f.Set(pdufield.SourceAddr, sm.Src) f.Set(pdufield.DestinationAddr, sm.Dst) f.Set(pdufield.ShortMessage, sm.Text) f.Set(pdufield.RegisteredDelivery, uint8(sm.Register)) // Check if the message has validity set. if sm.Validity != time.Duration(0) { f.Set(pdufield.ValidityPeriod, convertValidity(sm.Validity)) } f.Set(pdufield.ServiceType, sm.ServiceType) f.Set(pdufield.SourceAddrTON, sm.SourceAddrTON) f.Set(pdufield.SourceAddrNPI, sm.SourceAddrNPI) f.Set(pdufield.DestAddrTON, sm.DestAddrTON) f.Set(pdufield.DestAddrNPI, sm.DestAddrNPI) f.Set(pdufield.ESMClass, sm.ESMClass) f.Set(pdufield.ProtocolID, sm.ProtocolID) f.Set(pdufield.PriorityFlag, sm.PriorityFlag) f.Set(pdufield.ScheduleDeliveryTime, sm.ScheduleDeliveryTime) f.Set(pdufield.ReplaceIfPresentFlag, sm.ReplaceIfPresentFlag) f.Set(pdufield.SMDefaultMsgID, sm.SMDefaultMsgID) f.Set(pdufield.DataCoding, dataCoding) resp, err := t.do(p) if err != nil { return nil, err } sm.resp.Lock() sm.resp.p = resp.PDU sm.resp.Unlock() if resp.PDU == nil { return nil, fmt.Errorf("unexpected empty PDU") } if id := resp.PDU.Header().ID; id != pdu.SubmitSMRespID { return sm, fmt.Errorf("unexpected PDU ID: %s", id) } if s := resp.PDU.Header().Status; s != 0 { return sm, s } return sm, resp.Err }
may be problem, that outgoing sequence id has same sequence id that and incoming Deliver SM
func (t *Transmitter) do(p pdu.Body) (*tx, error) { t.cl.Lock() notbound := t.cl.client == nil t.cl.Unlock() if notbound { return nil, ErrNotBound } if t.cl.WindowSize > 0 { inflight := uint(atomic.AddInt32(&t.tx.count, 1)) defer func(t *Transmitter) { atomic.AddInt32(&t.tx.count, -1) }(t) if inflight > t.cl.WindowSize { return nil, ErrMaxWindowSize } } rc := make(chan *tx, 1) seq := p.Header().Seq t.tx.Lock() t.tx.inflight[seq] = rc t.tx.Unlock() defer func() { t.tx.Lock() delete(t.tx.inflight, seq) t.tx.Unlock() }() err := t.cl.Write(p) if err != nil { return nil, err } select { case resp := <-rc: if resp.Err != nil { return nil, resp.Err } return resp, nil case <-t.cl.respTimeout(): return nil, ErrTimeout } }
may be here deleting happen later
defer func() { t.tx.Lock() delete(t.tx.inflight, seq) t.tx.Unlock() }()
sorry for my bad english, can you help ? thank you
The text was updated successfully, but these errors were encountered:
Haven't looked at this in a while. Don't remember having a race condition like this.
Sorry, something went wrong.
No branches or pull requests
Hello, thx for you job.
i have this problem.
i receiving response error - unexpected PDU ID: Deliver SM
there is source
may be problem, that outgoing sequence id has same sequence id that and incoming Deliver SM
may be here deleting happen later
sorry for my bad english, can you help ?
thank you
The text was updated successfully, but these errors were encountered: