Simple-SMS-Messenger icon indicating copy to clipboard operation
Simple-SMS-Messenger copied to clipboard

MMS with Multiple pictures fails to send (large PDU) silently.

Open dngray opened this issue 2 years ago • 3 comments

Hi,

I noticed sending these two images worked, with the com.android.messaging but not com.simplemobiletools.smsmessenger. v5.10.2

c99nu03eeno71 e_ldttvkaelsi6.

Here's the logcat from com.simplemobiletools.smsmessenger

MmsServiceBroker: sendMessage() by com.simplemobiletools.smsmessenger
MmsService: sendMessage messageId: 0
MmsService: Current running=0, current subId=-1, pending=0
MmsService: Add request to running queue for subId 1
MmsService: [SendRequest@740908 messageId: 0] Executing...
MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=true, maxMessageTextSize=-1, supportMmsContentDisposition=true, enabledTransID=false, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=2147483647, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=480, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=40, httpParams=, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=307200, naiSuffix=, enableMMSReadReports=false, maxImageWidth=640, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=false, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=true}]
MmsService: PDU read is too large
MmsService: [SendRequest@740908 messageId: 0] Failed to prepare for request
MmsService: [SendRequest@740908 messageId: 0] processResult: 5, httpStatusCode: success (0)
MmsService: [SendRequest@740908 messageId: 0] MMS failed with error: 5 httpStatus:0
MmsService: Schedule requests pending on SIM

Meanwhile with com.android.messaging everything seems fine:

MmsServiceBroker: sendMessage() by com.android.messaging
MmsService: sendMessage messageId: 0
MmsService: Current running=0, current subId=-1, pending=0
MmsService: Add request to running queue for subId 1
MessagingAppDataModel: SendMessageAction: Sending MMS message 23 asynchronously; waiting for callback to finish processing
MmsService: [SendRequest@a6aa00a messageId: 0] Executing...
MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=true, maxMessageTextSize=-1, supportMmsContentDisposition=true, enabledTransID=false, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=2147483647, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=480, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=40, httpParams=, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=307200, naiSuffix=, enableMMSReadReports=false, maxImageWidth=640, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=false, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=true}]
MmsService: [SendRequest@a6aa00a messageId: 0] MmsNetworkManager: start new network request
MmsService: [SendRequest@a6aa00a messageId: 0] APN name is MMS
MmsService: [SendRequest@a6aa00a messageId: 0] Loading APN using name MMS
MmsService: [SendRequest@a6aa00a messageId: 0] Using APN [type=mms mmsc=http://mmsc.{{ censored }}:8002/ mmsproxy={{ censored }} mmsport=8070 name={{ censored }} MMS apn=MMS bearer_bitmask=0 protocol=IP roaming_protocol=IP authtype=-1]
MmsService: [SendRequest@a6aa00a messageId: 0] HTTP: POST http://mmsc.{{ censored }}[30], proxy={{ censored }}:8070, PDU size=139420
MmsService: [SendRequest@a6aa00a messageId: 0] HTTP: User-Agent=g020c
MmsService: [SendRequest@a6aa00a messageId: 0] HTTP: UaProfUrl=http://www.gstatic.com/android/sms/G020C.xml, UaProfUrlTagName=x-wap-profile
MmsService: [SendRequest@a6aa00a messageId: 0] HTTP: 200 OK
MmsService: [SendRequest@a6aa00a messageId: 0] HTTP: response size=67
MmsService: [SendRequest@a6aa00a messageId: 0] MmsNetworkManager: release, count=0
MmsService: [SendRequest@a6aa00a messageId: 0] processResult: -1, httpStatusCode: success (0)
MmsService: Schedule requests pending on SIM
ConnectivityService: NetReassign [no changes]
MessagingAppDataModel: ProcessSentMessageAction: Done sending MMS message 23 in conversation 6; status is SUCCEEDED
MessagingAppDataModel: ProcessPendingMessagesAction: Scheduling pending messages

I believe that if this is intentional (to provide compatibility with some carriers etc) then the messenger should tell the user the message was not sent.

dngray avatar Oct 15 '21 07:10 dngray

Should be worth noting qksms also handles this properly.

MmsServiceBroker: sendMessage() by com.moez.QKSMS
MmsService: sendMessage messageId: 0
MmsService: Current running=0, current subId=-1, pending=0
MmsService: Add request to running queue for subId 1
MmsService: [SendRequest@42cfd51 messageId: 0] Executing...
MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=true, maxMessageTextSize=-1, supportMmsContentDisposition=true, enabledTransID=false, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=2147483647, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=480, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=40, httpParams=, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=307200, naiSuffix=, enableMMSReadReports=false, maxImageWidth=640, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=false, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=true}]
MmsService: [SendRequest@42cfd51 messageId: 0] MmsNetworkManager: start new network request
MmsService: [SendRequest@42cfd51 messageId: 0] APN name is MMS
MmsService: [SendRequest@42cfd51 messageId: 0] Loading APN using name MMS
MmsService: [SendRequest@42cfd51 messageId: 0] Using APN [type=mms mmsc=http://mmsc.{{ censored }}:8002/ mmsproxy={{ censored }} mmsport=8070 name={{ censored }} MMS apn=MMS bearer_bitmask=0 protocol=IP roaming_protocol=IP authtype=-1]
MmsService: [SendRequest@42cfd51 messageId: 0] HTTP: POST http://mmsc.{{ censored }}[30], proxy={{ censored }}:8070, PDU size=234386
MmsService: [SendRequest@42cfd51 messageId: 0] HTTP: User-Agent=g020c
MmsService: [SendRequest@42cfd51 messageId: 0] HTTP: UaProfUrl=http://www.gstatic.com/android/sms/G020C.xml, UaProfUrlTagName=x-wap-profile
MmsService: [SendRequest@42cfd51 messageId: 0] HTTP: 200 OK
MmsService: [SendRequest@42cfd51 messageId: 0] HTTP: response size=67
MmsService: [SendRequest@42cfd51 messageId: 0] MmsNetworkManager: release, count=0
MmsService: [SendRequest@42cfd51 messageId: 0] processResult: -1, httpStatusCode: success (0)
MmsService: Schedule requests pending on SIM
MmsSentReceiver: MMS sending result: -1
MmsSentReceiver: content://mms/outbox/18
MmsSentReceiver: MMS has finished sending, marking it as so in the database
MmsSentReceiver: /data/user/0/com.moez.QKSMS/cache/send.706806587588393135.dat

dngray avatar Oct 15 '21 07:10 dngray

So upon sending a smaller MMS with com.simplemobiletools.smsmessenger (with just this image) I noticed a couple of things:

MmsServiceBroker: sendMessage() by com.simplemobiletools.smsmessenger
MmsService: sendMessage messageId: 0
MmsService: Current running=0, current subId=-1, pending=0
MmsService: Add request to running queue for subId 1
MmsService: [SendRequest@f7e4cfe messageId: 0] Executing...
MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=true, maxMessageTextSize=-1, supportMmsContentDisposition=true, enabledTransID=false, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=2147483647, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=480, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=40, httpParams=, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=307200, naiSuffix=, enableMMSReadReports=false, maxImageWidth=640, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=false, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=true}]
MmsService: [SendRequest@f7e4cfe messageId: 0] MmsNetworkManager: start new network request

This section here:

TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: subIdString = 1 subId = 1
MmsService: NetworkCallbackListener.onAvailable: network=113
MmsService: [SendRequest@f7e4cfe messageId: 0] APN name is MMS
MmsService: [SendRequest@f7e4cfe messageId: 0] Loading APN using name MMS
TelephonyProvider: Using old permission behavior for telephony provider compat
TelephonyProvider: match current APN size:  2
TelephonyProvider: match MNO APN: 1
TelephonyProvider: match carrier id APN: 1
MmsService: [SendRequest@f7e4cfe messageId: 0] Using APN [type=mms mmsc=http://mmsc.{{ censored }}:8002/ mmsproxy={{ censored }} mmsport=8070 name={{ censored }} MMS apn=MMS bearer_bitmask=0 protocol=IP roaming_protocol=IP authtype=-1]
MmsService: [SendRequest@f7e4cfe messageId: 0] HTTP: POST http://mmsc.{{ censored }}[30], proxy={{ censored }}:8070, PDU size=99812
MmsService: [SendRequest@f7e4cfe messageId: 0] HTTP: User-Agent=g020c
MmsService: [SendRequest@f7e4cfe messageId: 0] HTTP: UaProfUrl=http://www.gstatic.com/android/sms/G020C.xml, UaProfUrlTagName=x-wap-profile
MmsService: [SendRequest@f7e4cfe messageId: 0] HTTP: 200 OK
MmsService: [SendRequest@f7e4cfe messageId: 0] HTTP: response size=67
MmsService: [SendRequest@f7e4cfe messageId: 0] MmsNetworkManager: release, count=0
ConnectivityService: releasing NetworkRequest [ REQUEST id=137, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> Uid: 1001 AdministratorUids: [] RequestorUid: 1001 RequestorPackageName: com.android.phone] ] (release request)
ConnectivityService: no live requests for [113 CELLULAR]; disconnecting
DcNetworkAgent: NetworkAgent: NetworkAgent channel lost
ConnectivityService: [113 CELLULAR] disconnected, was satisfying 6
MmsService: [SendRequest@f7e4cfe messageId: 0] processResult: -1, httpStatusCode: success (0)
MmsService: Schedule requests pending on SIM

Also no mention of anything from MmsSentReceiver like qksms had, in particular MMS has finished sending, marking it as so in the database. Looks to be that's because qksms uses android-smsmms which that comes from MmsSentReceiver.java#L40 .

The ROM that I am using is GrapheneOS RQ3A.211001.001.2021100606 on a Pixel 3a XL which is currently based on Android 11.

dngray avatar Oct 15 '21 07:10 dngray

I just experienced this issue as well...

maverick74 avatar Feb 04 '23 11:02 maverick74